我会尽力说清楚。
我尝试使用以下方式下载 cifar10数据集:
from keras.datasets import cifar10
我遇到了问题,我发现很多用户都有这个问题。
所以,我继续前进,直接下载数据集,我有五个data_batch文件,一个test_batch和一个batches.meta文件。
在那之后,我在网上看到了我需要" unpickle" (之前从未听过这个表达),所以我找到了这个小功能:
def unpickle(file):
import pickle
with open(file, 'rb') as fo:
dict = pickle.load(fo, encoding='bytes')
return dict here
到目前为止一切顺利,现在我正在尝试正确使用此功能:
def load_data():
x_l = []
y_l = []
for j in range(5):
d = unpickle('data/data_batch_' + repr(j + 1))
xx = d['data']
yy = d['labels']
x_l.append(xx)
y_l.append(yy)
d = unpickle('data/test_batch')
x_l.append(d['data'])
y_l.append(d['labels'])
return x_l, y_l
我正在使用此行调用函数load_data:
xs, ys = load_data()
但我在这一行收到错误:
xx = d['data']
最大的问题是,我是否收到了一个简单的错误,我无法推断并理解我哪里出错了,这就是错误:
xx = d ['数据']
KeyError:'数据'
这就是在给他分配之后的样子:
unpickle('data/data_batch_' + repr(j + 1))
我真的需要你的帮助,我想了解我做错了什么,因为我经常使用这个功能。
谢谢!
编辑:我正在使用python 3.6。答案 0 :(得分:0)
您可以尝试加载这样的数据集:
from keras.datasets import cifar10
(x_train, y_train), (x_test, y_test) = cifar10.load_data()
答案 1 :(得分:0)
KeyError很简单,这个看起来与编码为字节对象的字典键有关。我假设您使用的是Python2。切换到Python3解决了这个问题。对于Python2,请尝试调用数据[b'data']。