私はニューラルネットワークを訓練し、Tensorflowを使用しています。 私の費用関数は次のとおりです。ニューラルネットワーク - Softmaxのクロスエントロピー損失の減少が精度の低下に対応
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=prediction, labels=y))
は私のニューラルネットワークは、クロスエントロピー損失は、約50〜170Kへの劇的な改善を低下させる原因となったトレーニング。一方、私の正確さは実際にはわずかに悪化しています.3%から2.9%になります。これらのテストはトレーニングセットで行われ、オーバーフィットは問題にはなりません。
correct = tf.equal(tf.argmax(prediction, 1), tf.argmax(y, 1))
accuracy = tf.reduce_mean(tf.cast(correct, 'float'))
print('Accuracy:', accuracy.eval({x: batch_x, y: batch_y}))
何おそらくこの原因が考えられます。次のように
は、私は単純に、精度を計算しますか? 私のケースでクロスエントロピー(softmax)に何かが明らかに間違っているので、コスト関数として精度を使うべきですか?
私はStackOverflowでこれにsimilar questionがあることを知っていますが、質問に完全には答えられませんでした。
実行回数はいくつでしたか?あなたはそれを2回だけ走らせましたか?もしそうなら、おそらくそれはちょうど悪い走りですか?いくつの入力機能があり、ネットワークの大きさはどれくらいですか?あなたのネットワークの最後の操作としてシグモイドおよび/または別のアクティベーション機能を適用していますか?テンソルフローが自動的にsoftmaxを適用するため、削除してください。これらのいくつかを確認し、更新をお願いします! – Adam
私はまったく同じ問題を抱えています、あなたはそれを理解しましたか?私の損失は高いものから非常に低いものへと変化しますが、10クラスの分類では精度は約10%のままです。 –
私の場合、問題は体重の初期化に関連していました。私が 'tf.contrib.layers.fully_connected'を' xavier'ウェイトの初期設定で使い始めたとき、問題はなくなりました。 –