日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

神经网络激活函数sigmoid、tanh、Relu、LeakyRelu、Elu、PRelu、MaxOut的java实现

發布時間:2024/1/23 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 神经网络激活函数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不是固定值,同樣可通過學習進行調整

代碼:
?

public double elu(double x,double a) {if (x > 0) {return x;}else {return a * (Math.pow(Math.E, x) - 1);}}

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实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。