gpt4 book ai didi

python - Python 2和3之间numpy数组的pickle不兼容

转载 作者:IT老高 更新时间:2023-10-28 12:26:40 25 4
gpt4 key购买 nike

我正在尝试加载链接的 MNIST 数据集 here在 Python 3.2 中使用这个程序:

import pickle
import gzip
import numpy


with gzip.open('mnist.pkl.gz', 'rb') as f:
l = list(pickle.load(f))
print(l)

不幸的是,它给了我错误:

Traceback (most recent call last):
File "mnist.py", line 7, in <module>
train_set, valid_set, test_set = pickle.load(f)
UnicodeDecodeError: 'ascii' codec can't decode byte 0x90 in position 614: ordinal not in range(128)

然后我尝试在 Python 2.7 中解码 pickle 文件,然后重新编码。所以,我在 Python 2.7 中运行了这个程序:

import pickle
import gzip
import numpy


with gzip.open('mnist.pkl.gz', 'rb') as f:
train_set, valid_set, test_set = pickle.load(f)

# Printing out the three objects reveals that they are
# all pairs containing numpy arrays.

with gzip.open('mnistx.pkl.gz', 'wb') as g:
pickle.dump(
(train_set, valid_set, test_set),
g,
protocol=2) # I also tried protocol 0.

它运行没有错误,所以我在 Python 3.2 中重新运行了这个程序:

import pickle
import gzip
import numpy

# note the filename change
with gzip.open('mnistx.pkl.gz', 'rb') as f:
l = list(pickle.load(f))
print(l)

但是,它给了我和以前一样的错误。我如何让它发挥作用?


This is a better approach for loading the MNIST dataset.

最佳答案

如果您在 python3 中遇到此错误,则可能是 python 2 和 python 3 之间的不兼容问题,对我来说,解决方案是 loadlatin1编码:

pickle.load(file, encoding='latin1')

关于python - Python 2和3之间numpy数组的pickle不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11305790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com