【pytorch】为什么 ToTensor 后紧接 Normalize 操作?
学习 pytorch 的 transforms 一节中产生疑问:ToTensor
操作中图像数据满足 [0,255] 条件会进行线性归一化,映射到 [0,1]。在 ToTensor
操作后一般紧接着 Nomalize
操作,又进行了一次标准差归一化。既然已经归一化了一次,为什么还要再来一次?
以下是我在网络上找到的一些答案:
- 数据如果分布在 (0,1) 之间,可能实际的 bias,就是神经网络的输入b会比较大,而模型初始化时b=0的,这样会导致神经网络收敛比较慢,经过
Normalize
后,可以加快模型的收敛速度。
注:该回答是网络上一搜几乎就有的回答。
- 如果输入层 x 很大,在反向传播时候传递到输入层的梯度就会变得很大。梯度大,学习率就得非常小,否则会越过最优。在这种情况下,学习率的选择需要参考输入层数值大小,而直接将数据归一化操作,能很方便的选择学习率。一般归一化还会做减去均值除以方差的操作, 这种方式可以移除图像的平均亮度值 (intensity)。很多情况下我们对图像的亮度并不感兴趣,而更多地关注其内容,比如在目标识别任务中,图像的整体明亮程度并不会影响图像中存在的是什么物体。此时,在每个样本上减去数据的统计平均值可以移除共同的部分,凸显个体差异。
注:此为知乎作者【卓不凡】回答,链接:https://www.zhihu.com/question/293640354/answer/2078956333。
我自己尝试了下,确实图像亮度下降,移除了无关紧要的纹理,凸显了蚂蚁的主要特征。
本文来自博客园,作者:hzyuan,转载请注明原文链接:https://www.cnblogs.com/hzyuan/p/17368231.html
分类:
ai / pytorch
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)