/// <summary> /// Obliczanie błędu /// </summary> /// <param name="trData">Dane treningowe</param> /// <returns>Macierz</returns> private double[,] ErrorCalculate(TrainingData trData) { double[,] y = MatrixHelper.ConvertToMatrix(trData.output); var ysim = Propagate(trData.input); return(MatrixHelper.MatrixSubstraction(y, ysim)); }
/// <summary> /// Metoda propagacji - sporządza predykcję wektora wejściowego /// </summary> /// <param name="td"></param> /// <returns></returns> public double[,] Propagate(params double[] data) { trData = new TrainingData(data, new double[] { }); double[,] inputData = MatrixHelper.ConvertToMatrix(trData.input); layerList[0].values = inputData; for (int i = 1; i < layerList.Length; i++) { inputData = MatrixHelper.MatrixMultiply(inputData, layerList[i].perceptron.scalesMatrix); inputData = ExecuteActivationFunction(inputData, layerList[i].perceptron.activationFunction); layerList[i].values = inputData; } return(inputData); }