我将 28x28 像素图像的 MNIST 图像转换为张量
dataset = MNIST(root='data/', train=True, transform=transforms.ToTensor())
当我运行时
img_tensor, label = dataset[0]
print(img_tensor.shape, label)
它说形状是torch.Size([1, 28, 28])
。
为什么是 1x28x28?第一维是什么意思? 1x28x28 相对于 28x28 有什么意义?
最佳答案
被视为矩阵的图像始终具有 3 个维度: channel 、宽度和高度。 28
和 28
当然是宽度和高度。本例中的 1
是 channel 。那么 channel 是什么?每个像素都由三种颜色表示:红色、蓝色和绿色。对于每种颜色,您将有一个颜色 channel ,因此通常为 3 (RGB)。这使得图片尺寸为 (3, W, H)。那么为什么那里有一个 1 呢?由于 MNIST 图像是黑白的,因此不需要三个不同的颜色 channel 来表示最终颜色,一个 channel 就足够了,因此对于黑白图像,尺寸为 (1, W, H)。
下面是可视化尺寸的图片:
来源:https://commons.wikimedia.org/wiki/File:RGB_channels_separation.png
所以你看,对于黑白图像,你只需要一个 channel 。 通常您可以忽略 1 维,但 pytorch 需要 channel 维度。
关于python - 为什么 MNIST 图像是 1x28x28 张量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65202011/