UnicodeDecodeError in pickle.load



我在使用 pickle 加载 pkl 文件时遇到了一些问题。我正在使用Windows 7和Python 3.5.1 64位。pkl 文件是从这里下载的。

这是我的代码:

import pickle
# Load model weights and metadata
weightFile = open('vgg16.pkl', 'rb')
d = pickle.load(weightFile)

当我运行它时,我得到输出

"C:Program FilesPython35python.exe" C:/work/lasagne/tutorial/lasagne-tutorial2.py
Traceback (most recent call last):
  File "C:/work/lasagne/tutorial/lasagne-tutorial2.py", line 5, in <module>
    d = pickle.load(weightFile)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xbc in position 1: ordinal not in range(128)
Process finished with exit code 1

此错误消息是什么意思?它说有一个字节是acsii编解码器无法解码的,但是pkl文件不应该是二进制的(因此不包含ascii字符)吗?

我在加载文件时做错了什么吗?我该怎么做才能修复错误?

在这个答案中找到了解决方案。pickle 文件可能是用 Python 2 编码的,为pickle.load提供可选参数encoding='latin1'解决了这个问题。

工作的代码如下所示:

import pickle
# Load model weights and metadata
weightFile = open('vgg16.pkl', 'rb')
d = pickle.load(weightFile, encoding='latin1')

相关内容

  • 没有找到相关文章

最新更新