unpickle文件,用于加载要在我的CNN上使用的数据集

时间:2018-04-18 05:35:57

标签: python keras

我会尽力说清楚。

我尝试使用以下方式下载 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))

enter image description here

我真的需要你的帮助,我想了解我做错了什么,因为我经常使用这个功能。

谢谢!

编辑:我正在使用python 3.6。

2 个答案:

答案 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']。