计算训练中迭代的时期数?

Posted

技术标签:

【中文标题】计算训练中迭代的时期数?【英文标题】:Compute the number of epoch from iteration in training? 【发布时间】:2019-06-20 11:49:31 【问题描述】:

我有一个 Caffe prototxt 如下:

stepsize: 20000
iter_size: 4
batch_size: 10
gamma =0.1

其中,数据集有 40.000 张图像。这意味着在 20000 次迭代后,学习率将降低 10 倍。在 pytorch 中,我想计算 epoch 的数量以在 caffe 中具有相同的行为(用于学习率)。我应该使用多少个 epoch 来将学习率降低 10 倍(请注意,我们有 iter_size=4 和 batch_size=10)。谢谢

参考:Epoch vs Iteration when training neural networks

我的回答:示例:如果您有 40000 个训练示例,并且批量大小为 10,那么完成 1 个 epoch 需要 40000/10 =4000 次迭代。因此,在 caffe 中降低学习率的 20000 个迭代将与 pytorch 中的 5 个 epoch 相同。

【问题讨论】:

【参考方案1】:

您没有考虑到iter_size: 4:当批处理太大而无法放入内存时,您可以将其“拆分”为多个迭代。 在您的示例中,实际批量大小为 batch_sizexiter_size=10 * 4 = 40。因此,一个 epoch 只需要 1,000 次迭代,因此您需要在 20 个 epoch 后降低学习率。

【讨论】:

以上是关于计算训练中迭代的时期数?的主要内容,如果未能解决你的问题,请参考以下文章

设置批量大小*和*神经网络的训练迭代次数?

在不同时期训练不同的输出

自定义训练循环中记录tf.variable

如何将 Tensorflow 数据集 API 与训练和验证集一起使用

Deeplearning4j 中的时期和迭代

实时数仓入门训练营:实时计算 Flink 版 SQL 实践