如何将 CIFAR-10 作为 MLP 的输入

数据挖掘 机器学习 神经网络 喀拉斯
2022-02-18 12:24:52

我是机器学习方面的菜鸟,并尝试按照本教程机器学习精通教程使用 keras 构建分类器

我想构建一个基于 MLP 的分类器,就像在MNIST 分类中使用 MLP对 CIFAR-10 数据集进行分类一样。就像在 MNIST 数据集中,将 28*28 图像转换为 784 向量作为神经网络的输入。同样,我应该如何将 CIFAR-10 中的数据以 36*36 像素 rgb 值更改为数组?或者我应该制作什么类型的数组作为 MLP 网络的输入?

1个回答

MNIST 有 28x28 像素的灰度图像,所以有28×28=784每个图像的特征。

CIFAR10 包含 32x32 像素的彩色图像。乍一看似乎只有32×32=1024每个图像的特征,但是图像中有红色、蓝色和绿色通道,这意味着每张图像实际上是3×32×32=3072特征。

通常,这些通道排列为三个独立的 32x32 像素图像,而不是具有 RGB 像素的单个 32x32 图像。在 keras 中,您可以像这样加载 CIFAR10 数据集:

from keras.datasets import cifar10

(x_train, y_train), (x_test, y_test) = cifar10.load_data()

但是,这将加载形状中的训练和测试数据集(num_samples, 3, 32, 32)为了将这些输入到 MLP 中,我们需要将通道和像素阵列展平以形成 shape 阵列(num_samples, 3072),就像 MNIST 一样。我们可以在 python 中这样做:

x_train = x_train.reshape(-1, 3072)
x_test = x_test.reshape(-1, 3072)