• 大小: 48KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-26
  • 语言: Java
  • 标签: java  算法  

资源简介

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\Mainframe.java

     文件       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\Mainframe$1.class

     文件        983  2008-10-18 17:44  neuroNet\bin\ui\Mainframe$10.class

     文件        736  2008-10-18 17:44  neuroNet\bin\ui\Mainframe$2.class

     文件        679  2008-10-18 17:44  neuroNet\bin\ui\Mainframe$3.class

     文件       1250  2008-10-18 17:44  neuroNet\bin\ui\Mainframe$4.class

     文件       1252  2008-10-18 17:44  neuroNet\bin\ui\Mainframe$5.class

     文件        883  2008-10-18 17:44  neuroNet\bin\ui\Mainframe$6.class

     文件        882  2008-10-18 17:44  neuroNet\bin\ui\Mainframe$7.class

     文件        977  2008-10-18 17:44  neuroNet\bin\ui\Mainframe$8.class

     文件        977  2008-10-18 17:44  neuroNet\bin\ui\Mainframe$9.class

     文件       2529  2008-10-18 17:44  neuroNet\bin\ui\Mainframe$ImpoGenerData.class

     文件       2529  2008-10-18 17:44  neuroNet\bin\ui\Mainframe$ImpoLearnData.class

     文件       3290  2008-10-18 17:44  neuroNet\bin\ui\Mainframe$loadNet.class

     文件       2996  2008-10-18 17:44  neuroNet\bin\ui\Mainframe$saveNet.class

     文件       3971  2008-10-18 17:44  neuroNet\bin\ui\Mainframe.class

     文件       1056  2008-11-14 10:30  neuroNet\bin\ui\SetNet$1.class

............此处省略17个文件信息

评论

共有 条评论