神经网络激活函数sigmoid、tanh、Relu、LeakyRelu、Elu、PRelu、MaxOut的java实现
生活随笔
收集整理的這篇文章主要介紹了
神经网络激活函数sigmoid、tanh、Relu、LeakyRelu、Elu、PRelu、MaxOut的java实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
神經網絡常用激活函數包括sigmoid、tanh、Relu、LeakyRelu、Elu、PRelu和MaxOut。對每一種函數采用java進行實現。前面四種激活函數是固定形式,后面三種激活函數部分參數可以通過神經網絡學習進行調整,這里只針對激活函數本身進行簡單實現,不做過多講解。
1、sigmoid函數
公式:1 / (1 + E^-x)
代碼:
public double sigmoid(double x) {return 1 / (1 + Math.pow(Math.E, -x));}sigmoid圖形:
2、tanh函數
公式:公式:(E^x - E^-x)/(E^x + E^-x)
代碼:
public double tanh(double x) {return (Math.pow(Math.E, x) - Math.pow(Math.E, -x)) / (Math.pow(Math.E, x) + Math.pow(Math.E, -x));}Tanh圖形:
3、relu函數
公式:max(0,x)
代碼:
public double relu(double x) {return Math.max(0, x);}Relu圖形:
4、leakyrelu函數
公式:max(a*x,x),a為(0~1)之間取一個固定值
代碼:
public double leakyRelu(double x) {return Math.max(0.01 * x, x); }圖形(a=0.5):
5、prelu函數
公式:max(ax,x),其中a不是固定值,可通過學習更改
代碼:
public double pRelu(double x,double a) {return Math.max(a * x, x); }6、elu函數
公式:當x>0,返回x;當x<=0,返回a*(E^x - 1),a不是固定值,同樣可通過學習進行調整
代碼:
?
7、maxout函數
公式:max(z[]),z[]為神經網絡每一層計算結果的集合
神經網絡層計算公式:z=wx+b,w為權重,b為偏置
也就是說,maxout函數的參數z[]會隨著神經網絡層的增加而遞增
代碼:
public class MaxOut {List<Double> values = new ArrayList<>();public double maxOut(double value) {values.add(value);Collections.sort(values);return values.get(0);} }?
?
?
?
總結
以上是生活随笔為你收集整理的神经网络激活函数sigmoid、tanh、Relu、LeakyRelu、Elu、PRelu、MaxOut的java实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 直方图均衡算法及结合自动色阶的改进
- 下一篇: java计算数组均值