💓 博客主页:瑕疵的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',但路径分隔符问题没解决,还是得手动处理目录。

    避坑总结(血泪经验):

    1. 别碰硬编码路径!永远用os.path.joinpathlib拼接。
    2. 保存前建目录os.makedirs('dir', exist_ok=True),避免目录不存在。
    3. 打印路径确认print("Saving to:", save_path),跑之前先看路径对不对。
    4. 跨平台优先:别写死C:\\,用os.seppathlib自动适配。

    这次终于不用再被路径错误折磨了。下次再遇到类似问题,直接看这行代码——比看文档快十倍。

    Logo

    AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

    更多推荐