Hel*_*bye 5 pickle non-ascii-characters windows-7 python-3.5
我在使用 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)
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我得到输出
"C:\Program Files\Python35\python.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
Run Code Online (Sandbox Code Playgroud)
这个错误信息是什么意思?它说有一个 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')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3724 次 |
| 最近记录: |