Python 3.x 部分下载的keras cifar10数据集的Python3 keras:UnpicklingError:pickle数据被截断
我需要一些帮助来修正我的错误。我尝试加载cifar10数据集,但由于互联网不稳定,第一次无法完全下载,随后在稳定的互联网上重新运行代码会出现以下错误:Python 3.x 部分下载的keras cifar10数据集的Python3 keras:UnpicklingError:pickle数据被截断,python-3.x,machine-learning,keras,Python 3.x,Machine Learning,Keras,我需要一些帮助来修正我的错误。我尝试加载cifar10数据集,但由于互联网不稳定,第一次无法完全下载,随后在稳定的互联网上重新运行代码会出现以下错误: UnpicklingError: Traceback (most recent call last) <ipython-input-16-9117078ebdb2> in <module>() 1 from keras.datasets import cifar10 ---
UnpicklingError:
Traceback (most recent call last)
<ipython-input-16-9117078ebdb2> in <module>()
1 from keras.datasets import cifar10
----> 2 (x_train, y_train), (x_test, y_test) = cifar10.load_data()
c:\users\keboc\anaconda3\envs\tensorflow_1.8\lib\site-
packages\keras\datasets\cifar10.py in load_data(label_mode)
32
33 fpath = os.path.join(path, 'test_batch')
---> 34 x_test, y_test = load_batch(fpath)
35
36 y_train = np.reshape(y_train, (len(y_train), 1))
c:\users\keboc\anaconda3\envs\tensorflow_1.8\lib\site-packages\keras\datasets\cifar.py in load_batch(fpath, label_key)
25 d = cPickle.load(f, encoding='bytes')
26 # decode utf8
---> 27 #d_decoded = {}
28 for k, v in d.items():
29 d_decoded[k.decode('utf8')] = v
UnpicklingError: pickle data was truncated
请帮我把这个修好
非常感谢。删除文件
~/.keras/datasets/cifar-10-batches-py.tar.gz
,可能还有文件夹~/.keras/datasets/cifar-10-batches-py
,如果它存在,再试一次,它应该会重新下载文件,希望这次成功。我也有同样的问题。我试图在一个大型多gpu(比如100 gpu)上运行我的代码。问题是,我的每次运行都试图从头开始下载cifar,而下载过程是在我的CPU上而不是在我的GPU上运行的,因此在某种程度上,it正确、准确地下载所有这些过程会有问题。最后,我意识到,如果我只下载一次数据集并在所有实验之间共享文件夹,我就不会再面临这个问题了 这是因为您的cifar10数据集没有完全下载,您应该删除不完整的数据并重新下载。您可以调试cifar10.load_data()以查看您自己的路径()在哪里。我的路径在下面。只需删除并重新下载即可。
然后,您还可以手动将下载的cifar10数据放入该路径。
该目录中不存在该文件和文件夹。只有.py文件(cifar10.py)。所以没有东西可以移除。@kebochiG你确定你找对地方了吗?听起来你在看keras的源代码,我说的是~/.keras文件夹,注意。(句号)意味着它是主文件夹中的隐藏文件夹。哦,好的。我可能找错地方了@Matias。我目前正在查看“C:\Users\username\Anaconda3\envs\tensorflow\u 1.8\Lib\site packages\keras\dataset”目录。请问我怎样才能到达正确的地方。我在我的主文件夹(my.ipynb文件所在的位置)中也没有看到隐藏的文件夹,并且我选中了查看隐藏文件夹选项。
from keras.datasets import cifar10
(x_train, y_train), (x_test, y_test) = cifar10.load_data()