2018년 1월 1일 월요일

ML 초보자를 위한 MNIST(MNIST For ML Beginners)(5)

출처 : https://www.tensorflow.org/get_started/mnist/beginners

이글은 영어 원본을 읽고 공부하면서 불필요한 내용 빼고 이해하기 쉽도록 적절히 내맘대로 작성해보았습니다. 이해가 잘못되어 원저자의 의도대로 번역이 안되어 있을 수도 있습니다. 이점 참고해서 읽어 주시면 고맙겠습니다


앞서 작성한 글
ML 초보자를 위한 MNIST(MNIST For ML Beginners)(1)
ML 초보자를 위한 MNIST(MNIST For ML Beginners)(2)
ML 초보자를 위한 MNIST(MNIST For ML Beginners)(3)
ML 초보자를 위한 MNIST(MNIST For ML Beginners)(4)


우리 모델 평가

우선 우리가 올바른 라벨을 소스 코드 어디에서 예측했는지 알아 보겠습니다. tf.argmax는 축을 따라 텐서에서 가장 높은 엔트리의 인덱스를 제공하는 매우 유용한 함수입니다. 예를 들어, tf.argmax (y, 1)는 우리 모델이 각 입력에 대해 가장 가능성이 있다고 생각하는 레이블(0~9 값)을 리턴하고, tf.argmax (y_, 1)는 실제 레이블(0~9 값)입니다. (y,y_의 의미 때문 y는 예측된 확율 분포이고, y_는 훈련데이터로부터 얻는 실제 분포임) tf.equal을 사용하여 예측값과 실제 레이블일치하는지 아래와 같이 확인할 수 있습니다.

correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))
correct_prediction는 우리에게 boolean 값의 리스트를 줍니다. 어떤 부분이 올바른지 판단하기 위해 부동 소수점 숫자로 캐스팅 한 다음 평균을 취합니다. 예를 들어 [True, False, True, True]는 [1,0,1,1]이되며 0.75가됩니다.

accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
마지막으로 테스트 데이터에 대한 정확도를 계산해 봅시다.

print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))
실제 실행 화면

(E:\Users\abc\Anaconda3) E:\work\ai\anaconda>python mnist_softmax.py
Extracting /tmp/tensorflow/mnist/input_data\train-images-idx3-ubyte.gz
Extracting /tmp/tensorflow/mnist/input_data\train-labels-idx1-ubyte.gz
Extracting /tmp/tensorflow/mnist/input_data\t10k-images-idx3-ubyte.gz
Extracting /tmp/tensorflow/mnist/input_data\t10k-labels-idx1-ubyte.gz
2018-01-01 09:38:20.311850: I C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\36\tensorflow\core\platform\cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2
0.919
이것은 약 92 % 입니다.

이것은 좀 나쁜편입니다. 우리가 아주 간단한 모델을 사용하고 있기 때문입니다. 몇 가지 작은 변화를 통해 97 %를 달성 할 수 있습니다. 최고의 모델은 99.7 % 이상의 정확도를 얻을 수 있습니다! 자세한 내용은 https://rodrigob.github.io/are_we_there_yet/build/classification_datasets_results 이 결과 목록을 참조하십시오.


중요한 것은 우리가 이 모델로 부터 튜토리얼을 배웠다는 것입니다. 그래도 이러한 결과에 대해 조금이라도 느껴지시면 다음 튜토리얼에서 더 잘 살펴보고 TensorFlow를 사용하여보다 정교한 모델을 작성하는 방법을 살펴보세요.


댓글 없음:

댓글 쓰기