更改批量大小后的初始 Epoch

问题描述 投票:0回答:1

这里是新手, 我一直在没有 GPU 的土豆电脑上训练一个简单的狗与猫模型,所以有时我必须暂停并恢复它。昨天,我意识到如果减小批量大小,我会获得更好的性能,因此我将其从 128 更改为 64,然后将纪元计数从 25 增加一倍到 50(这是正确的做法吗?)。我使用带有 save_at_{epoch}.keras 的回调来保存进度,然后通过加载保存的模型并更改初始纪元以匹配它来恢复进度。现在假设我在 epoch 8/25 离开,所以我有 save_at_8.keras 文件。既然我已将批量大小更改为 64,我应该将初始纪元设置为 16 还是 8?

python tensorflow keras epoch
1个回答
0
投票

一个纪元是对数据集的单次遍历。步骤是数据集中的一批数据。所以典型的训练循环看起来像

for epoch in epochs:
   for step in len(dataset) // batch_size:
       update_weights(dataset[step])
   save_checkpoint(epoch)

因此,更改

batch_size
将修改每个 epoch 执行的步骤数,但不会更改 epoch 的数量。这要么是固定的,要么有上限。

所以你可以从一个检查点恢复训练,是否要调整 epoch 数量取决于你,这真的没有那么重要。

唯一需要注意的是,一些训练器有“热身”或“学习率调度程序”,理论上它们是基于执行的步数,因此在 epoch > 0 处重新启动而不调整其参数可能会导致问题。

© www.soinside.com 2019 - 2024. All rights reserved.