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

9
我在Github上寻找GAN代码。我找到的代码使用PyTorch。在这段代码中,我们首先将图像归一化到平均值=0.5,标准差=0.5。通常,归一化为最小值=0和最大值=1,或者服从均值=0和标准差=1的正态分布。为什么要将其归一化为平均值=0.5和标准差=0.5?
transformtransfo  = transforms.Compose([
        transforms.ToTensor(),
        transforms.Normalize(mean=(0.5, 0.5, 0.5), std=(0.5, 0.5, 0.5))
])

规范化的核心原因是加快收敛速度。它可以在0-1或-1-1之间。据我所知,分享更多信息。 - Salih Karagoz
2个回答

13

transform.normalize中的meanstd不是所需的均值和标准差,而是要减去和除以的值,即估计出来的平均值和标准差。

例如,在您的示例中,您会先减去0.5,然后除以0.5,得到一个平均值为零,范围在[-1, 1]之间的图像。


1

在Shai的回答中补充一点,

与训练其他神经网络类似,我们对GAN的输入进行归一化处理,目的是(1)提高网络收敛性,(2)给所有特征相同的值范围,以避免某些特征因为数值范围过大而支配其他特征。

此外,在大多数GAN模型中,生成器通常使用tanh函数作为最终激活函数,将输出映射到[-1,1]的值范围。将图像数据缩放到相同的值范围将为鉴别器提供平等的数据进行训练。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接