通过转换将通道添加到 MNIST?

Add channel to MNIST via transform?

我正在尝试使用来自 torchvision.datasets 的 MNIST 数据集。它似乎是作为 N x H x W (uint8)(批量维度、高度、宽度)张量提供的。所有用于处理图像的 pytorch 类(例如 Conv2d) however require a N x C x H x W (float32) tensor where C is the number of colour channels. I've tried to add add the ToTensor 转换但没有添加颜色通道。

有没有办法使用 torchvision.transforms 添加这个额外的维度?对于原始 tensor 我们可以只做 .unsqueeze(1) 但这看起来不是一个非常优雅的解决方案。我只是想按照 "proper" 的方式去做。

这是失败的转换。

import torchvision
dataset = torchvision.datasets.MNIST("~/PyTorchDatasets/MNIST/", train=True, transform=torchvision.transforms.ToTensor(), download=True)
print(dataset.train_data[0])

我有一个误解:dataset.train_data不受影响的指定transform,只有一个DataLoader(dataset,...)的输出会受到影响。从

检查data
for data, _ in DataLoader(dataset):
    break

我们可以看到 ToTensor 实际上做了我们想要的。