public double[][] Predict(IEnumerable <StockHistory> input) { var inputs = GetRawData(input, Parameters.InputColumns); var normalInputs = Normalizer.NormalizeInputs(inputs); var nnInputs = normalInputs.Aggregate((x, y) => x.Concat(y).ToArray()); var nnOutput = new double[Parameters.LeadWindowSize * Parameters.OutputColumns.Length]; Network.Compute(nnInputs, nnOutput); var predictedOutput = new double[Parameters.LeadWindowSize][]; for (int i = 0; i < Parameters.LeadWindowSize; i++) { var outputRow = new double[Parameters.OutputColumns.Length]; Array.Copy(nnOutput, i * Parameters.OutputColumns.Length, outputRow, 0, Parameters.OutputColumns.Length); var rawOutputRow = Normalizer.DenormalizeOutput(outputRow); predictedOutput[i] = rawOutputRow; } return(predictedOutput); }