91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 5KB
    文件類型: .rar
    金幣: 2
    下載: 1 次
    發布日期: 2021-06-17
  • 語言: Java
  • 標簽: java??bp??

資源簡介

利用java實現bp神經網絡,給定了UCI數據庫的疝氣病證預測病馬數據,使用訓練集訓練BP神經網絡并預測測試集的標簽,錯誤率控制在30%以下。

資源截圖

代碼片段和文件信息

package?Bp;
import?java.io.IOException;
import?java.util.ArrayList;
import?java.util.Random;

class?BPNN?{
????private?static?int?layer?=?5;?//?五層神經網絡
????private?static?int?NodeNum?=?25;?//?每層的最多節點數
????private?static?final?int?ADJUST?=?15;?//?隱層節點數調節常數
????private?static?final?int?MaxTrain?=?100000;?//?最大訓練次數
????private?static?final?double?ACCU?=?0.011;?//?每次迭代允許的誤差?0.011
????private?double?ETA_W?=?0.3;?//?權值學習效率0.3
????private?double?ETA_T?=?0.3;?//?閾值學習效率
????private?double?accu;


????private?int?in_num;?//?輸入層節點數
????private?int?hd_num;?//?隱層節點數
????private?int?out_num;?//?輸入出節點數

????private?ArrayList>?list?=?new?ArrayList();?//?輸入輸出數據

????private?double[][]?in_hd_weight;?//?BP網絡in-hidden突觸權值
????private?double[][]?hd_out_weight;?//?BP網絡hidden_out突觸權值
????private?double[]?in_hd_th;?//?BP網絡in-hidden閾值
????private?double[]?hd_out_th;?//?BP網絡hidden-out閾值

????private?double[][]?out;?//?每個神經元的值經S型函數轉化后的輸出值,輸入層就為原值
????private?double[][]?delta;?//?delta學習規則中的值

????//?獲得網絡五層中神經元最多的數量
????public?int?GetMaxNum()?{
????????return?Math.max(Math.max(in_num?hd_num)?out_num);
????}

????//?設置權值學習率
????public?void?SetEtaW()?{
????????ETA_W?=?0.5;
????}

????//?設置閾值學習率
????public?void?SetEtaT()?{
????????ETA_T?=?0.5;
????}

????//?BPNN訓練
????public?void?Train(int?in_number?int?out_number
????????????ArrayList>?arraylist)?throws?IOException?{
????????list?=?arraylist;
????????in_num?=?in_number;
????????out_num?=?out_number;

????????GetNums(in_num?out_num);?//?獲取輸入層、隱層、輸出層的節點數
????????//?SetEtaW();?//?設置學習率
????????//?SetEtaT();

????????InitNetWork();?//?初始化網絡的權值和閾值

????????int?datanum?=?list.size();?//?訓練數據的組數
????????int?createsize?=?GetMaxNum();?//?比較創建存儲每一層輸出數據的數組
????????out?=?new?double[3][createsize];

????????for?(int?iter?=?0;?iter?????????????for?(int?cnd?=?0;?cnd?????????????????//?第一層輸入節點賦值

????????????????for?(int?i?=?0;?i?????????????????????out[0][i]?=?list.get(cnd).get(i);?//?為輸入層節點賦值,其輸入與輸出相同
????????????????}
????????????????Forward();?//?前向傳播
????????????????Backward(cnd);?//?誤差反向傳播

????????????}
????????????System.out.println(“This?is?the?“?+?(iter?+?1)
????????????????????+?“?th?trainning?NetWork?!“);
????????????accu?=?GetAccu();
????????????System.out.println(“All?Samples?Accuracy?is?“?+?accu);
????????????if?(accu?????????????????break;

????????}

????}

????//?獲取輸入層、隱層、輸出層的節點數,in_number、out_number分別為輸入層節點數和輸出層節點數
????public?void?GetNums(int?in_number?int?out_number)?{
????????in_num?=?in_number;
????????out_num?=?out_number;
????????hd_num?=?(int)?Math.sqrt(in_num?+?out_num)?+?ADJUST;
????????if?(hd_num?>?NodeNum)
????????????hd_num?=?NodeNum;?//?隱層節點數不能大于最大節點數
????}

????//?初始化網絡的權值和閾值
????public?void?InitNetWork()?{
????????//?初始化上一次權值量范圍為-0.5-0.5之間
????????//in_hd_last?=?new?double[in_num][hd_num];
????????//hd_out_

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件??????10265??2018-03-05?14:43??Bp\BPNN.java

?????文件???????7208??2018-03-05?14:43??Bp\DataUtil.java

?????文件???????3540??2018-03-05?14:55??Bp\Test.java

?????目錄??????????0??2018-05-24?17:07??Bp

-----------?---------??----------?-----??----

????????????????21013????????????????????4


評論

共有 條評論