MNIST,Torchvision中的输出和广播形状不匹配

Jib*_*hew 1 python mnist pytorch torchvision

在Torchvision中使用MNIST数据集时出现以下错误

RuntimeError: output with shape [1, 28, 28] doesn't match the broadcast shape [3, 28, 28]
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

import torch
from torchvision import datasets, transforms

transform = transforms.Compose([transforms.ToTensor(),
                            transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)),
                          ])
trainset = datasets.MNIST('~/.pytorch/MNIST_data/', download=True, train=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=64, shuffle=True)
images, labels = next(iter(trainloader))
Run Code Online (Sandbox Code Playgroud)

Jib*_*hew 11

该错误是由于数据集上的颜色与灰度的关系,数据集是灰度的。

我通过将transform更改为

transform = transforms.Compose([transforms.ToTensor(),
  transforms.Normalize((0.5,), (0.5,))
])
Run Code Online (Sandbox Code Playgroud)

  • transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)), 3 个值意味着 3 个通道,但是对于 mnist 只有 1 个通道,因此 transforms.Normalize((0.5,), (0.5,) ) (3认同)