XOR-GateをモデリングしているTensorFlowで簡単なMLPを作成しました。
だから:
input_data = [[0., 0.], [0., 1.], [1., 0.], [1., 1.]]
次のものが生成されます。
output_data = [[0.], [1.], [1.], [0.]]
このネットワークには、入力層、隠れ層、出力層があり、それぞれ2、5、1個のニューロンがあります。
現在、私は次のクロスエントロピーを持っています:
cross_entropy = -(n_output * tf.log(output) + (1 - n_output) * tf.log(1 - output))
私はこの簡単な代替手段も試しました:
cross_entropy = tf.square(n_output - output)
他のいくつかの試みと一緒に。
ただし、私の設定が何であっても、のエラーはのエラーよりもはるかに遅くGradientDescentOptimizer
減少していましたAdamOptimizer
。
実際tf.train.AdamOptimizer(0.01)
、どのクロスエントロピー計算または学習率が使用されたとして0.01
も、tf.train.GradientDescentOptimizer
常に2000を超える学習ステップが必要でしたが、(最高の結果が得られた学習率に応じて)400から800の学習ステップ後に本当に良い結果が得られました。
これはなぜですか?そうですAdamOptimizer
、常により良い選択です!