无法加载CIFAR-10数据集:无效的加载密钥' \ x1f'

时间:2017-07-15 18:38:55

标签: python python-3.x dataset

我目前在TensorFlow中玩一些神经网络 - 我决定尝试使用CIFAR-10数据集。我下载了" CIFAR-10 python"来自网站的数据集:https://www.cs.toronto.edu/~kriz/cifar.html

在Python中,我也尝试直接复制为加载数据而提供的代码:

def unpickle(file):
import pickle
with open(file, 'rb') as fo:
    dict = pickle.load(fo, encoding='bytes')
return dict

但是,当我运行此操作时,我最终会出现以下错误:_pickle.UnpicklingError: invalid load key, '\x1f'.我还尝试使用gzip模块(with gzip.open(file, 'rb') as fo:)打开文件,但这并没有&#39 ;或者工作。

数据集是不是很糟糕,或者这是代码问题?如果数据集不好,我在哪里可以获得CIFAR-10的正确数据集?

4 个答案:

答案 0 :(得分:1)

提取您的* .gz文件并使用此代码

from six.moves import cPickle
f = open("path/data_batch_1", 'rb')
datadict = cPickle.load(f,encoding='latin1')
f.close()
X = datadict["data"]
Y = datadict['labels']

答案 1 :(得分:0)

看起来您需要解压缩* gz文件然后解压缩* tar文件以获取data_batches的文件夹。之后你可以在这些批次上应用pickle.load()。

答案 2 :(得分:0)

只需解压缩tar.gz文件,您将获得一个文件夹data_batch_1,data_batch_2,...

在使用之后,提供了将数据加载到您的项目中的代码:

def unpickle(file):
    import pickle
    with open(file, 'rb') as fo:
        dict = pickle.load(fo, encoding='bytes')
    return dict

dict =解开('data_batch_1')

答案 3 :(得分:0)

我在使用 jupyter(vscode) 和 python3.8/3.7 时遇到了同样的问题。我试图编辑源 cifar.py cifar10.py 但没有成功。
我的解决方案是在单独的普通 .py 文件中运行这两行代码:

from tensorflow.keras.datasets import cifar10
cifar10.load_data()

之后它在 Jupyter 上运行良好。