python - 为什么 MNIST 图像是 1x28x28 张量?

标签 python machine-learning pytorch mnist

我将 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)。 下面是可视化尺寸的图片: enter image description here

来源:https://commons.wikimedia.org/wiki/File:RGB_channels_separation.png

所以你看,对于黑白图像,你只需要一个 channel 。 通常您可以忽略 1 维,但 pytorch 需要 channel 维度。

关于python - 为什么 MNIST 图像是 1x28x28 张量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65202011/

相关文章:

python - 为 Pyramid Web 应用程序编写文档测试,该应用程序取决于 ini 文件中的设置

python - 由于 'icu-config' 无法安装 pyicu

python - 具有依赖于训练特征的自定义评分器的 Scikit-learn 分类器

python - 使用 Numpy 的最小二乘法进行线性回归后的奇怪图

python - 应用 PyTorch CrossEntropy 方法进行多类分割

python - 以编程方式检查网站的 SSL 证书是否过期

python - 我应该如何在 __init__ 中定义一个依赖协程的变量?

machine-learning - 在 Keras 中使用 Google MobileNets?

python - PyTorch 中的 LSTM 分类名称

docker - 在 docker 容器内使用 GPU - CUDA 版本 : N/A and torch. cuda.is_available 返回 False