当前位置:   article > 正文

PyTorch ReLU6网络层

relu6

ReLU6网络层

我们在使用MobileNet网路时,会发现该网络层中有ReLU6的激活函数

那你们想没有想过,为什么用ReLU6,直接用ReLU不香么?

我们先了解ReLU6激活函数是如何define的

对于relu,采用:y = max(0, x)定义, 即 特征值小于0的即为0, 特征值大于0的不变,相当于x个bernoulli分布

对于relu6, 采用:y = min((max(0, x)), 6)定义,即在relu的基础上,限定了特征值的最大值为6,即为6个bernoulli分布

从定义上不难看出,relu6比relu减少了多个bernoulli分布

从作者的观点,relu6主要为了:This is useful in making the networks ready for fixed-point inference.

也就是说,relu6的诞生其目的主要是为了定点的深度网络模型服务

其中为什么选择6呢?8不行么?

作者又说了:the value 6 that fits best in 8 bits, which probably is the most common ust-case.

也就说明了,对于数值6,目前对对于定点8bit是最适合的。


我们再谈谈MobileNets,

MobileNets, 是谷歌提出,专注于在移动设备上的轻量级神经网络。

因此,对于一些移动端设备,我们为了提升网络的在移动端(npu之类的),我们采用定点进行推理(可以了解网络加速技术之量化

这也就说明了,为什么MobileNets中有relu6了。


按照我的理解

限制为6,主要是在移动端int8的低精度的时候,为了也能让模型有很好的特征提取

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/137334
推荐阅读
相关标签
  

闽ICP备14008679号