public void TrainCorrectThreePasses() { Layer layer = new Layer(new double[, ] { { 1, 1 } }); List <TrainingVector> trainingVectors = new List <TrainingVector> { new TrainingVector( new NetworkVector(new double[] { 0, 0 }), new NetworkVector(new double[] { 1 }) ), new TrainingVector( new NetworkVector(new double[] { 1, 0 }), new NetworkVector(new double[] { 0 }) ), new TrainingVector( new NetworkVector(new double[] { 0, 1 }), new NetworkVector(new double[] { 0 }) ), new TrainingVector( new NetworkVector(new double[] { 1, 1 }), new NetworkVector(new double[] { 1 }) ) }; OnlineTrainer trainer = new OnlineTrainer(layer, trainingVectors); trainer.Train(); trainer.Train(); trainer.Train(); double[,] weightsCheck = new double[, ] { { 3, 7 } }; double[] biasesCheck = new double[] { -1 }; for (int i = 0; i < layer.NumberOfOutputs; i++) { Assert.AreEqual(biasesCheck[i], layer.State.Biases[i]); for (int j = 0; j < layer.NumberOfInputs; j++) { Assert.AreEqual(weightsCheck[i, j], layer.State.Weights[i, j]); } } }
public void CanRunOnlineTrainer() { Layer layer = new Layer(new double[, ] { { 1, 1 } }); List <TrainingVector> trainingVectors = new List <TrainingVector> { new TrainingVector( new NetworkVector(new double[] { 0, 0 }), new NetworkVector(new double[] { 1 }) ) }; OnlineTrainer trainer = new OnlineTrainer(layer, trainingVectors); trainer.Train(); }
public void CanMakeOnlineTrainer() { Layer layer = new Layer(new double[, ] { { 1, 1 } }); List <TrainingVector> trainingVectors = new List <TrainingVector> { new TrainingVector( new NetworkVector(new double[] { 1, 1 }), new NetworkVector(new double[] { 1 }) ) }; OnlineTrainer trainer = new OnlineTrainer(layer, trainingVectors); Assert.AreNotEqual(null, trainer); }
static void Main(string[] args) { string learningFileName = @"C:\Users\Jakub\Desktop\approximation_train_1.txt"; string testFileName = @"C:\Users\Jakub\Desktop\approximation_test.txt"; LayerCharacteristic[] layers = new LayerCharacteristic[2]; layers[0] = new LayerCharacteristic(2, new SigmoidUnipolarFunction()); layers[1] = new LayerCharacteristic(1, new IdentityFunction()); var network = new NeuralNetwork(1, layers); ILearningProvider dataProvider = new LearningApproximationDataProvider(learningFileName, testFileName, 1, 1, true); //dataProvider.LearnSet[0] = new Datum(Vector<double>.Build.Dense(2, 1), Vector<double>.Build.Dense(2, 1)); //dataProvider.LearnSet[1] = new Datum(Vector<double>.Build.Dense(2, 1), Vector<double>.Build.Dense(2, 0)); var trainer = new OnlineTrainer(new MeanSquareErrorCalculator(), dataProvider, new BackPropagationAlgorithm(new LearningRateHandler(0.01, 0.7, 1.05, 1.04), 0.2, 1.05)); network.ConsoleDisplay(); Console.ReadLine(); #region old demo //LayerCharacteristic[] layers = new LayerCharacteristic[2]; //layers[0] = new LayerCharacteristic(2, new SigmoidUnipolarFunction()); //layers[1] = new LayerCharacteristic(2, new IdentityFunction()); //var network = new NeuralNetwork(1, layers); //var input = Vector<double>.Build.Dense(2); //input[0] = 1; //input[1] = 2; //foreach (var layer in network.Layers) //{ // Console.Write("\nNext layer:"); // foreach (var row in layer.Weights.ToRowArrays()) // { // Console.WriteLine("\nrow: "); // foreach (var cell in row) // { // Console.Write($"{cell} | "); // } // } //} //Console.WriteLine($"\nCalculated first: {network.CalculateOutput(input)[0]}"); //Console.WriteLine($"\nCalculated seond: {network.CalculateOutput(input)[1]}"); //var r = network.CalculateOutput(input); //Console.ReadLine(); #endregion #region multiplty demo //var m = Matrix<double>.Build.Random(2,1); //var v = Vector<double>.Build.Dense(2,2); //Console.WriteLine($"vector: {v[0]} {v[1]}"); //Console.Write("\nMatrix:"); //foreach (var row in m.ToRowArrays()) //{ // Console.WriteLine("\nrow: "); // foreach (var cell in row) // { // Console.Write($"{cell} | "); // } //} //var res = v * m; //Console.WriteLine($"res: {res.ToString()}"); //Console.ReadLine(); #endregion }