GradientDescentOptimizer和AdamOptimizer(TensorFlow)之间的区别?
我已经在TensorFlow中编写了一个简单的MLP,它正在对XOR-Gate进行建模。 因此对于: 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),经过400-800个学习步骤(取决于学习率,在哪里0.01获得最好的结果)后产生了非常好的结果,而tf.train.GradientDescentOptimizer无论使用哪种交叉熵计算或学习率,始终需要超过2000个学习步骤。 为什么会这样呢?看来AdamOptimizer永远是更好的选择?!