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

PyTorch处理MNIST数据集触发AttributeError属性错误该如何解决

问题原因

torchvision 0.2.0及之后的版本对MNIST类的内部属性做了两处调整:

  • 原train_data/test_data属性被重命名为data,原train_labels/test_labels被重命名为targets,旧属性名仅作为只读别名保留
  • 旧属性名被设置为@property装饰的只读属性,直接对train_data赋值会触发属性不可修改的报错
解决方法

方案1:替换属性名(最快适配)

将修改数据集的代码里的train_data替换为官方公开的可修改属性data即可:

mnist_data.data = (mnist_data.data.type(torch.FloatTensor)/255).bernoulli()

方案2:通过Transform实现逻辑(更符合PyTorch规范)

不需要修改数据集内部属性,直接在初始化时的Transform序列里增加伯努利采样逻辑即可,transforms.ToTensor()已经默认完成了除以255的数值缩放:

mnist_data = datasets.MNIST('../data', train=True, download=True,
                    transform=transforms.Compose(
                    [transforms.ToTensor(),
                     transforms.Normalize((0.1307,), (0.3081,)),
                     transforms.Lambda(lambda x: x.bernoulli())
                    ]))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 12:24:02