pytorch 观看youtube上训练CNN分类器的视频,无法理解这行与归一化相关的代码

rdlzhqv9  于 2023-03-30  发布在  其他
关注(0)|答案(1)|浏览(115)

代码可以在这里找到:https://github.com/gaurav67890/Pytorch_Tutorials/blob/master/cnn-scratch-training.ipynb
密码是64号牢房

#Transforms
transformer=transforms.Compose([
    transforms.Resize((150,150)),
    transforms.RandomHorizontalFlip(),
    transforms.ToTensor(),  #0-255 to 0-1, numpy to tensors
    transforms.Normalize([0.5,0.5,0.5], # 0-1 to [-1,1] , formula (x-mean)/std
                        [0.5,0.5,0.5])
])

为什么我们需要对图像Tensor进行归一化?为什么我们要传递参数[0.5,0.5,0.5],[0.5,0.5,0.5]?

mi7gmzs6

mi7gmzs61#

规范化做了两件事。它限制了数据范围并降低了偏斜度。这通常会改善ML算法的学习。在这个例子中,数据范围不一定需要,因为范围已经是

[0,-1]

所以你的第一个问题的答案是。我们归一化,使数据更平滑,并将其带入[-1,1]范围。
参数[0.5,0.5,0.5],[0.5,0.5,0.5]分别是三个通道中每个通道的平均值和标准差。您也可以根据输入图像计算它们,但似乎这一步被简化了。

相关问题