我正在尝试使用 Pytorch 的新代码。在这段代码中,为了加载数据集 (CIFAR10),我使用了 torchvision 的数据集。我定义了两个变换函数 ToTensor() 和 Normalize()。规范化后,我希望数据集中的数据应该在 0 和 1 之间。但最大值仍然是 255。我还在 transforms.py (Lib\site-packages\ torchvision\transforms\transforms.py)。运行代码时也不会打印此打印。不知道发生了什么。我在互联网上访问的每个页面都提到了几乎和我一样的用法。例如我访问过的一些网站 https://github.com/adventuresinML/adventures-in-ml-code/blob/master/pytorch_nn.py https://github.com/pytorch/tutorials/blob/master/beginner_source/blitz /cifar10_tutorial。
我的代码如下。这会读取带有和不带有 Normalize 的数据集,然后打印一些统计信息。打印的最小值和最大值是数据是否标准化的指标。
import torchvision as tv
import numpy as np
dataDir = 'D:\\general\\ML_DL\\datasets\\CIFAR'
trainTransform = tv.transforms.Compose([tv.transforms.ToTensor()])
trainSet = tv.datasets.CIFAR10(dataDir, train=True, download=False, transform=trainTransform)
print (trainSet.train_data.mean(axis=(0,1,2))/255)
print (trainSet.train_data.min())
print (trainSet.train_data.max())
print (trainSet.train_data.shape)
trainTransform = tv.transforms.Compose([tv.transforms.ToTensor(), tv.transforms.Normalize((0.4914, 0.4822, 0.4466), (0.247, 0.243, 0.261))])
trainSet = tv.datasets.CIFAR10(dataDir, train=True, download=False, transform=trainTransform)
print (trainSet.train_data.mean(axis=(0,1,2))/255)
print (trainSet.train_data.min())
print (trainSet.train_data.max())
print (trainSet.train_data.shape)
输出看起来像,
[ 0.49139968 0.48215841 0.44653091]
0
255
(50000, 32, 32, 3)
[ 0.49139968 0.48215841 0.44653091]
0
255
(50000, 32, 32, 3)
请帮助我更好地理解这一点。正如我尝试过的大多数功能一样,最终都会得到类似的结果——例如灰度、CenterCrop。