如何解读MNIST数据集生成的Tensor?关于形状与索引的疑问
问题解答
张量结构与索引逻辑说明
你的example_data形状为torch.Size([1000, 1, 28, 28]),这是PyTorch中图像张量的标准维度顺序:(样本数量, 通道数, 图像高度, 图像宽度)。
- 当你取
example_data[2]时,选中的是第3个样本(索引从0开始计数),此时这个子张量的形状是torch.Size([1, 28, 28])——它仍是一个3维张量,第一个维度对应通道数(MNIST是单通道灰度图,所以通道数为1)。 - 而
example_data[2][0]是在这个3维样本张量里,提取第0个通道(也就是唯一的灰度通道),此时得到的是torch.Size([28, 28])的2维张量,对应28行、每行28个像素值的图像矩阵,所以打印出来会是28个各含28个元素的一维数组。
说白了,加[0]是因为单个样本还带着通道维度,你需要去掉这个尺寸为1的维度,才能直接拿到图像的像素矩阵。你也可以用example_data[2].squeeze()替代example_data[2][0],squeeze()会自动移除所有尺寸为1的维度,结果同样是28×28的像素矩阵。
内容的提问来源于stack exchange,提问作者Little
相关产品推荐
相关产品推荐

