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

使用torchvision.transforms.Lambda自定义函数时程序卡顿求助

解决CIFAR10带噪声DataLoader迭代卡顿的问题

首先修正噪声添加逻辑(核心错误)

你的my_norm函数完全替换了原始图像数据,既不符合"给图像加噪声"的需求,也可能引发数据加载异常。正确的噪声添加逻辑应该是将噪声叠加到原始图像上,并保持图像像素范围在[0,1](ToTensor()会将图像转为0-1区间的张量):

def add_noise(x):
    # 生成与原始图像同形状的高斯噪声,控制噪声幅度
    noise = 0.1 * torch.randn_like(x)
    # 叠加噪声后限制在图像有效像素范围
    return torch.clamp(x + noise, 0.0, 1.0)

解决DataLoader卡顿的具体调整

  • 调整num_workers参数
    在Jupyter Notebook中,num_workers>0常因子进程管理问题导致卡顿或死锁(尤其Windows系统)。先设置num_workers=0测试:

    trainloader_noised = torch.utils.data.DataLoader(trainset_noised, batch_size=64, shuffle=False, num_workers=0)
    testloader_noised = torch.utils.data.DataLoader(testset_noised, batch_size=64, shuffle=False, num_workers=0)
    

    若需多进程加载,确保环境支持且num_workers不超过CPU核心数的一半。

  • 优化张量操作效率
    用torch.randn_like(x)替代torch.randn(x.shape),它会直接复用输入张量的设备和形状信息,操作更高效。

  • 先验证单样本加载
    单独测试单个样本的加载逻辑,排除transform函数的问题:

    sample, label = trainset_noised[0]
    print(sample.shape, sample.min(), sample.max())
    

    若这一步就卡顿,优先排查transform函数逻辑。

  • 清理Jupyter后台资源
    暂时关闭代码补全等后台服务,或重启Kernel后重试,避免后台进程占用资源导致加载卡顿。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 20:40:10