Autogluon的predict函数从错误路径加载model.pkl问题排查
Autogluon模型预测时路径拼接错误问题排查
问题背景
项目文件结构:
- 根目录下存在
Models文件夹,用于存储不同化学分析物的模型 - 每个分析物的子文件夹下包含:
learner.pkl、predictor.pkl,以及存放训练后模型和trainer.pkl的models子文件夹
加载模型后调用TabularPredictor.predict()方法时触发以下错误:
FileNotFoundError: [Errno 2] No such file or directory: 'Models/ascorbic acid-model/models//WeightedEnsemble_L2model.pkl'
核心问题:程序错误拼接路径,试图加载WeightedEnsemble_L2model.pkl,但正确路径应为WeightedEnsemble_L2/model.pkl。已尝试修改路径、切换至Linux系统训练模型,均未解决问题。
可能原因
- 版本不兼容:训练模型时使用的Autogluon版本与加载预测时的版本不一致,不同版本的路径拼接逻辑或模型存储命名规则存在差异,导致解析出错。
- 含空格的文件夹名称干扰:分析物文件夹名称包含空格(如
ascorbic acid-model),训练时Autogluon在记录子模型路径时出现字符串拼接异常,直接将子模型文件夹名与model.pkl合并。 - predictor加载配置错误:加载
predictor.pkl时未正确指定模型根路径,导致内部路径解析逻辑混乱,错误合并子模型的文件夹名与文件名。 - 模型文件完整性问题:模型迁移或存储过程中,
WeightedEnsemble_L2文件夹丢失或权限异常,不过从报错信息看,核心是路径拼接错误,此可能性相对较低。
验证与解决方向
- 确认训练和加载时的Autogluon版本完全一致,建议使用相同版本重新训练并加载模型。
- 将分析物文件夹名称改为无空格格式(如
ascorbic-acid-model),重新训练后测试加载预测。 - 查看Autogluon生成的模型配置文件(如
model_info.json),检查其中记录的子模型路径是否已存在拼接错误,若有可尝试手动修正后加载(操作前务必备份原文件)。
内容的提问来源于stack exchange,提问作者OlaG
相关产品推荐
相关产品推荐

