当前位置 : 主页 > 编程语言 > java >

【pytorch基础】ReLU6

来源:互联网 收集:自由互联 发布时间:2022-07-13
ReLU6(x)=min(max(0,x),6) ReLU6可以抑制ReLU的最大值,当x6时,其导数也是0; 目的: 主要是为了在移动端float16的低精度的时候,也能有很好的数值分辨率,如果对ReLu的输出值不加限制,那么

 

ReLU6(x)=min(max(0,x),6)

ReLU6可以抑制ReLU的最大值,当x>6时,其导数也是0;

目的:

主要是为了在移动端float16的低精度的时候,也能有很好的数值分辨率,如果对ReLu的输出值不加限制,那么输出范围就是0到正无穷,而低精度的float16无法精确描述其数值,带来精度损失。

为什么是6呢?

普通relu, y=max(0, x), 相当于无限多个bernoulli分布,即无限多个骰子

relu6, y= min(max(0,x), 6), 相当于有六个bernoulli分布,即6个硬币,同时抛出正面,这样鼓励网络学习到稀疏特征。

网络里面每一个输出n,相当于n个bernoulli分布的叠加。

通过实验发现,用6,效果比较好。所以选用了6

【pytorch基础】ReLU6_移动端

 

 

 

 

参考

1. ​​ReLU6​​;

2. ​​Why the 6 in relu6?​​


上一篇:老罗语录
下一篇:没有了
网友评论