You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用DCGAN训练斯坦福狗狗数据集时张量尺寸不匹配如何解决

错误原因

这个报错是斯坦福狗狗数据集中原始图像宽高比不统一导致的,你当前的数据预处理流程没有将所有图像调整为完全相同的尺寸,因此DataLoader拼接batch时张量维度不匹配,问题出在数据加载的预处理环节,而非训练for循环逻辑。

修复步骤

1. 调整数据变换配置

你可以根据需求选择以下任意一种预处理方案,强制所有输出图像尺寸一致:

  • 方案一:强制缩放(实现简单,训练速度快,可能存在轻微图像拉伸)
    注意transforms.Resize要传入宽高组成的元组,不要只传单个整数(单个整数仅会将短边缩放到对应长度,长边按原始比例缩放,仍会出现尺寸不一致问题)。示例代码:
    from torchvision import transforms
    
    # DCGAN默认输入尺寸为64*64,可根据需求调整
    transform = transforms.Compose([
        transforms.Resize((64, 64)),
        transforms.ToTensor(),
        transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
    ])
    
  • 方案二:缩放后裁剪(保留原始图像比例,避免拉伸变形)
    先将图像短边缩放到目标尺寸,再裁剪中心区域作为训练输入:
    transform = transforms.Compose([
        transforms.Resize(64),
        transforms.CenterCrop(64),
        transforms.ToTensor(),
        transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
    ])
    

2. 验证数据加载逻辑

修改完成后可以先运行以下代码验证输出尺寸是否统一:

from torchvision.datasets import ImageFolder
from torch.utils.data import DataLoader

# 注意路径对应你存放数据集的./data目录
dataset = ImageFolder(root="./data", transform=transform)
dataloader = DataLoader(dataset, batch_size=8, shuffle=True)

for imgs, _ in dataloader:
    print(imgs.shape)
    break

正常输出应为torch.Size([8, 3, 64, 64]),确认所有样本尺寸一致后即可正常运行训练代码。

内容的提问来源于stack exchange,提问作者AMendis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 14:51:03