2017-07-19 48 views
0

最近、私はthis postの結果を複製しようとしていますが、Kerasの代わりにTensorFlowを使用しています。しかし、私のモデルの損失はin the code providedとして収束していません。私は、明示的に示されていないものであっても、著者が使用したのと同じパラメータを使用するよう注意しました。私の完全なコードはhereです。Tensorflow - 損失が減少しない

私は既にさまざまな学習率、オプティマイザ、バッチサイズを試していますが、結果にはあまり影響しませんでした。

StackOverflowとStackExchangeにこの問題に関する他の質問がありましたが、ほとんどの回答はまったくありませんでした。しかし、答えのある質問は役に立ちませんでした。

私が最も奇妙なことは、我々は、同じデータベースと同じモデルが、ちょうど別のフレームワークを持っているということである10

TensorFlow 1.1.0、Pythonの3.6とWindowsを使用しています。したがって、それはまったく異なる振る舞いをするはずではありませんでした。誰にもこの問題を解決するために何を試してくれるべきかについての提案はありますか?

+0

短いコメント:テスト中にドロップアウトを無効にするには、 "is_training'"を使用する必要があります。さらに、ネットワークが常にゼロを出力するように見えるので、グラデーションは無意味です。ドロップアウトを無効にしようとしましたか? –

+0

なぜあなたの損失が二乗誤差平均であり、「ログ」と呼ばれるものに対してtanhがアクティブ化されているのですか? –

+0

あなたは正しいです、@ JonasAdler、私はドロップアウトを使用していませんでした。なぜなら、 "is_training"のデフォルト値はFalseなので、出力は変わりませんでした。私は今それを真実にしようとしましたが、問題はまだ起こります。 –

答えて

4

あなたのコードは基本的に修正されていませんでしたが、私はあなたのtf_labelsとロジットの形を見ましたが、それらは同じではありません。ロジットの形状は(batch_size、1,1,1)(1x1畳み込みフィルタを使用していたため)、tf_labelsの形状は(batch_size、1)でした。あなたの損失ラインを

loss = tf.reduce_mean(tf.squared_difference(tf.squeeze(tf_labels), 
      tf.squeeze(logits))) 

に変更し、それぞれのエポックが減少しました。

+0

ありがとう、@ライアン。出来た!私は他の既知の方法を使って損失を最小限にしようとしている最後の2週間を失ったが、エラーはまったく別のものに関連していた。何が起こったのか、なぜ起こったのかを教えてくれてありがとう私は十分な評判ポイントを持ってすぐにあなたの答えを投票します。 –

関連する問題