더북(TheBook)

 

6피마 인디언의 당뇨병 예측 실행

 

이제 케라스를 이용해 당뇨병 예측을 실행하면 다음과 같습니다. 먼저 seed 값 설정을 알아봅시다.

 

# seed 값 생성

seed = 0

numpy.random.seed(seed)

tf.set_random_seed(seed)

 

명령받은 대로 실행하게끔 만들어진 컴퓨터는 사실 매우 단순하고 정확한 기계입니다. 입력된 대로만 실행하다 보니 스스로 랜덤한 숫자를 만들어 내는 기능조차 없습니다. 우리가 random() 함수를 써서 임의의 숫자를 만들어 내는 것처럼 보여도 이는 컴퓨터 안에 미리 내장된 수많은 ‘랜덤 테이블’ 중 하나를 불러내 그 표의 순서대로 숫자를 보여 주는 것이지요. seed 값을 설정한다는 것은 그 랜덤 테이블 중에서 몇 번째 테이블을 불러와 쓸지를 정하는 것입니다. 따라서 seed 값이 같으면 똑같은 랜덤 값을 출력합니다. 지금 우리가 보고 있는 코드처럼 넘피 라이브러리를 사용하면서 텐서플로 기반으로 딥러닝을 구현할 때는 일정한 결과값을 얻기 위해 넘파이 seed 값과 텐서플로 seed 값을 모두 설정해야 합니다(단, seed 값을 이렇게 지정해도 여전히 출력 값이 미세하게 다를 수 있습니다. 이는 텐서플로를 구동시키는 cuDNN 등의 내부 소프트웨어가 자체적으로 또 다른 랜덤 테이블을 생성하기 때문인데, 현재 이 부분의 seed 값을 지정할 방법은 없습니다. 따라서 앞서 언급한 것처럼 최종 딥러닝 결과는 여러 번 실행하여 평균을 구하는 것이 가장 적절합니다).

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.