入力が基本的にガウスノイズが適用されたベクトルであるいくつかのシミュレートされたデータに対してオートエンコーダーをトレーニングしようとしています。コードはほぼ正確に、この例の場合と同様である:私は、ネットワークパラメータおよびコスト関数に変更されているhttps://github.com/aymericdamien/TensorFlow-Examples/blob/master/examples/3_NeuralNetworks/autoencoder.pyトレーニングは非常に低いエラーですが、非常に間違っています(ほぼすべての出力)
違いのみ:トレーニング中
n_hidden_1 = 32 # 1st layer num features
n_hidden_2 = 16 # 2nd layer num features
n_input = 149 # LunaH-Map data input (number of counts per orbit)
cost = tf.reduce_mean(-tf.reduce_sum(y_true * tf.log(y_pred), reduction_indices=[1]))
を、エラーが着実0.00015まで減少するが、予測値と真値は非常に異なっています。 as shown in this image。実際、予測されたyベクトルはほぼすべて1である。
間違った予測でエラーを減らすにはどうしたらよいですか?私のネットワークは、クロスエントロピーコストを最小限に抑えるために重みをlog(1)に近づけようとしている可能性はありますか?もしそうなら、私はこれとどのように戦うのですか?
評価にはどのようなデータを使用しますか?トレーニングデータ、または未使用の検証データ? – yuval
あなたが示した予測が見えないデータの場合、オーバーフィットの問題にぶつかっている可能性があります。つまり、アルゴリズムがトレーニングデータセットを単に記憶していますが、見えない新しいデータには一般化できません。 – kaufmanu