谷歌Colab运行人脸口罩检测代码提示SavedModel文件不存在求助
问题根因排查
- 训练配置和加载逻辑不匹配:你配置的
ModelCheckpoint回调参数save_weights_only=True,只会保存模型权重参数,不会保存模型结构、编译配置等完整信息,且存储路径为training_1/cp.ckpt,和你后续加载的路径mask_detection.model完全不匹配。 - Colab临时存储特性导致文件丢失:Colab本地存储空间是临时的,如果你是训练完成后隔了一段时间再执行加载代码,或者重启了Colab runtime,之前训练生成的临时文件都会被清空,就算你之前生成过模型文件也会丢失。
- 缺失模型导出步骤:你的朋友能正常运行大概率是他在训练完成后额外执行了模型导出代码,生成了
mask_detection.model完整模型文件,你缺失了这一步操作。
修复方案
- 如果你当前还未断开Colab runtime,训练完的
model对象还在内存里,直接在训练代码结束后添加一行导出完整模型的代码即可:
model.save('mask_detection.model')
执行完成后就会生成你要加载的模型目录,再执行后续加载代码就不会报错。
- 如果runtime已经重启,训练好的模型对象已经丢失,你可以用之前保存的权重文件恢复模型,首先要先初始化和训练时结构完全一致的
model对象,再加载权重:
# 先补全你之前定义模型结构的代码 # model = 你的模型结构定义代码 # 加载保存的权重 model.load_weights(checkpoint_path) # 加载完成后可以直接用模型做预测,也可以主动导出完整模型方便后续使用 model.save('mask_detection.model')
- 如果要长期保存模型避免Colab清缓存丢失,建议把模型导出到你挂载的谷歌云盘里:
# 你读测试图已经完成云盘挂载可以直接使用 model.save('/content/drive/MyDrive/mask_detection.model') # 后续加载直接用云盘路径加载即可 model=tf.keras.models.load_model('/content/drive/MyDrive/mask_detection.model')
内容的提问来源于stack exchange,提问作者Lyna Linou
相关产品推荐
相关产品推荐

