You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DeepXDE调用model.restore报错:传入路径非有效checkpoint

解决DeepXDE中ValueError: The passed save_path is not a valid checkpoint问题

核心问题分析

你的错误根源有两个:

  1. 检查点未生成:你设置的ModelCheckpoint(period=100)意味着每100个训练步才保存一次检查点,但训练日志显示你只跑了10个步(Best model at step 10),根本没触发保存操作,自然找不到model.ckpt-100文件。
  2. 步数计算错误:你用np.argmin(model.losshistory.loss_test)*100拼接步数,但np.argmin返回的是loss列表的索引(比如你的loss_test有2个元素,索引为0和1),乘以100得到的数值和实际训练步数完全不匹配,导致路径指向一个不存在的文件。

具体修复步骤

1. 调整检查点保存策略

修改ModelCheckpoint参数,确保训练过程中能生成检查点:

checker = dde.callbacks.ModelCheckpoint(
    save_dir + save_str + "/model.ckpt", 
    save_better_only=True,  # 自动保存最优模型,无需手动计算步数
    period=10  # 匹配你的训练步数,每10步保存一次,确保覆盖最优步
)

如果想只保存最优模型,save_better_only=True会自动在loss下降时保存,不需要依赖period。

2. 正确恢复模型

不要手动拼接步数路径,直接用以下两种可靠方式:

  • 方式一:用检查点前缀恢复(TensorFlow会自动识别最新/最优的检查点文件)
model.restore(save_dir + save_str + "/model.ckpt", verbose=0)
  • 方式二:用train_state直接获取最优步(最准确,避免路径拼接错误)
model.restore(train_state.best_step, verbose=0)

train_state是model.train()返回的对象,已经记录了最优模型对应的训练步,直接传入restore即可。

3. 路径规范检查

确保路径拼接时不要混用./,统一用/分隔,避免生成类似xxx./model.ckpt的非法路径。

额外排查点

  • 训练结束后,手动去save_dir + save_str目录下查看,确认是否生成了.ckpt.data、.ckpt.index、.ckpt.meta这类检查点文件,如果没有,说明保存逻辑未触发,检查period是否大于训练总步数。
  • 你看到的TensorFlow deprecated警告不影响当前问题,是DeepXDE兼容旧版本TF的提示,无需处理。

是否需要去DeepXDE平台提问?

当前问题属于代码逻辑错误(保存策略、路径计算),按上述修改即可解决。如果修改后仍出现检查点不存在的问题,再去DeepXDE讨论区提问,提问时附上:

  • 修改后的代码片段
  • 训练目录下的文件列表截图
  • 完整的报错日志

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:57:35