我在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))
])
答案 0 :(得分:6)
mean
的{{1}}和std
的值不是所需的均值和标准差,而是要减去和除以的值,即估计均值和标准差。
在您的示例中,您减去0.5,然后除以0.5,得到的图像的平均值为零,值的范围为[-1,1]
答案 1 :(得分:1)
Shai回答,
类似于训练其他神经网络,我们将GAN输入归一化为(1)改善网络的收敛性;(2)为所有特征赋予均等的值范围,以免由于某些特征的广泛性而使某些特征支配其他特征值。
此外,大多数GAN模型中的生成器都倾向于使用tanh函数作为最终激活,从而将输出映射到[-1,1]值范围。将我们的图像数据缩放到相同的值范围将为鉴别器提供相等的数据