p-state coordination 设置,p state coordination sw_all

  p-state coordination 设置,p state coordination sw_all

  单击上面的3358www.Sina.com/,然后选择落后的月饼学视觉或3358www。Sina.com/.

  重型晾衣架,第一时间发货。

  编辑:转载自计算机视觉日

  33559 www .智

  本文仅供学术分享,如有侵权,将删除。

  BN放在ReLU前面还是后面?这个问题是AI面试中的高频问题。

  星标看网上的中文资料,基本上BN层放在非线性激活层之前。

  使用Python学习计算机服务有以下讨论。

  作者:关于智慧

  置顶

  在BN的原始论文中,BN被放在非线性有源层之前(arXiv:1502.03167v3,第5页)。

  http://www。Sina.com/the立即非线性(注:前面的黑体字是我加的,以强调重点))。

  但弗朗索瓦乔莱(Franois Chollet)透露,BN论文的作者之一克里斯蒂安把BN放在了ReLU后面(你提问中引用的文字也提到了这一段)。

  icancarantesetrectcodewritenbycristianappliesleubeforebn。此外,杰瑞米霍华德主张非线性激活后直接放置bn。

  Youtthebatchnormafternon非线性,和下降前。“应该”应该放在前面还是后面?这个“应该”其实有两种解释:

  Batch-normalized 应该放在非线性激活层的前面还是后面?

  https://www.zhihu.com/question/283715823/answer/438882036

  对于第一个问题,现在实际操作中,也有评论认为before亿在ReLU后更有效。

  关于第二个问题,其实我们目前对BN的机制还不是特别清楚,但这里只能尝试一些(形而上的)解释,不一定正确。

  bn(批处理规范化)这个名称使我们想起普通的规范化,即在输入传递到神经网络之前对其执行的规范化。这种标准化是在输入层之前对输入操作执行的。所以,从这个角度,想象一下,如果放在前面还是后面比较好?网络的一个隐层之前的所有网络层都被截断,那么这个隐层就是输入层,传递给它的输入需要在这些层之间进行归一化。这个位置是原始BN层的位置。从这个角度来看,非线性激活后的BN层是自然的。

  其次,考虑具体的激活函数。我们看到的甚至是tanh。

  还是乙状结肠?

  函数两端相对于x的变化,y的变化很小(这个其实很常见,tanh毕竟是拉长的sigmoid)。也就是说容易出现梯度衰减。那么在tanh和sigmoid之前,梯度衰减的问题可以通过几个归一化过程来缓解。我想这可能也是第一篇BN论文选择在非线性激活之前放置BN层的原因。

  但是,热鲁的画风和他们完全不同。

  其实最初的BN论文也用ReLU对Inception进行了实验,但首先研究的是sigmoid激活。所以我觉得之所以测试ReLU,可能是作者延续了之前把BN放在前面的配置,没有单独回应ReLU。

  总之,BN层的机制可能是平滑隐层输入的分布,帮助随机梯度下降的过程,减轻随机梯度下降权重更新对后续层的不利影响。所以,其实无论是在加入非线性激活之前还是之后,都可能起到这个作用。但根据具体激活功能的不同,效果可能会有所不同。(比如对于sigmoid和tanh,在非线性激活之前,sigmoid/tanh的梯度衰减可能会减轻,但是对于ReLU,这种平滑效果在被ReLU“扭曲”之后可能会减弱。

  作者:王超峰

  33559 www .智

  个人

  人的理解和@论智慧差不多。

  实验上,放后面更有效。为什么放在后面有效?谈谈我自己的理解。例如,这里有两层卷积:

  1、之前,conv1-bn1-ReLU1-conv2-bn2-ReLU2

  2、之后,conv1-ReLU1-bn1-conv2-ReLU2-bn2

  BN和普通数据归一化最大的区别是有两个参数,和,主要用于加速收敛和表示破坏之间的权衡。在初始阶段,数据归一化明显,因此网络可以快速收敛。至于为什么数据规范化可以加速收敛,这个博客解释的很好。详细说明请参考批量规范化。随着训练到中后期,这两个参数学得差不多的时候,主要用来恢复上输入分布。

  所以要理解这一点,上面两个结构的对角线加粗部分。1和2都相当于conv2的输入。从conv2的角度来看,Conv2的输入都是ReLU1之后的数据,但不同的是,1中的ReLU1截取了bn1归一化后的部分数据,因此很有可能归一化后的数据不再完全满足0均值和单位方差,而2中ReLU1之后的数据是归一化的,归一化后仍然满足0均值和单位方差。所以可以理解,放在后面更有效。

  以上纯属个人理解。其实你可以做这个实验。在1结构中加入一个BN,con v1-bn1-ReLU1-bn-conv2-bn2-rel U2,对截断的数据进行归一化,看是否比原来的1更有效。如果是,conv2更喜欢0均值和单位方差的分布~,不过我也没试过。我不知道我会不会被一拳打在脸上(~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~~

  作者:鲜响

  https://www.zhihu.com/question/283715823/answer/443733242

  在我见过的所有包含BN的网络结构中,BN排在ReLU之前。这里有一个解释。

  为了方便大家理解,我们先介绍一个简单的层:通道缩放(CS),这个层是我们在CVPR2018发表的论文《Person Re-identification with Cascaded Pairwise Convolutions》中提出的。CS层将每个输入通道乘以一个恒定的正系数作为输出。当CS层存在于卷积层之后,ReLU层之前时,我们认为CS层可以在网络训练过程中引导卷积权值为正,从而缓解零梯度问题。除了论文,具体解释也可以看下图。

  BN还可以解决零梯度问题。有两种方法。我们来直观定性的说一下:

  当滤波器的大部分响应值对于大部分输入特性图为负值时,会出现零梯度问题。卷积层后加BN层,BN层中滤波器对应通道的平均值为负,BN中平均值的降低会使相当一部分响应值变为正,从而解决零梯度问题。(在此讨论中忽略BN中的偏差和比例项)

  BN中的标度项被初始化为1,在训练过程中通常取正值,因此可以通过类似CS的方式缓解零梯度问题。事实上,如果标度项一直为负,零梯度的问题也可以通过类似于CS的方式来缓解。(在此讨论中忽略BN中的归一化计算)

  上面提到的两种方法具有缺陷,这使得具有BN的网络的训练不稳定(至少在我们的实验中):

  BN的均值和方差不是用随机梯度下降法训练的,而是按批次计数平均,受不同批次样本差异影响较大,在训练过程中可能出现较大波动或变化,从而影响网络功能。

  在训练过程中,BN层中标度项的值可能由正变负或由负变正,从而颠倒了相应通道的意义,并可能损害网络功能。另外,如果定标项有时为正,有时为负,则类CS功能无法实现。

  -

  【补充】我们上面提到的论文存在不合理评价提高分数的问题,第三个贡献,——样本率学习策略,调整网络结构后难以体现。至少根据现有的实验,我认为CS的效果是明显的,并且有非常合理的理论解释。

  作者:明星所有

  https://www.zhihu.com/question/283715823/answer/700870267

  类似于一个回答的朋友,我见过的很多网络都把bn放在激活之前。让我解释一下:

  现在我们假设所有激活都是relu,即抑制负半区的卷积值,保留正半区的卷积值。bn的作用是使输入值的均值为0,方差为1,也就是说,如果relu之前是bn,那么将近一半的输入值会被抑制,一半的输入值会被保留。

  所以relu之前bn的优势可以这样理解:bn可以防止某一层的所有激活值被抑制,从而防止从这一层开始的所有梯度变为零,也就是防止梯度消失。(当然也可以防止梯度爆炸)

  另一个好处是把bn放在激活之前,可以把卷积权和bn的参数结合起来,这样有利于网络在做正向推理的时候加快速度。

  作者:诚实的悟空

  https://www.zhihu.com/question/283715823/answer/553603362

  前面的回答说了很多bn放在relu后面的好处和理论依据。

  而我用resnet18训练手部检测,只改变了bn和relu的顺序。和一些回答者一样,relu前面的bn效果略好。

  如果深度学习的理论真的那么确定,就没必要做那么多实验调网络了,根据自己的使用场景,自己实验才是正确的答案。

  下载1:OpenCV-Contrib扩展模块中文版教程

  在“落后的月饼学视觉”微信官方账号后台,回复:扩展模块中文教程下载全网首个中文版OpenCV扩展模块教程,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等20多个章节。

  下载2:Python视觉实战项目31讲

  在“落后的月饼学视觉”微信官方账号后台,回复:Python视觉实战项目31讲下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别在内的31个视觉实用项目,帮助快校计算机视觉。

  下载3:OpenCV实战项目20讲

  在“落后的月饼学视觉”微信官方账号后台,回复:OpenCV实战项目20讲,可以基于20下载20个OpenCV,实现OpenCV的高级学习。

  实战项目

  在“下载4:leetcode算法开源书”微信官方账号后台回复:落后的月饼学视觉leetcode即可下载。每道题都是运行时beats 100%开源好书,你值得拥有!

  交换组

  欢迎加入读者微信官方账号,与同行交流。目前有SLAM、3D视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群。(以后会逐步细分)。请扫描以下微信号,加群。备注:“昵称学校/公司的研究方向”,例如:“dddyx上海交大视觉SLAM”。请按格式备注,否则不能通过。添加成功后,会根据研究方向邀请你进入相关微信群。在群里发广告,不然就请你出群。谢谢理解~

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: