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

如何将训练好的模型迁移至其他Python Notebook用于测试?

提交含训练后模型的测试Notebook操作方案

一、先持久化训练好的模型与预处理逻辑

Notebook里的模型和pre_process函数都是内存对象,关闭会话后就会丢失,必须先保存到本地文件:

  • 模型保存:根据你使用的框架选择对应方法:
    • Scikit-learn:用joblib或pickle,示例代码:joblib.dump(trained_model, 'trained_model.joblib')
    • TensorFlow/Keras:trained_model.save('saved_model_dir/')(会生成一个包含模型结构和权重的文件夹)
    • PyTorch:torch.save(trained_model.state_dict(), 'model_weights.pth')(仅保存权重,后续加载时需要先初始化模型结构)
  • 预处理函数/对象保存:
    • 如果是Scikit-learn的预处理对象(如StandardScaler),同样用joblib.dump(preprocessor, 'preprocessor.joblib')
    • 如果是自定义的pre_process函数,要么直接把函数代码复制到测试Notebook里,要么用pickle保存:pickle.dump(pre_process, open('pre_process.pkl', 'wb'))(注意函数不能依赖未定义的外部变量)

二、准备测试Notebook并提交

  1. 在测试Notebook中加载保存的资源,编写测试逻辑:
    以Scikit-learn为例的示例代码:
    import joblib
    # 加载预处理对象/函数
    pre_process = joblib.load('preprocessor.joblib')
    # 加载训练好的模型
    trained_model = joblib.load('trained_model.joblib')
    # 执行测试流程
    test_data = ... # 你的测试数据集
    processed_data = pre_process(test_data)
    predictions = trained_model.predict(processed_data)
    
  2. 提交内容:将测试Notebook + 保存的模型文件 + 预处理相关文件(如果是单独文件)打包提交。如果预处理函数代码简短,也可以直接把函数定义写在测试Notebook里,只提交Notebook和模型文件即可。
关于关联两个Notebook调用模型的问题

Notebook运行时的变量仅存在于当前会话,关闭后就会释放,无法直接跨文件共享内存中的模型。但可以通过以下方式实现关联调用:

  • 推荐方案:按上述方法把训练好的模型保存到文件,在测试Notebook里加载文件中的模型,这是最稳定可靠的方式。
  • 临时不推荐方案:用IPython魔法命令%run在测试Notebook里运行训练Notebook的全部或部分代码,比如%run ./training_notebook.ipynb,但这样会重新执行训练流程,不仅耗时,还依赖训练数据和环境,一旦训练数据缺失就会报错。
  • 规范方案:把预处理函数、模型结构定义等逻辑提取到一个单独的.py模块(比如model_utils.py),训练Notebook和测试Notebook都导入这个模块。训练时保存模型,测试时从模块导入预处理函数并加载模型文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 09:00:09