资源简介
使用Java实现BP神经网络进行回归分析,并利用训练好的神经网络实现空气质量的评级。
代码片段和文件信息
import java.util.Random;
/**
* BPNN.
*
* @author RenaQiu
*
*/
public class BP {
/**
* input vector.
*/
private final double[] input;
/**
* hidden layer.
*/
private final double[] hidden;
/**
* output layer.
*/
private final double[] output;
/**
* target.
*/
private final double[] target;
/**
* delta vector of the hidden layer .
*/
private final double[] hidDelta;
/**
* output layer of the output layer.
*/
private final double[] optDelta;
/**
* learning rate.
*/
private final double eta;
/**
* momentum.
*/
private final double momentum;
/**
* weight matrix from input layer to hidden layer.
*/
private final double[][] iptHidWeights;
/**
* weight matrix from hidden layer to output layer.
*/
private final double[][] hidOptWeights;
/**
* previous weight update.
*/
private final double[][] iptHidPrevUptWeights;
/**
* previous weight update.
*/
private final double[][] hidOptPrevUptWeights;
public double optErrSum = 0d;
public double hidErrSum = 0d;
private final Random random;
/**
* Constructor.
*
* Note: The capacity of each layer will be the parameter
* plus 1. The additional unit is used for smoothness.
*
*
* @param inputSize
* @param hiddenSize
* @param outputSize
* @param eta
* @param momentum
*
*/
public BP(int inputSize int hiddenSize int outputSize double eta
double momentum) {
input = new double[inputSize + 1];
hidden = new double[hiddenSize + 1];
output = new double[outputSize + 1];
target = new double[outputSize + 1];
hidDelta = new double[hiddenSize + 1];
optDelta = new double[outputSize + 1];
iptHidWeights = new double[inputSize + 1][hiddenSize + 1];
hidOptWeights = new double[hiddenSize + 1][outputSize + 1];
random = new Random(19881211);
randomizeWeights(iptHidWeights);
randomizeWeights(hidOptWeights);
iptHidPrevUptWeights = new double[inputSize + 1][hiddenSize + 1];
hidOptPrevUptWeights = new double[hiddenSize + 1][outputSize + 1];
this.eta = eta;
this.momentum = momentum;
}
private void randomizeWeights(double[][] matrix) {
for (int i = 0 len = matrix.length; i != len; i++)
for (int j = 0 len2 = matrix[i].length; j != len2; j++) {
double real = random.nextDouble();
matrix[i][j] = random.nextDouble() > 0.5 ? real : -real;
}
}
/**
* Constructor with default eta = 0.25 and momentum = 0.3.
*
* @param inputSize
* @param hiddenS
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-12-06 09:30 BP\
目录 0 2016-12-06 09:30 BP\.git\
文件 395 2014-12-19 12:57 BP\.gitattributes
文件 862 2016-11-30 12:07 BP\.gitignore
文件 52 2016-11-30 12:07 BP\.git\COMMIT_EDITMSG
文件 130 2016-11-30 12:07 BP\.git\config
文件 73 2016-11-30 12:07 BP\.git\desc
文件 23 2016-11-30 12:07 BP\.git\HEAD
目录 0 2016-12-06 09:30 BP\.git\hooks\
文件 177 2016-11-30 12:07 BP\.git\hooks\README.sample
文件 192 2016-11-30 12:08 BP\.git\index
目录 0 2016-12-06 09:30 BP\.git\info\
文件 113 2016-11-30 12:07 BP\.git\info\exclude
目录 0 2016-12-06 09:30 BP\.git\logs\
文件 203 2016-11-30 12:07 BP\.git\logs\HEAD
目录 0 2016-11-30 13:17 BP\.git\logs\refs\
目录 0 2016-12-06 09:30 BP\.git\logs\refs\heads\
文件 203 2016-11-30 12:07 BP\.git\logs\refs\heads\master
目录 0 2016-11-30 13:17 BP\.git\ob
目录 0 2016-12-06 09:30 BP\.git\ob
文件 474 2016-11-30 12:07 BP\.git\ob
目录 0 2016-12-06 09:30 BP\.git\ob
文件 89 2016-11-30 12:07 BP\.git\ob
目录 0 2016-12-06 09:30 BP\.git\ob
文件 188 2016-11-30 12:07 BP\.git\ob
目录 0 2016-12-06 09:30 BP\.git\ob
文件 159 2016-11-30 12:07 BP\.git\ob
目录 0 2016-11-30 12:07 BP\.git\ob
目录 0 2016-11-30 12:07 BP\.git\ob
目录 0 2016-11-30 13:17 BP\.git\refs\
目录 0 2016-12-06 09:30 BP\.git\refs\heads\
............此处省略20个文件信息
- 上一篇:Java实现朴素贝叶斯分类器
- 下一篇:android版俄罗斯方块源码
评论
共有 条评论