資源簡介
java實現(xiàn)的bp算法,可視化操作,詳細的設(shè)置、導(dǎo)入導(dǎo)出數(shù)據(jù)與學(xué)習(xí)功能

代碼片段和文件信息
/*
?*?作者:張珩???信研0802?2008000757
?*?內(nèi)容:BP神經(jīng)網(wǎng)絡(luò)算法
?*/
package?neuro;
import?ui.*;
import?javax.swing.*;
import?java.awt.BorderLayout;
//BP算法類
public?class?NetAlgo?extends?JPanel?implements?Runnable
{
//?第一個數(shù)記錄有幾層網(wǎng)絡(luò),后面記錄每一層有多少個神經(jīng)元
private?int[]?netlayers;
//?二維數(shù)組存放神經(jīng)元,動態(tài)分配,每一維不一定等長
private?Neuron[][]?neuroArray;
//?用三維數(shù)組存放網(wǎng)絡(luò)的權(quán)重,每一維不一定等長Delta
private?double[][][]?netWeight;
//?用于存儲前一次的變化權(quán)重用作動量影子
private?double[][][]?deltaWeight;
//?原始數(shù)據(jù)學(xué)習(xí)集
private?double[][]?origLearnData;
//?歸一化后的學(xué)習(xí)數(shù)據(jù)集
private?double[][]?learnData;
//?原始泛化數(shù)據(jù)集
private?double[][]?origGenerData;
//?歸一化后的泛化數(shù)據(jù)集
private?double[][]?generData;
//?存放最大最小值,用于歸一化0行存最小值,1行存最大值
private?double[][]?minMax;
//?均方差數(shù)組,
private?double[]?meanErrSum;
//?相對誤差和數(shù)組
private?double[]?relaErrSum;
//?學(xué)習(xí)速率
private?double?eta?=?0.8;
//?動量項因子
private?double?alpha?=?0.7;
//?學(xué)習(xí)要達到的誤差精度
private?double?precise?=?0.0005;
//?最多允許學(xué)習(xí)次數(shù)
private?int?maxCount?=?2000;
//?存放輸出曲線的平均誤差率的曲線的類
private?DrawLearn[]?learnCurv;
//?存放回想實際輸出與期望輸出的關(guān)系的曲線
private?DrawTest[]?reCallCurv;
//?存放泛化實際輸出與期望輸出的關(guān)系的曲線
private?DrawTest[]?generCurv;
//?是否利用原有網(wǎng)絡(luò)
private?boolean?isHaveNet;
//?算法執(zhí)行類型1表示學(xué)習(xí),2表示回想,3表示泛化
private?int?execType?=?1;
//?回想期望值,實際值,相對誤差\表第一維表示輸出個數(shù)
private?double?mixReCall[][][];
//?泛化期望值,實際值,相對誤差表
private?double?mixGeneral[][][];
//?顯示網(wǎng)絡(luò)參數(shù)
private?JLabel?jlPara;
//?顯示數(shù)據(jù)
private?JTextArea?showData;
private?JScrollPane?showPanel;
public?NetAlgo()
{
setLayout(new?BorderLayout());
jlPara?=?new?JLabel();
jlPara.setText(“??你好!??你已進入BP神經(jīng)網(wǎng)絡(luò)!“);
add(jlPara?BorderLayout.SOUTH);
showData?=?new?JTextArea();
showPanel?=?new?JScrollPane(showData);
showData.setAutoscrolls(true);
showData.setLineWrap(true);
add(showPanel?BorderLayout.CENTER);
}
//?設(shè)置網(wǎng)絡(luò)結(jié)構(gòu)---層數(shù)和每層節(jié)點個數(shù)
public?void?setlayers(int[]?layers)
{
netlayers?=?layers;
}
//?將網(wǎng)絡(luò)參數(shù)寫入算法類
public?void?setParameter(double[]?parameter)
{
//?學(xué)習(xí)速率
eta?=?parameter[0];
//?動量項因子
alpha?=?parameter[1];
//?學(xué)習(xí)要達到的誤差精度
precise?=?parameter[2];
//?最多允許學(xué)習(xí)次數(shù)
maxCount?=?(int)?parameter[3];
}
//?設(shè)置網(wǎng)絡(luò)結(jié)構(gòu)---初始化網(wǎng)絡(luò)
public?void?setNeuros(Neuron[][]?neurons)
{
neuroArray?=?neurons;
}
//?設(shè)置網(wǎng)絡(luò)的連接權(quán)值
public?void?setWeight(double[][][]?weights)
{
netWeight?=?weights;
}
//?初始化deltaWeight
public?void?initDeltaWeight()
{
deltaWeight?=?new?double[neuroArray.length?-1][][];
for?(int?i?=?0;?i? {
deltaWeight[i]?=?new?double[neuroArray[i].length][];
for?(int?j?=?0;?j? {
deltaWeight[i][j]?=?new?double[neuroArray[i?+1].length];
for?(int?k?=?0;?k? {
deltaWeight[i][j][k]?=?Math.random();
}
}
}
}
//?設(shè)置網(wǎng)絡(luò)權(quán)值
public?void?setweights()
{
//?初始化神經(jīng)網(wǎng)絡(luò)連接權(quán)值?neuroArray
netWeight?=?new?double[neuroArray.length?-1][][];
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????232??2008-10-09?14:55??neuroNet\.classpath
?????文件????????384??2008-10-09?14:55??neuroNet\.project
?????文件???????6126??2008-11-13?14:37??neuroNet\src\ui\DrawLearn.java
?????文件???????4149??2008-11-05?00:40??neuroNet\src\ui\DrawTest.java
?????文件??????11783??2008-10-18?17:44??neuroNet\src\ui\Mainfr
?????文件???????6007??2008-11-11?11:56??neuroNet\src\ui\SetNet.java
?????文件??????16971??2008-11-14?10:40??neuroNet\src\neuro\NetAlgo.java
?????文件????????886??2008-11-14?10:20??neuroNet\src\neuro\Neuron.java
?????文件????????399??2008-11-05?23:57??neuroNet\src\neuro\Point.java
?????文件???????1071??2008-11-14?10:30??neuroNet\bin\ui\DrawLearn$UnChangeHeight.class
?????文件???????1274??2008-11-14?10:30??neuroNet\bin\ui\DrawLearn.class
?????文件????????728??2008-11-14?10:30??neuroNet\bin\ui\DrawPanel$1.class
?????文件???????4929??2008-11-14?10:30??neuroNet\bin\ui\DrawPanel.class
?????文件????????821??2008-11-05?00:40??neuroNet\bin\ui\DrawTest.class
?????文件????????630??2008-10-18?17:44??neuroNet\bin\ui\Mainfr
?????文件????????983??2008-10-18?17:44??neuroNet\bin\ui\Mainfr
?????文件????????736??2008-10-18?17:44??neuroNet\bin\ui\Mainfr
?????文件????????679??2008-10-18?17:44??neuroNet\bin\ui\Mainfr
?????文件???????1250??2008-10-18?17:44??neuroNet\bin\ui\Mainfr
?????文件???????1252??2008-10-18?17:44??neuroNet\bin\ui\Mainfr
?????文件????????883??2008-10-18?17:44??neuroNet\bin\ui\Mainfr
?????文件????????882??2008-10-18?17:44??neuroNet\bin\ui\Mainfr
?????文件????????977??2008-10-18?17:44??neuroNet\bin\ui\Mainfr
?????文件????????977??2008-10-18?17:44??neuroNet\bin\ui\Mainfr
?????文件???????2529??2008-10-18?17:44??neuroNet\bin\ui\Mainfr
?????文件???????2529??2008-10-18?17:44??neuroNet\bin\ui\Mainfr
?????文件???????3290??2008-10-18?17:44??neuroNet\bin\ui\Mainfr
?????文件???????2996??2008-10-18?17:44??neuroNet\bin\ui\Mainfr
?????文件???????3971??2008-10-18?17:44??neuroNet\bin\ui\Mainfr
?????文件???????1056??2008-11-14?10:30??neuroNet\bin\ui\SetNet$1.class
............此處省略17個文件信息
評論
共有 條評論