public BPNN(int inputLayerNum, int[] hiddenLayerNum, int outputLayersNum, double eta, double lastEta) { OtherHelper otherHelper = new OtherHelper(); this.eta = eta; this.lastEta = lastEta; i_input = new double[inputLayerNum + 1]; i_output = new double[inputLayerNum + 1]; h_input = new double[hiddenLayerNum.Length][]; h_output = new double[hiddenLayerNum.Length][]; h_weights = new double[hiddenLayerNum.Length][, ]; h_lastTheta = new double[hiddenLayerNum.Length][, ]; for (int i = 0; i < hiddenLayerNum.Length; i++) { h_input[i] = new double[hiddenLayerNum[i] + 1]; h_output[i] = new double[hiddenLayerNum[i] + 1]; int row = 0; int col = 0; if (i == 0) //为零时时输入层 { row = inputLayerNum + 1; col = hiddenLayerNum[i]; } else { row = hiddenLayerNum[i - 1] + 1; col = hiddenLayerNum[i]; } h_weights[i] = new double[row, col]; h_lastTheta[i] = new double[row, col]; for (int j = 0; j < row; j++) { for (int k = 0; k < col; k++) { h_weights[i][j, k] = OtherHelper.getRandDouble(-200, 201); h_lastTheta[i][j, k] = 0; } } } o_input = new double[outputLayersNum]; o_output = new double[outputLayersNum]; o_weights = new double[hiddenLayerNum[hiddenLayerNum.Length - 1] + 1, outputLayersNum]; o_lastTheta = new double[hiddenLayerNum[hiddenLayerNum.Length - 1] + 1, outputLayersNum]; for (int i = 0; i < o_weights.GetLength(0); i++) { for (int j = 0; j < o_weights.GetLength(1); j++) { o_weights[i, j] = OtherHelper.getRandDouble(-20, 20); o_lastTheta[i, j] = 0; } } }