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

資源簡介

BP神經網絡JAVA實現源碼(含兩套訓練測試數據) 并實現了訓練結果的保存 以及對保存的訓練結果的加載測試使用

資源截圖

代碼片段和文件信息

package?bpnn;

import?java.io.IOException;
import?java.io.Serializable;
import?java.util.ArrayList;
import?java.util.Random;

class?BPNN?implements?Serializable?{
/**
?*?
?*/
private?static?final?long?serialVersionUID?=?-7717308986971656838L;
//?private?static?int?layer?=?3;?//?三層神經網絡
private?static?int?NodeNum?=?10;?//?每層的最多節點數
private?static?final?int?ADJUST?=?5;?//?隱層節點數調節常數
private?static?final?int?MaxTrain?=?200000;?//?最大訓練次數
private?static?final?double?ACCU?=?0.015;?//?每次迭代允許的誤差?iris:0.015
private?double?ETA_W?=?0.5;?//?權值學習效率0.5
private?double?ETA_T?=?0.5;?//?閾值學習效率
private?double?accu;

//?附加動量項
//?private?static?final?double?ETA_A?=?0.3;?//?動量常數0.1
//?private?double[][]?in_hd_last;?//?上一次的權值調整量
//?private?double[][]?hd_out_last;

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

private?ArrayList>?alllist?=?new?ArrayList<>();?//?輸入輸出數據
private?ArrayList?outlist?=?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?ArrayList?outlist)
throws?IOException?{
this.alllist?=?arraylist;
this.outlist?=?outlist;
this.in_num?=?in_number;
this.out_num?=?out_number;

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

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

int?datanum?=?alllist.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]?=?alllist.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_last?=?new?double[hd_num][out_num];

in_hd_weight?=?new?

評論

共有 條評論