我目前在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的正确数据集?
答案 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 上运行良好。