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
参考
1. ReLU6;
2. Why the 6 in relu6?
完