2017-12-05 21 views
-1

KerasなどのフロントエンドAPIを使用せずに、Tensorflowを使用してCNNモデルを構築しています。私はVGG-16モデルを作成し、事前にトレーニングされたウェイトを使用しています。最後のレイヤーを自分の目的に合わせて微調整したいと思います。TensorFlowを使用した畳み込みニューラルネットワーク

ここでのチュートリアルの後にhttp://cv-tricks.com/tensorflow-tutorial/training-convolutional-neural-network-for-image-classification/ 私はトレーニングスクリプトを再作成し、自分の要件に従って修正しました。しかし、私の訓練は起こらず、訓練の正確さは50.00%で止まっており、妥当性確認の正確さは数字を繰り返すパターンを形成しています。 同じもののスクリーンショットが添付されています。 terminal output of the training script

私は数日間この状態で立ち往生しており、エラーを見つけることができませんでした。どんな助けもありがとうございます。

コードはかなり長いですので、ここではgist file同じ

答えて

0

ためにあなたのクロスエントロピーが間違っていると、あなたはあなたのlogitsのソフトマックスを使用してlogitsを比較しています。

この:

cross_entropy = tf.nn.softmax_cross_entropy_with_logits(logits=layer_fc2, 
                labels=y_pred) 

は次のようになります。

cross_entropy = tf.nn.softmax_cross_entropy_with_logits(logits=layer_fc2, 
                labels=y_true) 

注意すべきいくつかの事。私はいくつかのデータ点について訓練をしないで、同じデータ点について評価しません。あなたのトレーニングの精度はおそらくそうすることによって偏っていくでしょう。もう一つの注意点は、tf.argmax(tf.softmax(logits))tf.argmax(logits)と同じです。

+0

ありがとうございます。私は 'cross_entropy'で提案した変更を行いました。それでもトレーニングの精度は50.00%に止まっており、検証ACCはそれ自体を繰り返すパターンを形成しています。私のコードのいくつかの間違い? –

+0

ご覧ください。 @ thomas-pinetz –

+0

私がこのような場合に行うことは、自分のモデルの入力と出力を見ることです。これらのテストの出力が訓練された精度と一致する場合、私はグラジエントを調べます。彼らは0か何か気になるものですか?私は損失関数を見ていきます。このコードを実行することができなくても、このコードでエラーを見つけるのは難しいです。 –

関連する問題