为什么我们将图像归一化为均值= 0.5,标准差= 0.5?

时间:2018-09-02 16:26:57

标签: python tensorflow deep-learning pytorch

我在Github中寻找GAN代码。我发现的代码使用pytorch。在此代码中,我们首先将图像标准化为均值= 0.5,标准差= 0.5。通常,将其归一化为min = 0和max = 1或正态分布的均值= 0和std =1。为什么将此归一化为均值= 0.5和std = 0.5?

transformtransfo  = transforms.Compose([
        transforms.ToTensor(),
        transforms.Normalize(mean=(0.5, 0.5, 0.5), std=(0.5, 0.5, 0.5))
])

2 个答案:

答案 0 :(得分:6)

mean的{​​{1}}和std的值不是所需的均值和标准差,而是要减去和除以的值,即估计均值和标准差。

在您的示例中,您减去0.5,然后除以0.5,得到的图像的平均值为零,值的范围为[-1,1]

答案 1 :(得分:1)

Shai回答,

类似于训练其他神经网络,我们将GAN输入归一化为(1)改善网络的收敛性;(2)为所有特征赋予均等的值范围,以免由于某些特征的广泛性而使某些特征支配其他特征值。

此外,大多数GAN模型中的生成器都倾向于使用tanh函数作为最终激活,从而将输出映射到[-1,1]值范围。将我们的图像数据缩放到相同的值范围将为鉴别器提供相等的数据