训练sklearn模型后重启Jupyter Notebook能否执行pickle序列化?
关于Jupyter中Sklearn模型Pickle序列化的问题
我来给你拆解这两个场景:
关闭Notebook但本地服务器仍运行时,重启Notebook能否序列化模型?
完全可以!你得搞清楚Jupyter的界面和内核是分开的——你关掉的只是前端的Notebook网页,后台运行你代码的Python内核进程还活着,训练好的模型依然存在于这个进程的内存里。只要重新打开Notebook时,选择连接到原来的那个内核(别新建内核),就能直接访问之前定义的模型变量,然后正常执行pickle(或者sklearn更推荐的joblib)序列化操作,比如:import pickle pickle.dump(your_trained_model, open('saved_model.pkl', 'wb'))或者用对numpy数组更高效的joblib:
from joblib import dump dump(your_trained_model, 'saved_model.joblib')重启Notebook内核后能否执行pickle操作?
这就不行了。内核重启意味着原来的Python进程被彻底终止,内存里的所有对象(包括你花几小时训练的模型)都会被完全释放,相当于之前的训练成果在内存里彻底消失了。这时候你要么重新训练模型,要么如果之前有过临时保存才能恢复,否则没法对那个已训练的模型做pickle了。
小提醒
对于这种耗时极久的模型,建议训练完成后立刻做序列化保存,别等关闭Notebook才想起——毕竟内核可能因为各种意外终止,提前保存能避免几小时的努力白费。
内容的提问来源于stack exchange,提问作者COOLBEANS
相关产品推荐
相关产品推荐

