很多人在处理mnist数据集时,看别人的代码都会看到这么一串数字:
其中,0.1307和0.3081是mnist数据集的均值和标准差,因为mnist数据值都是灰度图,所以图像的通道数只有一个,因此均值和标准差各一个。要是imagenet数据集的话,由于它的图像都是RGB图像,因此他们的均值和标准差各3个,分别对应其R,G,B值。例如([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])就是Imagenet dataset的标准化系数(RGB三个通道对应三组系数)。数据集给出的均值和标准差系数,每个数据集都不同的,都是数据集提供方给出的。
transforms.Normalize(mean,std)的计算公式是:
如若输入的值都在0~1中,通过 transforms.Normalize((0.5,0.5,0.5),(0.5,0.5,0.5))
那么就变成((0,1)-0.5))/0.5=(-1,1)。
为什么要进行标准化?
请参考:https://blog.csdn.net/xylin1012/article/details/81217988