0

我几乎完全使用了这段代码,只是改变了这一行:

f = gzip.open("../data/mnist.pkl.gz", 'rb')
training_data, validation_data, test_data = cPickle.load(f)

到这些行:

import pickle as cPickle
f = gzip.open("mnist.pkl.gz", 'rb')
u = cPickle._Unpickler(f)
u.encoding='latin1'
training_data, validation_data, test_data = u.load()

解决酸洗问题。原始 mnist.pkl.gz 是从他的 repo 下载的(可在此处获得),或者生成 .pkl.gz 的代码在此处。输出很棒,它是训练和测试数据的腌制 numpy 数组,经过检查,我可以看到是否打印了训练数据的长度,它是 250,000 个 numpy 数组。

我需要将数据恢复为与原始 MNIST 数据完全相同的格式(即 ubyte、训练和测试数据以及标签分开),以放入我无法控制的外部管道中,因此它必须与原来的。

我真的很困惑如何做到这一点。例如,我可以看到这样的事情可能会有所帮助,但我看不出它如何适合这个问题。如果有人可以帮助我将这个腌制的 numpy 数组的输出恢复为原始的 MNIST 格式(即 ubyte,训练和测试数据以及标签分开),我将非常感激。

编辑 1:我刚刚意识到这可能更容易,实际上我只需要将训练数据转换为 ubyte 格式,而不是测试数据,因为我已经拥有原始 ubyte 格式的测试数据。

4

1 回答 1

1

在 numpy 数组中获得数据后,您可以将 numpy 数组转换为 mnist 格式,请参阅此 https://github.com/davidflanagan/notMNIST-to-MNIST/blob/17823f4d4a3acd8317c07866702d2eb2ac79c7a0/convert_to_mnist_format.py#L92

您可以在此处阅读更多 mnist 数据格式 http://yann.lecun.com/exdb/mnist/

您还可以从此处验证转换后的图像 https://stackoverflow.com/a/53181925

于 2021-03-04T16:39:28.747 回答