1

を使用TensorFlow私は分類のために簡単なCNNを構築しました。それは次のような定義があります。ConvNet:検証の損失が大幅に減少するのではなく、精度が向上しています

Input Tensor : 32,32,1 Grayscale Image 
1 Conv Layer 3x3x32 
Relu Activated 
2x2 Max Pooled 
128 FC1 
43 FC2 # 43 classes 

完全なコードは、Epochs でこのnotebook on github

validation lossaccuracy1000年、があると見つけることができる

epoch 100 validation loss 3.67, validation accuracy 12.05% 
epoch 1000 validation loss 3.234, validation accuracy 57.63% 
epoch 2750 validation loss 3.111, validation accuracy 69.25% 

誤解やどこかのバグがない限り、ネットワーク学んでいる。しかし、検証の損失はごくわずかにしか減少していません。

これはどういう意味ですか?この情報を使ってネットワークを改善するにはどうすればよいですか?

答えて

1

これはTensorFlowの古典的な間違いです。出力にsoftmaxを適用しないで、tf.nn.softmax_cross_entropy_with_logitsを適用しないでください。

操作tf.nn.softmax_cross_entropy_with_logitsは、スケールされていないログ(softmaxなし)が必要です。

WARNING:documentationから、それは効率のために内部logits上のソフトマックスを行っているため、このオペアンプは、スケーリングされていないlogitsを期待しています。 softmaxの出力でこのopを呼び出さないでください。誤った結果が生成されるためです。

+0

面白いことは、私が以前読んだことです!本当にありがとう、今すぐ素晴らしい作品! –

+0

まず、TensorFlowで人々が奇妙な喪失をしたときにチェックすること –

関連する問題