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

我将28×28像素的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的形状?第一个维度代表什么?与28×28相比,1x28x28有什么意义?


回答:

作为矩阵的图像通常有三个维度:通道、宽度和高度。当然,2828分别是宽度和高度。在这种情况下,1代表通道。那么什么是通道呢?每个像素由三种颜色表示:红色、蓝色和绿色。每种颜色对应一个颜色通道,因此通常有3个通道(RGB)。这使得图像的维度为(3, W, H)。那么为什么这里是1呢?因为MNIST图像是黑白的,因此不需要三种不同的颜色通道来表示最终颜色,一个通道就足够了,所以对于黑白图像,维度是(1, W, H)。下面有一张图片来可视化这些维度:enter image description here

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

所以你看,对于黑白图像,你只需要一个通道。通常你可以忽略这个1维度,但PyTorch要求有通道维度。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注