public Tuple <double, TimeSpan> Train() { if (SourceMatrix == null) { return(null); } List <int> listColumns = new List <int>(); for (int i = 0; i < FeaturesAmount; i++) { listColumns.Add(i); } double[][] inputs = SourceMatrix.GetColumns(listColumns.ToArray()).ToJagged(); double[][] outputs = SourceMatrix.GetColumn(FeaturesAmount).Transpose().ToJagged(); Network = new ActivationNetwork(new BipolarSigmoidFunction(SigmoidAlphaValue), NeuronsInFirstLayer, NeuronsInHiddenLayer, 1); BackPropagationLearning teacher = new BackPropagationLearning(Network); teacher.LearningRate = LearningRate; Network.Randomize(); var sw = Stopwatch.StartNew(); double error = double.PositiveInfinity; double previous; for (int i = 1; i <= EpochCount; i++) { previous = error; error = teacher.RunEpoch(inputs, outputs); if (error == 0) { break; } //Console.WriteLine(String.Format("Epoch={0} Error={1}", i, error)); } sw.Stop(); return(Tuple.Create(error, sw.Elapsed)); }
void IMatrix.SetValue(int rowNumber, int columnNumber, double value) { SourceMatrix.SetValue(rowNumber, columnNumber, value); }
double IMatrix.GetValue(int rowNumber, int columnNumber) { return(SourceMatrix.GetValue(rowNumber, columnNumber)); }
void IMatrix.SetValue(int rowNumber, int columnNumber, double value) { int actualColumnNumber = GetActualColumnNumber(rowNumber); SourceMatrix.SetValue(rowNumber, actualColumnNumber, value); }
double IMatrix.GetValue(int rowNumber, int columnNumber) { int actualColumnNumber = GetActualColumnNumber(columnNumber); return(SourceMatrix.GetValue(rowNumber, actualColumnNumber)); }