在 AWS EC2 实例中加载 pickle 包
Loading a pickle package in AWS EC2 instance
我已经使用 pickle (windows Python 3.6) 在本地保存了我的一个模型,我需要将该模型 运行 在 EC2 Linux 实例上(使用 Python 2.7) 进行预测。我已经使用 Filezilla 将保存的模型从我的笔记本电脑传输到 EC2 实例,现在当我尝试使用以下代码加载模型时:
filename = 'Customer_segmentation_model_xgb_final.sav'
loaded_model = pickle.load(open(filename,'rb'))
它给出了以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.7/pickle.py", line 1384, in load
return Unpickler(file).load()
File "/usr/lib64/python2.7/pickle.py", line 864, in load
dispatch[key](self)
File "/usr/lib64/python2.7/pickle.py", line 892, in load_proto
raise ValueError, "unsupported pickle protocol: %d" % proto
ValueError: unsupported pickle protocol: 3
有人请指出我做错了什么以及需要做什么。
这看起来像是一个兼容性问题,我建议在您的服务器上安装相同版本的 Python (python 3.6),因为 pickle 模块是 Python 的一部分标准库:
sudo apt-get install python3.6
您也可以在最初转储时强制使用较低的协议(编辑:如评论中所建议):
pickle.dump(model, file, protocol=2)
希望对您有所帮助!
我已经使用 pickle (windows Python 3.6) 在本地保存了我的一个模型,我需要将该模型 运行 在 EC2 Linux 实例上(使用 Python 2.7) 进行预测。我已经使用 Filezilla 将保存的模型从我的笔记本电脑传输到 EC2 实例,现在当我尝试使用以下代码加载模型时:
filename = 'Customer_segmentation_model_xgb_final.sav'
loaded_model = pickle.load(open(filename,'rb'))
它给出了以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.7/pickle.py", line 1384, in load
return Unpickler(file).load()
File "/usr/lib64/python2.7/pickle.py", line 864, in load
dispatch[key](self)
File "/usr/lib64/python2.7/pickle.py", line 892, in load_proto
raise ValueError, "unsupported pickle protocol: %d" % proto
ValueError: unsupported pickle protocol: 3
有人请指出我做错了什么以及需要做什么。
这看起来像是一个兼容性问题,我建议在您的服务器上安装相同版本的 Python (python 3.6),因为 pickle 模块是 Python 的一部分标准库:
sudo apt-get install python3.6
您也可以在最初转储时强制使用较低的协议(编辑:如评论中所建议):
pickle.dump(model, file, protocol=2)
希望对您有所帮助!