通过转换将通道添加到 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
实际上做了我们想要的。
我正在尝试使用来自 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
实际上做了我们想要的。