Python 在PyTorch教程中,`images,labels=dataiter.next()`如何工作?
在本教程中,如何分配图像、标签Python 在PyTorch教程中,`images,labels=dataiter.next()`如何工作?,python,machine-learning,pytorch,Python,Machine Learning,Pytorch,在本教程中,如何分配图像、标签 trainset = torchvision.datasets.CIFAR10(root='./data', train=True, download=True, transform=transform) trainloader = torch.utils.data.DataLoader(trainset, batch_size=4,
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)
def imshow(img):
img = img / 2 + 0.5 # unnormalize
npimg = img.numpy()
plt.imshow(np.transpose(npimg, (1, 2, 0)))
# get some random training images
dataiter = iter(trainloader)
images, labels = dataiter.next()
最后一行如何知道如何在images,labels=dataiter.next()中自动分配images,label
我检查了DataLoader
类和DataLoaderIter
类,但我认为我需要更多地了解iters的一般知识。我认为理解iterable和迭代器之间的区别至关重要。iterable是可以迭代的对象。迭代器是一个对象,用于使用返回对象下一项的uuu next_uu_uuu方法在iterable对象上进行迭代
下面是一个简单的例子。考虑一个迭代,并使用下一个方法调用列表中的下一个项目。这将打印下一项,直到到达列表末尾。如果到达终点,将引发StopIteration错误
test = (1,2,3)
tester = iter(test)
while True:
nextItem = next(tester)
print(nextItem)
上面提到的类可能有类似的实现,但是它返回一个包含图像和标签的元组