Keras 模型保存路径错误怎么办?教你一招避坑
·
💓 博客主页:瑕疵的CSDN主页
📝 Gitee主页:瑕疵的gitee主页
⏩ 文章专栏:《热点资讯》
被Keras模型保存路径坑了整晚,终于摸清了门道
目录
昨晚写完模型,想存个checkpoint,结果Keras直接报错:FileNotFoundError: [Errno 2] No such file or directory: 'C:modelsmodel.h5'
我盯着屏幕瞪了半小时——路径明明写的是'C:\models\model.h5',怎么变成C:modelsmodel.h5了?
核心根源:Windows路径用反斜杠\,但Python字符串里\是转义字符(比如\n是换行)。写'C:\models'时,\m被解析成转义序列,路径直接崩了。
更坑的是,Linux下用正斜杠/没问题,但硬编码路径跨平台必翻车。
错误示范(我踩过三次的坑):
# 错误!硬编码路径,\被转义,路径失效
model.save('C:\models\model.h5') # 实际路径变成 'C:modelsmodel.h5',目录根本不存在
跑起来直接报错,我差点把键盘砸了。
正确姿势(用os.path.join自动处理路径,跨平台通用):
import os
# 先确保保存目录存在(避免No such directory)
os.makedirs('models', exist_ok=True) # exist_ok=True避免目录已存在报错
# 用os.path.join拼接路径,自动处理分隔符(Windows用\,Linux用/)
save_path = os.path.join('models', 'model.h5') # 路径安全:'models/model.h5'或'models\model.h5'
model.save(save_path) # 保存成功,不再报错
或者用pathlib(更现代,推荐):
from pathlib import Path
save_dir = Path('models')
save_dir.mkdir(exist_ok=True) # 创建目录,避免权限问题
# 用/拼接路径,自动适配系统
save_path = save_dir / 'model.h5' # 路径:models/model.h5(Linux)或models\model.h5(Windows)
model.save(str(save_path)) # Keras需要字符串,所以转成str
我测试过,用pathlib的写法在Windows和Linux上都稳如老狗。
之前还试过用原始字符串r'C:\models\model.h5',但路径分隔符问题没解决,还是得手动处理目录。
避坑总结(血泪经验):
- 别碰硬编码路径!永远用
os.path.join或pathlib拼接。 - 保存前建目录:
os.makedirs('dir', exist_ok=True),避免目录不存在。 - 打印路径确认:
print("Saving to:", save_path),跑之前先看路径对不对。 - 跨平台优先:别写死
C:\\,用os.sep或pathlib自动适配。
这次终于不用再被路径错误折磨了。下次再遇到类似问题,直接看这行代码——比看文档快十倍。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐
所有评论(0)