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

加载Pickle序列化ML模型触发FileNotFoundError的解决方案咨询

解决Pickle模型加载FileNotFoundError的步骤

1. 确认目标Pickle文件是否真实存在

  • 在云环境终端执行命令 ls /home/jovyan/work,查看目录下是否有对应的.pickle文件。如果没有,说明之前的序列化操作未成功生成文件,或是云环境的临时存储在会话结束后清空了文件。
  • 这种情况下,你需要先完整运行一次包含write_pickle的代码,确保模型被正确保存到指定路径,之后再注释写入和拟合代码进行加载测试。

2. 修复路径拼接的潜在问题

你的读写函数直接用字符串拼接路径,容易因路径末尾缺少斜杠导致错误:

  • 例如path为"/home/jovyan/work"(末尾无斜杠)时,拼接后会变成"/home/jovyan/workmodel.pickle",直接导致路径无效。
  • 建议改用os.path.join自动处理路径分隔符,避免手动拼接错误:
    import os
    import pickle
    
    def write_pickle(path, model_object, save_as:str): 
        full_path = os.path.join(path, f"{save_as}.pickle")
        with open(full_path, "wb") as to_write: 
            pickle.dump(model_object, to_write)
    
    def read_pickle(path, saved_model_name:str):
        full_path = os.path.join(path, f"{saved_model_name}.pickle")
        with open(full_path, 'rb') as to_read:
            model = pickle.load(to_read)
        return model
    

3. 排查云环境的存储特性

  • 多数云笔记本环境(如JupyterHub、Kaggle Kernel)的默认工作目录属于临时存储,会话结束后文件会被自动清理。如果之前的Pickle文件是在上一个会话生成的,当前会话自然无法找到。
  • 解决方法:将模型保存到云环境的持久化存储位置(如绑定的云存储桶、用户专属持久目录),而非临时工作目录。

4. 验证文件权限

  • 执行命令 ls -l /home/jovyan/work 查看文件权限,确保当前用户拥有该文件的读取权限。如果权限不足,执行 chmod +r /home/jovyan/work/your_model_name.pickle 添加读取权限。

5. 检查函数调用的参数一致性

  • 确认调用read_pickle时传入的saved_model_name,和调用write_pickle时的save_as完全一致(包括大小写、拼写、特殊字符),比如保存时用"rf_model",读取时不能写成"RF_Model"。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 21:52:34