pytorch中自定义数据集的数据预处理(transform.Normalize)

Mo-*_*ang 2 python dataset conv-neural-network pytorch

我是 Pytorch 和 CNN 的新手。我对数据预处理有点困惑。不确定如何进行转换。标准化数据集(本质上,您如何计算自定义数据集的均值和标准差?)

我正在使用 ImageFolder 加载我的数据。图像大小不一。

train_transforms = transforms.Compose([transforms.Resize(size=224),
                                       transforms.ToTensor(),  transforms.Normalize((?), (?))
                                       ])
train_dataset = datasets.ImageFolder(root='roota/',
                                     transform=train_transforms)
Run Code Online (Sandbox Code Playgroud)

Mon*_*ter 5

如果您打算从头开始训练网络,则可以计算数据集的统计数据。数据集的统计数据是预先计算的。您可以使用ImageFolder循环遍历图像来计算数据集统计信息。例如,伪代码——

for inputs, labels in dataloaders:
    # Calculate mean and std dev 
    # save for later processing
Run Code Online (Sandbox Code Playgroud)

通常,CNN 会使用其他较大的数据集(例如 Imagenet)进行预训练,主要是为了减少训练时间。如果您使用的是预训练网络,则可以使用原始数据集的均值和标准差进行训练。