資源簡介
java實現的bp算法,可視化操作,詳細的設置、導入導出數據與學習功能

代碼片段和文件信息
/*
?*?作者:張珩???信研0802?2008000757
?*?內容:BP神經網絡算法
?*/
package?neuro;
import?ui.*;
import?javax.swing.*;
import?java.awt.BorderLayout;
//BP算法類
public?class?NetAlgo?extends?JPanel?implements?Runnable
{
//?第一個數記錄有幾層網絡,后面記錄每一層有多少個神經元
private?int[]?netlayers;
//?二維數組存放神經元,動態分配,每一維不一定等長
private?Neuron[][]?neuroArray;
//?用三維數組存放網絡的權重,每一維不一定等長Delta
private?double[][][]?netWeight;
//?用于存儲前一次的變化權重用作動量影子
private?double[][][]?deltaWeight;
//?原始數據學習集
private?double[][]?origLearnData;
//?歸一化后的學習數據集
private?double[][]?learnData;
//?原始泛化數據集
private?double[][]?origGenerData;
//?歸一化后的泛化數據集
private?double[][]?generData;
//?存放最大最小值,用于歸一化0行存最小值,1行存最大值
private?double[][]?minMax;
//?均方差數組,
private?double[]?meanErrSum;
//?相對誤差和數組
private?double[]?relaErrSum;
//?學習速率
private?double?eta?=?0.8;
//?動量項因子
private?double?alpha?=?0.7;
//?學習要達到的誤差精度
private?double?precise?=?0.0005;
//?最多允許學習次數
private?int?maxCount?=?2000;
//?存放輸出曲線的平均誤差率的曲線的類
private?DrawLearn[]?learnCurv;
//?存放回想實際輸出與期望輸出的關系的曲線
private?DrawTest[]?reCallCurv;
//?存放泛化實際輸出與期望輸出的關系的曲線
private?DrawTest[]?generCurv;
//?是否利用原有網絡
private?boolean?isHaveNet;
//?算法執行類型1表示學習,2表示回想,3表示泛化
private?int?execType?=?1;
//?回想期望值,實際值,相對誤差\表第一維表示輸出個數
private?double?mixReCall[][][];
//?泛化期望值,實際值,相對誤差表
private?double?mixGeneral[][][];
//?顯示網絡參數
private?JLabel?jlPara;
//?顯示數據
private?JTextArea?showData;
private?JScrollPane?showPanel;
public?NetAlgo()
{
setLayout(new?BorderLayout());
jlPara?=?new?JLabel();
jlPara.setText(“??你好!??你已進入BP神經網絡!“);
add(jlPara?BorderLayout.SOUTH);
showData?=?new?JTextArea();
showPanel?=?new?JScrollPane(showData);
showData.setAutoscrolls(true);
showData.setLineWrap(true);
add(showPanel?BorderLayout.CENTER);
}
//?設置網絡結構---層數和每層節點個數
public?void?setlayers(int[]?layers)
{
netlayers?=?layers;
}
//?將網絡參數寫入算法類
public?void?setParameter(double[]?parameter)
{
//?學習速率
eta?=?parameter[0];
//?動量項因子
alpha?=?parameter[1];
//?學習要達到的誤差精度
precise?=?parameter[2];
//?最多允許學習次數
maxCount?=?(int)?parameter[3];
}
//?設置網絡結構---初始化網絡
public?void?setNeuros(Neuron[][]?neurons)
{
neuroArray?=?neurons;
}
//?設置網絡的連接權值
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();
}
}
}
}
//?設置網絡權值
public?void?setweights()
{
//?初始化神經網絡連接權值?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個文件信息
評論
共有 條評論