为啥在图像分类的预处理步骤中按样本在 -1 和 1 之间缩放像素
Posted
技术标签:
【中文标题】为啥在图像分类的预处理步骤中按样本在 -1 和 1 之间缩放像素【英文标题】:Why scale pixels between -1 and 1 sample-wise in the preprocess step for image classification为什么在图像分类的预处理步骤中按样本在 -1 和 1 之间缩放像素 【发布时间】:2018-06-13 04:38:12 【问题描述】:在下面链接中的 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 和 1 之间的归一化旨在使数据的平均值为 0,std_dev 为 1。(即正态分布)。此外,网络中使用的激活函数的选择决定了归一化的类型,尤其是在使用批量归一化时。
例如,如果使用 sigmoid 并且在 0 和 1 之间进行归一化,则从网络获得的所有负值(将权重与输入相乘,然后添加偏差)将映射为零. (这会在反向传播期间导致更多的梯度消失)
而 tanh 和介于 -1 和 1 之间的归一化,这些负值将映射到 0 和 -1 之间的相应负值。
tanh 通常是卷积网络和 GAN 中使用的激活函数,优于 Sigmoid。
“Tanh。tanh 非线性显示在右上图。它将实数值压缩到范围 [-1, 1]。与 sigmoid 神经元一样,它的激活饱和,但与sigmoid 神经元的输出是零中心的。因此,在实践中,tanh 非线性总是优于 sigmoid 非线性。来自臭名昭著的 Andrej Karpathy 课程cs231n.github.io/neural-networks-1
【讨论】:
在您自己的答案中添加这样的 cmets 没有多大意义;改为编辑和更新您的帖子。以上是关于为啥在图像分类的预处理步骤中按样本在 -1 和 1 之间缩放像素的主要内容,如果未能解决你的问题,请参考以下文章