如何正确设置调整批量大小后的初始训练轮次(Initial Epoch)

霞舞

霞舞

2026-05-12

309人浏览

原创

如何正确设置调整批量大小后的初始训练轮次(Initial Epoch)

当修改模型训练的批量大小(batch size)后,应保持初始轮次(initial epoch)与之前保存的检查点轮次一致,而非按步数比例换算;因为轮次是数据集遍历次数,与批量大小无关。

当修改模型训练的批量大小(batch size)后,应保持初始轮次(initial epoch)与之前保存的检查点轮次一致,而非按步数比例换算;因为轮次是数据集遍历次数,与之前保存的检查点轮次一致,而非按步数比例换算;因为轮次是数据集遍历次数,与批量大小无关。

在深度学习训练中,“epoch”与“step”有本质区别:

  • 1 个 epoch = 完整遍历一次整个训练数据集(无论 batch size 是多少);
  • 1 个 step = 处理 1 个 batch 的数据,其数量取决于 len(dataset) // batch_size。

例如,若训练集含 10,000 张图像:

  • 当 batch_size = 128 时,每 epoch 包含约 10000 // 128 ≈ 78 步;
  • 当 batch_size = 64 时,每 epoch 变为 10000 // 64 ≈ 156 步。

可见:改变 batch size 仅影响每轮内的步数,不改变 epoch 的语义定义。因此,你从 save_at_8.keras 恢复训练时,应设 initial_epoch = 8(而非 16),表示“已完成 8 轮完整数据遍历”,后续将从第 9 轮开始。

✅ 正确做法示例(TensorFlow/Keras):

model = tf.keras.models.load_model("save_at_8.keras")
# 注意:initial_epoch 是下一轮的序号(即从第 8 轮恢复,则设为 8)
history = model.fit(
    train_ds,
    epochs=50,              # 总轮次上限(可设为新目标,如 50)
    initial_epoch=8,        # 关键:保持为原 checkpoint 的 epoch 编号
    callbacks=[checkpoint_cb]
)

⚠️ 特别注意学习率调度器(LR Scheduler):
若使用基于 step 的 warmup(如 tf.keras.optimizers.schedules.PolynomialDecay 配合 steps_per_epoch)或自定义 step-aware 调度器,仅修改 initial_epoch 不足以保证学习率连续性——此时需同步恢复优化器状态(如 optimizer.iterations)或手动重置 initial_step。标准 epoch-based 调度器(如 ReduceLROnPlateau)则不受影响。

? 总结:

  • ✅ initial_epoch 应严格对应 checkpoint 文件名中的 epoch 编号(如 save_at_8.keras → initial_epoch=8);
  • ❌ 不要按 batch size 缩放换算(如 128→64 就把 epoch×2),这会错误地跳过或重复训练;
  • ? 若启用 step-sensitive 学习率策略,请额外保存并恢复 optimizer.iterations 或等效 step 计数器;
  • ? 批量大小调整本身不影响收敛理论,但可能改变梯度噪声水平和内存占用——你将 batch size 减半、epoch 加倍的做法是常见且合理的工程权衡,尤其适用于低资源设备。
PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

2023.07.20

1105

4

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

2023.07.25

2072

7

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.31

1185

3

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

2023.08.03

8844

23

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

1479

5

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

1552

5

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

881

5

python合并两个列表
python合并两个列表

Python是一种强大的编程语言,具有许多方便的功能和工具。在Python中,有多种方法可以合并两个列表。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.10

531

4

python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

1111

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.4万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 131.8万人学习