【pytorch基礎】ReLU6


 

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?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM