TensorFlow在实验中增加批量大小

时间:2017-11-04 20:54:19

标签: tensorflow google-cloud-ml

我希望复制此paper中的一些行为“不会降低学习率,增加批量大小”,我想知道是否有一种简单的方法来增加批量大小GCMLE实验。我有一个自定义估算器,我试图想出任何方法来调整实验中的批量大小。我意识到我可以使用一个批量大小运行一定数量的纪元,然后加载这个保存的图表并启动后续实验,但我想知道是否还有其他选项可以在同一个实验中更新批量大小? / p>

2 个答案:

答案 0 :(得分:2)

设置图表以支持可变批量大小非常简单,只需使用第一维形状的None即可。看看这篇文章:

Build a graph that works with variable batch size using Tensorflow

然后,您可以在每个sess.run(train_op, feed_dict=[X:data, Y:labels])处以任意大小的批量投放,其中您的批次X的第一个维度是可变长度。

它几乎可以按照您的预期运作。

具有可变批量大小的示例图表结构:

X = tf.placeholder("float", [None, num_input])
Y = tf.placeholder("float", [None, num_classes])

一般情况下,您的张量可以包含1个未知维度。 Tensorflow将根据您在运行时传递的实际数据推断该维度。

在此示例中,在您的第一次迭代中,您的数据形状可能是[10, 784](批次为10),在以后的迭代中,您的形状可能会变为[50, 784](批次为50)。其余的图表设置无需更改即可使用。

答案 1 :(得分:0)

一种方法是将constructor中的delay_workers_by_global_step=True设置为Experiment

这可行的原因是因为有效批量大小为batch_size * num_workers。因此,如果您延迟其他工人的工作,您的批量将逐渐增加。

当然,在早期阶段,您的吞吐量会相应降低。

如果您想直接控制batch_size,则必须在自己的代码中有效地复制learn_runner.run的行为。这不会太糟糕,除了在experiment.py内心深处,它启动了一个无法禁用AFAICT的服务器。