为什么要在图像分类的预处理步骤中按样本在 -1 和 1 之间缩放像素



在下面的链接中找到的preprocess_input()函数中,像素在-1和1之间缩放。我也在其他地方看到过这个。在 -1 和 1 而不是 0 和 1 之间缩放的原因是什么。我的印象是像素的常见范围在 0-255 之间,或者如果归一化为 0-1。

https://github.com/keras-team/keras/blob/master/keras/applications/imagenet_utils.py

-1 和 1 之间的规范化旨在使数据的平均值为 0,std_dev为 1。(即正态分布)。此外,网络中使用的激活函数的选择决定了规范化的类型,尤其是在使用批量规范化时。

例如,如果使用sigmoid并且在 0 和 1 之间完成归一化,那么从网络获得的所有负值(将权重与输入相乘,然后添加偏差)将映射到零。(这会导致反向传播过程中更多的梯度消失)

而对于tanh和 -1 之间的归一化,这些负值将映射到 0 到 -1 之间的相应负值。

tanh通常是卷积网络和GAN中使用的激活函数,优于Sigmoid。

"啧啧。tanh 非线性显示在上图右侧。它将实值数字压缩到范围 [-1, 1]。像S形神经元一样,它的激活饱和,但与S形神经元不同,它的输出是零中心的。因此,在实践中,tanh非线性总是优于sigmoid非线性。 来自臭名昭著的Andrej Karpathy Course cs231n.github.io/neural-networks-1

最新更新