gpt4 book ai didi

python - TensorFlow默认在线或批量训练

转载 作者:太空狗 更新时间:2023-10-30 00:42:46 24 4
gpt4 key购买 nike

我有以下问题:我正在尝试学习 tensorflow ,但我仍然找不到在哪里将训练设置为在线或批量。例如,如果我有以下代码来训练神经网络:

loss_op = tf.reduce_mean(tf.pow(neural_net(X) - Y, 2))
optimizer = tf.train.GradientDescentOptimizer(learning_rate=learning_rate)
train_op = optimizer.minimize(loss_op)


sess.run(train_op, feed_dict={X: batch_x, Y: batch_y})

如果我同时提供所有数据(即 batch_x 拥有所有数据),这是否意味着正在作为批量训练进行训练?或者 tensorflow 优化器以不同的方式从后面优化?如果我做一个 for 循环,一次给出一个数据样本,这是错误的吗?这算作单步(在线)培训吗?感谢您的帮助。

最佳答案

梯度下降主要有 3 种类型。具体来说,

  1. 随机梯度下降
  2. 批量梯度下降
  3. 小批量梯度下降

这是一个很好的教程 ( https://machinelearningmastery.com/gentle-introduction-mini-batch-gradient-descent-configure-batch-size/ ),介绍了上述三种方法的优缺点。

对于你的问题,下面是一个标准的样本训练tensorflow代码,

N_EPOCHS = #Need to define here
BATCH_SIZE = # Need to define hare

with tf.Session() as sess:
train_count = len(train_x)

for i in range(1, N_EPOCHS + 1):
for start, end in zip(range(0, train_count, BATCH_SIZE),
range(BATCH_SIZE, train_count + 1,BATCH_SIZE)):

sess.run(train_op, feed_dict={X: train_x[start:end],
Y: train_y[start:end]})

这里的N_EPOCHS表示整个训练数据集的遍数。您可以根据您的梯度下降方法设置 BATCH_SIZE。

  • 对于随机梯度下降,BATCH_SIZE = 1。
  • 对于批量梯度下降,BATCH_SIZE = 训练数据集大小。

  • 对于Mini Batch Gradient Decent,1 << BATCH_SIZE << 训练数据集大小。

在三种方法中,最受欢迎的方法是Mini Batch Gradient Decent。但是,您需要根据您的要求设置 BATCH_SIZE 参数。 BATCH_SIZE 的一个好的默认值可能是 32。

希望这对您有所帮助。

关于python - TensorFlow默认在线或批量训练,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46840539/

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