【问题标题】:Python 3 keras: UnpicklingError: pickle data was truncated for partly downloaded keras cifar10 datasetPython 3 keras:UnpicklingError:pickle 数据被截断部分下载的 keras cifar10 数据集
【发布时间】:2018-09-25 10:52:21
【问题描述】:

我需要一些帮助来解决我的错误。我尝试加载 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

我用代码加载了数据集:

from keras.datasets import cifar10
(x_train, y_train), (x_test, y_test) = cifar10.load_data() 

请帮我解决这个问题。

非常感谢。

【问题讨论】:

    标签: python-3.x machine-learning keras


    【解决方案1】:

    删除文件~/.keras/datasets/cifar-10-batches-py.tar.gz 和可能的文件夹~/.keras/datasets/cifar-10-batches-py(如果存在)并重试,它应该重新下载文件,希望这次成功。

    【讨论】:

    • 该目录中不存在文件和文件夹。只有 .py 文件 (cifar10.py)。所以没有什么可以删除的。
    • @kebochiG 你确定你找对地方了吗?听起来您正在查看 keras 的源代码,我说的是 ~/.keras 文件夹,请注意 . (句点)表示它是您主文件夹中的隐藏文件夹。
    • 哦,好的。我可能没有找对地方@Matias。我目前正在查看“C:\Users\username\Anaconda3\envs\tensorflow_1.8\Lib\site-packages\keras\datasets”目录。请问我怎样才能到正确的地方。我的主文件夹(我的 .ipynb 文件所在的位置)中也没有看到隐藏文件夹,并且我勾选了查看隐藏文件夹选项。
    【解决方案2】:

    我有同样的问题。我试图在大型多 GPU(如 100 GPU)上运行我的代码。问题是我的每次运行都试图从头开始下载 cifar,并且下载过程是在我的 CPU 而不是我的 GPU 上运行的,所以在某些时候它会出现问题,因为它会正确准确地下载所有这些。最后,我意识到,如果我只下载一次数据集并在所有实验之间共享文件夹,我将不再面临这个问题。

    【讨论】:

      【解决方案3】:

      那是因为你的cifar10数据集没有下载完整,你应该删除不完整的数据并重新下载。你可以调试cifar10.load_data()看看你自己的path()在哪里。我的路径在下面。删除是并重新下载。 this is my path 那么您也可以手动将下载的 cifar10 数据放在该路径中。 like this

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-11
        • 2017-11-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多