我试图运行下面给出的代码,但是不幸的是,我收到以下错误-“ 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
答案 0 :(得分:1)
我也遇到了同样的错误-这是torchvision版本控制问题。
在当前版本的Torchvision(0.4.0)中,数据集x和y属性称为“数据”和“目标”。
在先前版本的Torchvision(0.3.0)中,数据集x和y属性称为“ train_data”和“ train_labels”,或“ test_data”和“ test_labels”(取决于您指定要加载的属性) 。
要修复代码,请使用最新的Torchvision或将其更改为使用以前版本的属性名称。
答案 1 :(得分: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