Pytorch深度学习:TypeError: 'builtin_function_or_method' object is not iterable 报错解决
在用Pytorch做图像分类的时候,遇到了这个BUG,因为这段代码和网上例子一样仍报错,所以很奇怪。现将解决方案记录分享TypeError: 'builtin_function_or_method' object is not iterable先贴上我报错部分和相关代码import torchimport torch.utils.data as Dataimport tor...
·
在用Pytorch做图像分类的时候,遇到了这个BUG,因为这段代码和网上例子一样仍报错,所以很奇怪。现将解决方案记录分享
TypeError: 'builtin_function_or_method' object is not iterable
先贴上我报错部分和相关代码
import torch
import torch.utils.data as Data
import torchvision
from torchvision import transforms, datasets
# hyper parameters
BATCH_SIZE = 8
path = "DogsVSCats"
# define the data transform
data_transform = transforms.Compose([
transforms.ToTensor(), # change the pixel to [0, 1.0]
transforms.CenterCrop(224),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
])
# define the data set in dictionary form
image_data = {x:datasets.ImageFolder(root=os.path.join(path, x), transform=data_transform)
for x in ['train', 'valid']}
# define the data loader
data_loader = {x:Data.DataLoader(dataset=image_data[x], batch_size=BATCH_SIZE, shuffle=True)
for x in ['train', 'valid']}
# preview a batch of data in data set
# x_example, y_example = next(iter(data_loader['train']))
x_train, y_train = next(iter(data_loader["train"]))
print("x_example个数:", len(x_train))
print("y_example个数:", len(y_train))
报错的是这行(倒数第三行)
x_train, y_train = next(iter(data_loader["train"]))
多次检查和上网查询后认定这段代码应该没有错,所以造成报错的应该是前面定义data_loader相关的部分。和网上一些其他正常的代码比对后发现是transform的问题。
在定义transform时,一定要先调整图片大小,再ToTensor ()!
修改后的部分如下,调整了CenterCrop()和ToTensor()的顺序
# define the data transform !!!参数顺序很重要!!!先调整大小再ToTensor
data_transform = transforms.Compose([
transforms.CenterCrop(224),
transforms.ToTensor(), # change the pixel to [0, 1.0]
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
])
更多推荐
已为社区贡献1条内容
所有评论(0)