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

如何加载FastAI导出的pkl模型文件?

解决FastAI模型加载后直接预测的问题

首先得明确FastAI里model.save()和model.export()的核心区别:

  • model.save()只保存模型权重(生成.pth文件),加载时必须先创建和训练时结构一致的Learner实例——也就是得先定义好ImageDataLoaders、指定模型架构,再用model.load()载入权重。
  • model.export()会导出完整的Learner对象,包括模型结构、训练好的权重、数据预处理管道、类别标签映射等所有必要信息,生成的.pkl文件可以直接用load_learner()加载,完全不需要重新定义数据加载器。

正确加载.pkl文件做预测的步骤

  1. 确保本地环境安装FastAI:
    pip install fastai
    
  2. 直接加载模型并调用预测:
    from fastai.vision.all import *
    
    # 加载导出的模型文件
    learn = load_learner("path/to/your/export.pkl")
    
    # 对单张图片做预测
    img = PILImage.create("path/to/test/image.jpg")
    pred_class, pred_idx, outputs = learn.predict(img)
    print(f"预测类别:{pred_class},置信度:{round(outputs[pred_idx].item(), 4)}")
    

为什么不需要重新定义ImageDataLoaders?

model.export()已经把训练时的所有数据预处理规则(比如图像尺寸、归一化参数)、类别与标签的映射关系都打包进了.pkl文件,load_learner会自动还原这些配置,所以不需要重复构建数据加载器就能直接用。

若使用.pth权重文件加载的方法(可选)

如果你一定要用model.save()保存的.pth文件,必须严格复刻训练时的环境:

  1. 定义和训练时完全一致的ImageDataLoaders(包括图像尺寸、预处理、类别划分等):
    dls = ImageDataLoaders.from_folder(
        "your/data/path",
        train="train",
        valid="valid",
        item_tfms=Resize(224),  # 和训练时的尺寸一致
        batch_tfms=Normalize.from_stats(*imagenet_stats)
    )
    
  2. 创建Learner并加载权重:
    learn = cnn_learner(dls, resnet18, metrics=error_rate)
    learn.load("model_name")  # 这里填save时的文件名,不需要带.pth后缀
    
  3. 之后就能正常调用learn.predict()进行预测了。

总结:优先使用model.export()配合load_learner()的方式,这是FastAI专为模型部署设计的标准流程,能直接得到可用于预测的Learner对象,无需重复构建数据加载器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 17:32:37