• 大小: 266KB
    文件类型: .zip
    金币: 2
    下载: 2 次
    发布日期: 2021-07-01
  • 语言: Java
  • 标签:

资源简介

使用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\description
     文件          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\objects\
     目录           0  2016-12-06 09:30  BP\.git\objects\3a\
     文件         474  2016-11-30 12:07  BP\.git\objects\3a\d1de1b526abf834be82e030fab2753e246ec98
     目录           0  2016-12-06 09:30  BP\.git\objects\93\
     文件          89  2016-11-30 12:07  BP\.git\objects\93\a2db431417e22a68722469bd16dcca8d54cbf0
     目录           0  2016-12-06 09:30  BP\.git\objects\bd\
     文件         188  2016-11-30 12:07  BP\.git\objects\bd\b0cabc87cf50106df6e15097dff816c8c3eb34
     目录           0  2016-12-06 09:30  BP\.git\objects\d6\
     文件         159  2016-11-30 12:07  BP\.git\objects\d6\57cec8d82ee5e4080dac3f7e5d51d64f897d39
     目录           0  2016-11-30 12:07  BP\.git\objects\info\
     目录           0  2016-11-30 12:07  BP\.git\objects\pack\
     目录           0  2016-11-30 13:17  BP\.git\refs\
     目录           0  2016-12-06 09:30  BP\.git\refs\heads\
............此处省略20个文件信息

评论

共有 条评论