为啥在图像分类的预处理步骤中按样本在 -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 之间缩放像素的主要内容,如果未能解决你的问题,请参考以下文章

如何在SAS中按十年分类日期

为啥sklearn kNN分类器运行得这么快,而我的训练样本和测试样本的数量很大

KNN-分类算法

在 OpenCV 中训练级联分类器的负样本图像尺寸?

分类器

为啥在卷积神经网络中使用 ReLU 作为激活单元?