2

我正在尝试使用 MNIST 数据集。torchvision.datasets它似乎是作为N x H x W (uint8)(批量尺寸、高度、宽度)张量提供的。然而,所有用于处理图像的 pytorch 类(例如Conv2d)都需要一个N x C x H x W (float32)张量,其中C是颜色通道的数量。我尝试添加添加ToTensor变换,但没有添加颜色通道。

有没有办法torchvision.transforms用来添加这个额外的维度?对于 rawtensor我们可以做.unsqueeze(1),但这看起来不是一个非常优雅的解决方案。我只是想以“正确”的方式来做。

这是失败的转换。

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

1 回答 1

1

I had a misconception: dataset.train_data is not affected by the specified transform, only the output of a DataLoader(dataset,...) will be. After checking data from

for data, _ in DataLoader(dataset):
    break

we can see that ToTensor actually does exactly what is desired.

于 2019-02-15T10:45:31.940 回答