1

我正在尝试运行下面给出的代码,但不幸的是我收到以下错误-“MNIST 对象没有属性数据”。错误是因为“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
4

2 回答 2

3

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

在当前版本的 torchvision (0.4.0) 中,数据集的 x 和 y 属性称为“数据”和“目标”。

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

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

于 2019-10-16T12:35:38.517 回答
1

这是解决方案:而不是数据使用train_data用于 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
于 2020-01-24T17:09:50.857 回答