有这样的代码
#Тут мы загружаем датасет MNIST
(train_images, train_labels), (_, _) = keras.datasets.mnist.load_data()
#На выходе получаем пары вида "массив изображений цифры 0", 0
#"массив изображений цифры 1", 1 и так далее, вплоть до цифры 9
print(train_images.shape) - выводит (60000, 28, 28)
train_images = train_images.reshape(train_images.shape[0], 28, 28, 1).astype('float32')
print(train_images.shape) - выводит (60000, 28, 28, 1)
这些数字是什么意思?28x28 是 MNIST 图像本身的分辨率,这里一切都很清楚。
什么是60000?是数组长度 - 矩阵高度 - 图像总数吗?为什么我们要把这些转换成另一个矩阵,1 是什么意思呢?
我知道 reshape 将数组转换为新形状而不更改其数据,但我无法想象 (60000, 28, 28) 和 (60000, 28, 28, 1) 之间有什么区别,它看起来像什么? 它是用来做什么的?
(60000, 28, 28)
和之间的区别(60000, 28, 28, 1)
恰恰在于输入张量/矩阵的维度。四维张量维度中的最后一个数字通常负责颜色通道的数量。那些。在您的情况下,它是关于灰度图像,即 一个颜色通道。大多数情况下,在使用神经网络时,我们会使用现成且经过验证的 NN 架构。大多数情况下,此类架构期望输入某个维度的张量。在您的情况下 -
60000
是训练集中的样本/图片数量。这些图片中的每一张都有一个维度28x28x1
- 即 单色图片尺寸28x28
/