【发布时间】:2015-11-22 15:08:39
【问题描述】:
我正在尝试使用包含a special version for python 的CIFAR-10 dataset。
它是一组二进制文件,每个文件代表一个包含 10k 个 numpy 矩阵的字典。这些文件显然是由 python2 cPickle 创建的。
我尝试从 python2 加载它,如下所示:
import cPickle
with open("data/data_batch_1", "rb") as f:
data = cPickle.load(f)
这真的很棒。但是,如果我尝试从 python3 加载数据(不是cPickle,而是pickle),它会失败:
import pickle
with open("data/data_batch_1", "rb") as f:
data = pickle.load(f)
如果失败并出现以下错误:
UnicodeDecodeError: 'ascii' codec can't decode byte 0x8b in position 6: ordinal not in range(128)
我能否以某种方式将原始数据集转换为可从 python3 读取的新数据集?或者我可以直接从 python3 中读取它吗?
我试过用cPickle加载它,把它转储到json,然后用pickle读回来,但是numpy矩阵显然不能写成json文件。
【问题讨论】:
标签: python python-2.7 python-3.x serialization pickle