MNIST 对象没有属性数据

MNIST object has no attribute data

我正在尝试 运行 下面给出的代码,但不幸的是我收到以下错误 - "MNIST object has no attribute data"。错误是因为行 "mnist_train_set.data.view(-1, 1, 28, 28).float()"。有人可以阐明如何解决这个问题吗?谢谢。

import torch
from torchvision import datasets

...

mnist_train_set = datasets.MNIST(data_dir + '/mnist/', train = True, download = True)
mnist_test_set = datasets.MNIST(data_dir + '/mnist/', train = False, download = True)

train_input = mnist_train_set.data.view(-1, 1, 28, 28).float()
train_target = mnist_train_set.targets
test_input = mnist_test_set.data.view(-1, 1, 28, 28).float()
test_target = mnist_test_set.targets

我 运行 遇到了同样的错误 - 这是 torchvision 版本控制问题。

在当前版本的 torchvision (0.4.0) 中,数据集 x 和 y 属性称为 "data" 和 "targets"。

在之前版本的 torchvision (0.3.0) 中,数据集 x 和 y 属性被称为 "train_data" 和 "train_labels",或者 "test_data" 和 "test_labels" (取决于您指定要加载的)。

要修复您的代码,请使用最新的 torchvision 或将其更改为使用以前版本的 属性 个名称。

这里是解决方案:代替 data 使用 train_data for train_input, train_labels 对于 train_target,test_data 对于 test_input,test_labels 对于 test_target。我 运行 以下代码没有错误。

train_input = mnist_train_set.train_data.view(-1, 1, 28, 28).float()
train_target = mnist_train_set.train_labels
test_input = mnist_test_set.test_data.view(-1, 1, 28, 28).float()
test_target = mnist_test_set.test_labels