gpt4 book ai didi

tensorflow - 批量训练使用更新总和?或平均更新?

转载 作者:行者123 更新时间:2023-12-03 13:20:07 25 4
gpt4 key购买 nike

我对神经网络的批量训练有几个问题。

首先,当我们使用批量训练更新权重时,变化量是批量大小的累积梯度。在这种情况下,变化量是梯度的总和?还是梯度的平均值?

如果答案是梯度的总和,变化量会比在线训练大很多,因为量是累加的。在这种情况下,我认为权重不能很好地优化。

否则,如果答案是梯度的平均值,那么优化权重似乎是非常合理的。然而,在这种情况下,我们必须比在线训练更多的训练次数,因为它对于数据的批量大小只更新一次权重。

其次,无论第一个问题的答案是什么,当我将 Tensorflow 的 CNN 示例代码用于 MNIST 时,它可以如此快速地优化权重,因此即使在第二步中训练准确率也达到 90% 以上。

================================================== ======================
train_step = tf.train.GradientDescentOptimizer(0.001).minimize(cross_entropy)
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))
for i in range(1000):
batch = mnist.train.next_batch(100)
if i%100 == 0:
train_accuracy = sess.run(accuracy, feed_dict={x:batch[0], y_:batch[1], keep_prob: 1.0})
sess.run(train_step, feed_dict={x: batch[0], y_:batch[1], keep_prob:1.0})

================================================== ======================

请解释一下 Tensorflow 是如何如此快速地优化权重的。

最佳答案

这个问题的答案取决于你的损失函数。

loss_element是批次中一个元素的损失函数,那么,批次的损失将是您所有个人损失的某个函数。

例如,如果您选择使用 tf.reduce_mean ,那么您的损失是批次中所有元素的平均值。梯度也是如此。如果您使用 tf.reduce_sum ,那么您的渐变将是所有渐变元素的总和。

关于tensorflow - 批量训练使用更新总和?或平均更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45160691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com