python pytorch自定义_尝试在Pytorch中加载自定义数据集

本文档描述了作者在PyTorch中使用ImageFolder加载自定义图像数据集时遇到的问题,主要涉及数据预处理、数据加载器的设置。作者的代码尝试从imgs和tests文件夹加载训练和测试图像,但遇到了TypeError,提示迭代器不可迭代。问题出在dataiter.next()的调用上,可能是因为DataLoader没有正确初始化。
摘要由CSDN通过智能技术生成

我刚开始使用PyTorch,不幸的是,在使用我自己的训练/测试图像数据集进行自定义算法时,我有点困惑。首先,我正在制作一个小型的“hello world”风格的卷曲衬衫/袜子/裤子分类网络。我只加载了一些图像,只是确保PyTorch可以加载它们并将它们正确地转换为32x32可用的图像。我的ImageFolder设置如下:imgs/socks/sockimages.jpeg

imgs/pants/pantsimages.jpeg

imgs/shirt/shirtimages.jpeg

和一个类似的设置为我的测试图像文件夹。根据我目前的知识,PyTorch中内置的图像加载器应该从训练/测试图像中的子文件夹名称中读取标签。然而,我得到了一个TypeError抱怨我的迭代器不可迭代。这是我的代码和错误:import torch

import torchvision

import torchvision.datasets as dset

import torchvision.transforms as transforms

transform = transforms.Compose(

[transforms.ToTensor(),

transforms.Scale((32,32)),

transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])

trainset = dset.ImageFolder(root="imgs",transform=transform)

trainloader = torch.utils.data.DataLoader(trainset, batch_size=4,shuffle=True, num_workers=2)

testset = dset.ImageFolder(root='tests',transform=transform)

testloader = torch.utils.data.DataLoader(testset, batch_size=4,shuffle=True, num_workers=2)

classes=('shirt','pants','sock')

import matplotlib.pyplot as plt

import numpy as np

# functions to show an image

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()

# show images

imshow(torchvision.utils.make_grid(images))

# print labels

print(' '.join('%5s' % classes[labels[j]] for j in range(4)))

错误:TypeError: 'builtin_function_or_method' object is not iterable

它表示它引用了包含dataiter.next()的行,这意味着编译器认为我不能迭代dataiter?

请帮忙!提前谢谢你

——大卫·希尔曼,PyTorch的新成员

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值