如何将CIFAR数据集转换为与MNIST相同的格式



我正在尝试在两个不同数据集上运行机器学习算法。但是,数据集之间的y值的格式不同。

from keras.datasets import mnist, cifar10
(x_train, y_train), (x_test, y_test) = mnist.load_data()
print([y_train[i] for i in range(10)])
'''
[5, 0, 4, 1, 9, 2, 1, 3, 1, 4]
'''
(x_train, y_train), (x_test, y_test) = cifar10.load_data()
print([y_train[i] for i in range(10)])
'''
[array([6], dtype=uint8), array([9], dtype=uint8), array([9], dtype=uint8), array([4], dtype=uint8), array([1], dtype=uint8), array([1], dtype=uint8), array([2], dtype=uint8), array([7], dtype=uint8), array([8], dtype=uint8), array([3], dtype=uint8)]
'''

Keras上的文档说MNIST的格式是

y_train,y_test:uint8数字标签阵列(范围0-9的整数( 与形状(num_samples,(

,CIFAR的格式为

y_train,y_test:uint8类别标签的数组(整数范围内 0-9(带有形状(num_samples,(

对我来说,这些似乎应该是完全相同的格式。所以,我有两个问题:

  1. 我如何从文档中说出它们实际上具有不同的格式?(如果这是不可能的,请这样说。(

  2. 如何将CIFAR数据集转换为与MNIST相同的格式?(我的算法目前在MNIST上工作。(

问题是y在两个数据集中具有略有不同的形状,其(60000,)用于MNIST,但(50000, 1)在CIFAR10中。额外的维度不会引起任何问题,但是无论如何,您都可以摆脱以下方面的问题:

y = np.squeeze(y)

然后y的形状为 (50000,)

最新更新