【pytorch】为什么 ToTensor 后紧接 Normalize 操作?

学习 pytorch 的 transforms 一节中产生疑问:ToTensor 操作中图像数据满足 [0,255] 条件会进行线性归一化,映射到 [0,1]。在 ToTensor 操作后一般紧接着 Nomalize 操作,又进行了一次标准差归一化。既然已经归一化了一次,为什么还要再来一次?

以下是我在网络上找到的一些答案:

  1. 数据如果分布在 (0,1) 之间,可能实际的 bias,就是神经网络的输入b会比较大,而模型初始化时b=0的,这样会导致神经网络收敛比较慢,经过 Normalize 后,可以加快模型的收敛速度。

注:该回答是网络上一搜几乎就有的回答。

  1. 如果输入层 x 很大,在反向传播时候传递到输入层的梯度就会变得很大。梯度大,学习率就得非常小,否则会越过最优。在这种情况下,学习率的选择需要参考输入层数值大小,而直接将数据归一化操作,能很方便的选择学习率。一般归一化还会做减去均值除以方差的操作, 这种方式可以移除图像的平均亮度值 (intensity)。很多情况下我们对图像的亮度并不感兴趣,而更多地关注其内容,比如在目标识别任务中,图像的整体明亮程度并不会影响图像中存在的是什么物体。此时,在每个样本上减去数据的统计平均值可以移除共同的部分,凸显个体差异

注:此为知乎作者【卓不凡】回答,链接:https://www.zhihu.com/question/293640354/answer/2078956333。

我自己尝试了下,确实图像亮度下降,移除了无关紧要的纹理,凸显了蚂蚁的主要特征。

posted @   hzyuan  阅读(161)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)

喜欢请打赏

扫描二维码打赏

支付宝打赏

点击右上角即可分享
微信分享提示