前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pytorch基础知识-Batch Norm(上)

pytorch基础知识-Batch Norm(上)

作者头像
用户6719124
发布2019-11-23 08:39:50
8490
发布2019-11-23 08:39:50
举报
文章被收录于专栏:python pytorch AI机器学习实践

Batch Normalization(批量标准化)是深度学习中经常使用的,本节介绍它的定义和用法。

首先在sigmoid函数中,

在x轴达到>4和<-4区间后,便会达到一个很大的空间,其导数会接近于零,使得loss一直得不到更新,发生梯度离散现象。因此ReLU使用的较多。

但在某些场合不可避免的要去使用Sigmoid函数,希望将有效的值控制在有限区间内。因此即将Avtivation inputs值在导入到Sigmoid函数前,先进行一个等效的变换,使这些值均匀的分布在0到正负1附近,这样在进行后续优化时会更加的方便。

为更好的进行理解,可看下图演示

如上左侧图可见,(1、2...)的输入和(100、200...)的输入会对后续函数求导过程造成极大的波动和更多的曲折变换。而上右侧图的求导Loss的过程则会变换的较平缓。

到这里可体会到Batch Norm本质上为权值缩放,将输入的数据的大小集中到(0,1)附近,以便于后续求导。

Batch Norm较多的应用于两个方面:(1)Image Normalization;如对RGB三通道进行Normalization,将数据统一化

代码语言:javascript
复制
normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406],                                 std=[0.229, 0.224, 0.225])# 后人在大量的研究中发现,对于RGB通道,他们的三个均值更适宜于采用上述取值# 他们总体上仍在0.5附近左右# 同时在大量实践中得到了最稳定的方差值# 因此R通道为:(XR - 0.485)/0.229, (XG - 0.456)/0.224....

另外一个更广泛的应用是在 Batch Normalization。

Batch Normalization现在有四种用法,

假设一个数据集写为[batch, channel, height, width],这里为更好的理解,取为6张图片、3个通道、28*28的大小。变为[6, 3, 784]。

在上图的最左侧图,将6和784进行normalize,变为channel_0的均值+channel_1的均值+channel_3的均值...。将[6, 3, 784]变为[3],即shape为3的统计数据,意为当前的batch为3(3个channel),将原来的batch和feature上的维度消掉。

同理,后续的Layer Norm将[6, 3, 784]变为[6]。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python pytorch AI机器学习实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
批量计算
批量计算(BatchCompute,Batch)是为有大数据计算业务的企业、科研单位等提供高性价比且易用的计算服务。批量计算 Batch 可以根据用户提供的批处理规模,智能地管理作业和调动其所需的最佳资源。有了 Batch 的帮助,您可以将精力集中在如何分析和处理数据结果上。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档