private TrainStats ExecuteSingleIteration(ArchitectureTestConfig config) { var neuralNetworkBuilder = new NeuralNetworkBuilder() .SetActivationFunction(new SigmoidActivationFunction()) .SetErrorFunction(new MeanSquaredErrorFunction(1)) .SetNumberOfInputNeurons(2) .SetNumberOfHiddenNeurons(config.NumberOfHiddenNeurons) .SetNumberOfOutputNeurons(1); if (config.EnableBias) { neuralNetworkBuilder.AddBiasConnections(); } var network = neuralNetworkBuilder.Build(); var trainer = new Trainer(neuralNetwork: network, learningRate: 0.01, logger: new DummyLogger()); var trainDataCollection = new[] { new TrainData(new double [] { 0, 0 }, new double [] { 1 }), new TrainData(new double [] { 1, 0 }, new double [] { 0 }), new TrainData(new double [] { 0, 1 }, new double [] { 0 }), new TrainData(new double [] { 1, 1 }, new double [] { 1 }), }; var trainStats = trainer.Train(trainDataCollection, numberOfEpochs: _maxNumberOfEpochs, terminalEpochError: _terminalEpochError); return(trainStats); }
private IEnumerable <TrainStats> TestConfiguration(ArchitectureTestConfig config) { var trainStatsCollection = new ConcurrentBag <TrainStats>(); Parallel.For(0, _numberOfTests, x => { trainStatsCollection.Add(ExecuteSingleIteration(config)); }); return(trainStatsCollection); }