You need to enable JavaScript to run this app. TensorFlow训练中如何按指定epoch间隔保存模型并自定义存储目录
优惠活动
大模型
产品
解决方案
定价
更多

TensorFlow训练中如何按指定epoch间隔保存模型并自定义存储目录

常见问题解答

末尾现有model.save命令的生效性问题

你目前写在代码末尾的保存逻辑存在两个高频踩坑点,很可能导致保存失败:

  • Windows路径里的反斜杠\在Python字符串中是转义标识,直接写'C:\Users\Omar\Desktop\trainedmodel.h5'时,\U``\D这类组合会被解析成非法转义序列,导致路径无效。正确写法可以三选一:用原始字符串r'C:\Users\Omar\Desktop\trainedmodel.h5'、把反斜杠替换为正斜杠'C:/Users/Omar/Desktop/trainedmodel.h5'、双写反斜杠'C:\\Users\\Omar\\Desktop\\trainedmodel.h5'。
  • 只要路径修正无误,这个保存命令在训练全流程跑完后是可以正常触发的,缺点是完全依赖训练全流程不中断,一旦中途训练报错、手动终止,之前训练的权重会全部丢失,也拿不到中间阶段的模型快照。

按固定epoch间隔保存、自定义保存路径的实现方案

不需要手动修改训练循环的内部逻辑,直接用TensorFlow内置的ModelCheckpoint回调即可实现自动保存,这个逻辑只需要在调用fit/fit_generator前配置好,传入训练参数就能生效:

  1. 自定义保存文件夹路径
    不需要手动在资源管理器里新建文件夹,直接用代码指定路径、自动创建目录即可,路径同样要遵循上面提到的Windows路径写法规则,避免转义错误。
  2. 配置间隔保存规则
    给ModelCheckpoint设置带epoch占位符的文件路径模板,让每个阶段保存的模型自动带上当前epoch编号,避免互相覆盖;再设置间隔参数,定义每隔多少个epoch触发一次保存,不需要写额外的判断逻辑。

整合后的完整可运行代码

import os
from tensorflow.keras.callbacks import ModelCheckpoint

model.compile(optimizer='Adam',loss='categorical_crossentropy',metrics=['accuracy'])
# Adam optimizer
# loss function will be categorical cross entropy
# evaluation metric will be accuracy

# ---- 新增:自定义模型保存路径 + 间隔保存回调配置 ----
# 自定义模型保存的根目录路径
custom_model_save_dir = r'C:\Users\Omar\Desktop\image_training_model_snapshots'
# 自动创建目标文件夹,存在则跳过,不会报目录不存在的错误
os.makedirs(custom_model_save_dir, exist_ok=True)

# 配置按epoch间隔保存的回调
interval_save_callback = ModelCheckpoint(
    # 保存路径带epoch占位符,每个模型文件自动携带对应的训练轮次
    filepath=os.path.join(custom_model_save_dir, 'model_epoch_{epoch:02d}.h5'),
    # 设置每2个epoch保存一次,可根据需求调整为任意整数
    period=2,
    # 关闭“仅保存最优模型”逻辑,严格按固定间隔保存所有阶段的模型
    save_best_only=False
)
# ---- 新增逻辑结束 ----

step_size_train=train_generator.n//train_generator.batch_size
model.fit_generator(generator=train_generator,
                   steps_per_epoch=step_size_train,
                   epochs=15,
                   # 将配置好的回调传入训练流程,自动在对应epoch触发保存
                   callbacks=[interval_save_callback])

# 保留全量训练完成后的最终模型保存,路径指向自定义文件夹
model.save(os.path.join(custom_model_save_dir, 'final_trained_model.h5'))

效果说明

按照上面的配置,训练15个epoch的过程中,会自动在你指定的文件夹内依次保存epoch=2、4、6…14的阶段模型,每完成2个epoch就会触发一次保存,就算训练中途意外中断,已经完成的epoch对应的模型也不会丢失,不需要等全量训练结束才拿到所有模型快照。

补充说明:fit_generator是TensorFlow 2.x中已经弃用的旧API,后续可以替换为功能完全一致的model.fit方法,传入的训练参数、回调参数都不需要修改。

内容的提问来源于stack exchange,提问作者Omar Inuwa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.06 02:36:07