관리 메뉴

솜씨좋은장씨

[TF2.0] MNIST - ValueError: Shapes (32, 10) and (32, 1) are incompatible 해결 방법 본문

머신러닝 | 딥러닝/TensorFlow | Keras

[TF2.0] MNIST - ValueError: Shapes (32, 10) and (32, 1) are incompatible 해결 방법

솜씨좋은장씨 2020. 6. 28. 13:24
728x90
반응형

MNIST 데이터를 활용하여 손글씨 분류를 해보기 위해서 Tensorflow 2.0을 활용하여 모델을 만들고 model.fit을 실행하였는데

ValueError: Shapes (32, 10) and (32, 1) are incompatible

위와 같은 에러가 발생하였습니다.

 

처음에는 데이터 전처리를 잘못한 것으로 생각하다가 아무리 봐도 데이터 전처리에 있어서는 문제가 없어 보여서 찾아보니

 

sparse_categorical_crossentropy를 loss사용하여 model을 compile할 때 metrics 에서 충돌이 일어나 발생하는 문제였습니다.

 

해결 방법은 아래와 같습니다.

 

에러가 발생하던 compile 방법

model.compile(optimizer=tf.keras.optimizers.Adam(), 
              loss='sparse_categorical_crossentropy', 
              metrics=[tf.keras.metrics.Accuracy()])

 

여기서 metrics 부분을 tf.keras.metrics.Accuracy() 에서 tf.keras.metrics.SparseCategoricalAccuracy()로 변경하면 됩니다.

 

변경한 compile 방법

model.compile(optimizer=tf.keras.optimizers.Adam(), 
              loss='sparse_categorical_crossentropy', 
              metrics=[tf.keras.metrics.SparseCategoricalAccuracy()])

이렇게 변경하고 다시 model.fit을 실행해보면 이번에는 이상 없이 실행되는 것을 확인할 수 있었습니다.

 

읽어주셔서 감사합니다~

Comments