在Google Colab使用PyTorch加载CelebA数据集出现语法错误求助
错误定位
- 语法错误的核心原因是
transforms.Compose()的括号未闭合:你在定义transform变量时,只写了Compose(的左小括号和内部列表的左中括号[,写完所有变换操作后遗漏了列表的右中括号]和Compose的右小括号),Python解析器会把下一行的dataset定义识别为transform赋值语句的一部分,因此抛出语法错误。 - 额外注意:你设置的
batch_size = 50000数值过大,普通消费级显卡的显存无法承载这么大的批量,后续训练时建议调整为32/64/128等常规数值。
修复后的完整代码
import torchvision from torchvision.datasets import ImageFolder from torch.utils.data import DataLoader from torchvision import transforms # 数据集根目录 data_root = 'data/celeba' # 训练图片的空间尺寸,图片会被Resize到该大小 image_size = 64 # 批量大小,可根据自身显存容量调整 batch_size = 64 transform=transforms.Compose([ transforms.Resize(image_size), transforms.CenterCrop(image_size), transforms.ToTensor(), transforms.Normalize(mean=[0.5, 0.5, 0.5],std=[0.5, 0.5, 0.5]) ]) dataset = ImageFolder(data_root, transform) # 可按需创建DataLoader加载数据 dataloader = DataLoader(dataset, batch_size=batch_size, shuffle=True, num_workers=2)
补充优化建议
如果你的CelebA是官方原始目录结构,也可以直接使用PyTorch内置的torchvision.datasets.CelebA类加载,不需要手动整理成ImageFolder要求的分类子目录结构,调用更便捷。
内容的提问来源于stack exchange,提问作者user15087536
相关产品推荐
相关产品推荐

