PyTorch ToTensor缩放至[0,1]偏差

2024-04-27 04:51:19 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我这样做

mnist_train = MNIST('../data/MNIST', download = True,
                transform = transforms.Compose([
                    transforms.ToTensor(),
                ]), train = True)

mnist_train.data.max()

为什么我得到255?我应该得到1,因为ToTensor()缩放到[0,1],对吗

如果我这样做:

for i in range(0, len(mnist_train)):
    print(mnist_train[i][0].max())

然后,我几乎得到了1

有人能帮我理解吗


Tags: composeintruefordatalendownloadtransform
1条回答
网友
1楼 · 发布于 2024-04-27 04:51:19

当你这样做的时候

mnist_train.data

PyTorch为您提供了mnist_traindata属性,该属性在this line上定义(当您创建MNIST实例时)。如果您在__init__中查看它前面的代码,则不会发生转换

奥托,当你这么做的时候

mnist_train[i]

对象的__getitem__方法被触发,您可以找到here。在这个方法中transform有一个if语句,因此现在就可以得到转换后的版本

由于一种常见用法是通过torch.utils.data.DataLoader使用这个MNIST数据集(或任何其他数据集),并且它调用这个__getitem__,因此我们得到了规范化的值

相关问题 更多 >