Stochastic Gradient Descent是否适用于TensorFlow?

hal*_*o02 3 gradient-descent tensorflow

我设计了一个MLP,完全连接,有2个隐藏和一个输出层.如果我使用批量或小批量梯度下降,我会得到一个很好的学习曲线.

但是在执行随机梯度下降(紫罗兰色)的过程中直线 在此输入图像描述

我弄错了什么?

根据我的理解,我使用Tensorflow进行随机梯度下降,如果我只提供一列火车/学习每个火车步骤的例子,例如:

X = tf.placeholder("float", [None, amountInput],name="Input")
Y = tf.placeholder("float", [None, amountOutput],name="TeachingInput")
...
m, i = sess.run([merged, train_op], feed_dict={X:[input],Y:[label]})
Run Code Online (Sandbox Code Playgroud)

因此输入是10分量矢量,标签是20分量矢量.

对于测试,我运行1000次迭代,每次迭代包含50个准备好的训练/学习示例中的一个.我期待一个overfittet nn.但正如你所见,它没有学习:(

由于nn将在在线学习环境中执行,因此不能选择小批量或批量梯度下降.

谢谢你的任何提示.

nes*_*uno 5

批量大小影响有效学习率.

如果您考虑单个参数的更新公式,您将看到它为输入批次中的每个元素更新了对此参数计算的各种值的平均值.

这意味着如果您使用大小为n的批量大小,则每个参数的"实际"学习率约为learning_rate/n.

因此,如果您使用大小为n的批次训练的模型已经训练没有问题,这是因为该批量大小的学习率是可以的.

如果使用纯随机梯度下降,则必须降低学习率(通常为10的幂).

因此,例如,如果您的学习率是1e-4批量大小128,请尝试学习率,1e-4 / 128.0看看网络是否学习(应该).