2017-07-19 41 views
1

私はニューラルネットワークを訓練し、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があることを知っていますが、質問に完全には答えられませんでした。

+0

実行回数はいくつでしたか?あなたはそれを2回だけ走らせましたか?もしそうなら、おそらくそれはちょうど悪い走りですか?いくつの入力機能があり、ネットワークの大きさはどれくらいですか?あなたのネットワークの最後の操作としてシグモイドおよび/または別のアクティベーション機能を適用していますか?テンソルフローが自動的にsoftmaxを適用するため、削除してください。これらのいくつかを確認し、更新をお願いします! – Adam

+0

私はまったく同じ問題を抱えています、あなたはそれを理解しましたか?私の損失は高いものから非常に低いものへと変化しますが、10クラスの分類では精度は約10%のままです。 –

+0

私の場合、問題は体重の初期化に関連していました。私が 'tf.contrib.layers.fully_connected'を' xavier'ウェイトの初期設定で使い始めたとき、問題はなくなりました。 –

答えて

0

マシンの学習に問題がないと、問題の正確な原因を特定できません。 少なくとも、このような低精度と正確さと損失の間に大きな差が、私はそれはバグではないと信じて、問題のタイプ(バイナリ、マルチクラスおよび/またはマルチラベル)

を提供してくださいしかし、機械学習の問題。

ラベルデータの読み込みに関連するバグの可能性がありますy。 3%の精度は、ほとんどの機械学習問題(画像分類を除く)では低すぎます。 33個のラベルをランダムに推測している場合、3%の精度が得られます。 あなたの問題は本当に33のマルチクラスの分類の問題ですか?そうでない場合は、データbatch_y(間違った寸法、形状不一致prediction、...)を作成するときに何か問題が起きた可能性があります。

+0

実際にはい、私の問題は49多クラスの分類の問題です。私はyのラベルのデータを確認しましたが、うまくできています。 – kcilc

+0

しかし、私はまだバグだと思っています。 44マルチクラスの分類で間違ってalllのラベルを推測すると、164.37の損失を与えた。あなたの "〜170kの損失"に何か問題があります – koreyou

関連する問題