【问题标题】:UnicodeDecodeError in pickle.loadpickle.load 中的 UnicodeDecodeError
【发布时间】:2016-05-23 23:10:24
【问题描述】:

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

这是我的代码:

import pickle

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

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

"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

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

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

【问题讨论】:

    标签: windows-7 pickle python-3.5 non-ascii-characters


    【解决方案1】:

    this answer 中找到了解决方案。 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')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-21
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      相关资源
      最近更新 更多