通过使batch_size增加来训练神经网络以避免震惊

时间:2017-08-15 06:12:03

标签: tensorflow neural-network

... build the graph ...
train_step = 
tf.train.GradientDescentOptimizer(learning_rate).minimize(cross_entropy)
sess = tf.InteractiveSession()
tf.global_variables_initializer().run()

for _ in range(1000):
  batch_xs, batch_ys = data.next_batch(batch_size)
  sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})

在典型的张量流神经网络训练中,我们通常使learning_rate衰减,但很少使batch_size增加。我认为使batch_size增加也可以使神经网络收敛并避免令人震惊。这是我对训练神经网络的建议。你觉得它有用吗?

1 个答案:

答案 0 :(得分:1)

如果你的下降很吵:

增加batch_size将稳定波动,因为梯度将在更高数量的样本上取平均值。

learning_rate半分的效果类似于batch_size加倍的效果,但不相同(从矢量角度来看,这是不同的)。从数学的角度来看,learning_rate的半分更好,但是batch_size加倍,可能(!)在计算上更方便。

如果噪音低:

减少learning_rate是唯一可行的选择。如果您的渐变方向没有嘈杂,那么增加batch_size并不会改变这种情况。然而,较小的learning_rate可能是有用的,因为一个重要的步骤可能使渐变方向不具代表性,并且您可以退出"山谷"。