在Python 3.7中,“迭代器”对象没有“next”属性。

3
我正在尝试迭代我的数据集并获取第一个元素。
    transform = transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.5),(0.5)),])
    trainloader = datasets.MNIST('~/.pytorch/MNIST_data' , download=True,train=True , transform=transform)
    ds = iter(trainloader)
    img, labels = ds.next()

但是它返回了这个错误。
    AttributeError: 'iterator' object has no attribute 'next'

我也尝试过这个方法

    img , labels = next(ds)

返回此错误

    StopIteration:

我有什么遗漏吗?

MNIST类实现了__getitem__方法。所以为什么不直接使用trainloader[0]来获取第一个项目呢? - undefined
2个回答

4

2
如果你按照https://pytorch.org/tutorials/beginner/blitz/cifar10_tutorial.html上的教程,就可以学习it技术。请注意,这篇文章需要润色,使其更易懂,并保留HTML标签。
trainset = torchvision.datasets.CIFAR10(root='./data', train=True,
                                        download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=4,
                                          shuffle=True, num_workers=2)

dataiter = iter(trainloader)
images, labels = dataiter.next()

您的数据集中缺少DataLoader()函数。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接