public void Play() { Console.WriteLine("XOR Learn!"); var model = new NeuralNetwork() .AddFullLayer(2) .AddSigmoid() .AddFullLayer(2) .AddSigmoid() .AddFullLayer(1) .AddSigmoid() .UseCrossEntropyLoss() .UseGradientDescent(0.01) .UseRidge(0.001); var machine = new ClassificationMachine(model); var(trainX, trainY) = GetXorData(1000); var(testX, testY) = GetXorData(500); var tain = new Trainer(model, 32, 200); tain.StartTrain(trainX, trainY, testX, testY); Console.WriteLine("Complete!"); while (true) { var str1 = Console.ReadLine(); var str2 = Console.ReadLine(); if (str1 == "" || str2 == "") { return; } var a1 = double.Parse(str1); var a2 = double.Parse(str2); var output = machine.PredictValue(new TensorOld(new double[] { a1, a2 }, 1, 2)); var result = output[0]; var p = machine.LastRawResult.GetValue(); Console.WriteLine($"result is {result} with probability:{result * p + (1 - result) * (1 - p)}"); } }
public void Play() { var iris = AyxCsvReader.Instance.ReadCsvFileDataTable("Data/iris.csv"); var labels = DataFormat.DataTableToList(iris, "Species").ToList(); var codec = new OneHotCodec(labels); var y = codec.Encode(labels); var X = DataFormat.DataTableToTensor(iris, 1, 2, 3, 4); var model = new NeuralNetwork() .AddFullLayer(5) .AddReLU() .AddFullLayer(5) .AddReLU() .AddFullLayer(codec.Length) .AddSoftmax() .UseCrossEntropyLoss() .UseGradientDescent(0.001); var trainer = new Trainer(model, 16, 200, true); trainer.StartTrain(X, y, null, null); var machine = new ClassificationMachine(model); machine.LabelCodec = codec; while (true) { Console.Write("input Sepal.Length:"); var a1 = double.Parse(Console.ReadLine()); Console.Write("input Sepal.Width:"); var a2 = double.Parse(Console.ReadLine()); Console.Write("input Petal.Length:"); var a3 = double.Parse(Console.ReadLine()); Console.Write("input Petal.Width:"); var a4 = double.Parse(Console.ReadLine()); var input = new TensorOld(new double[] { a1, a2, a3, a4 }, 1, 4); Console.WriteLine($"you input is {machine.Predict(input).First()}, Codec:{machine.LastCodecResult}, Raw:{machine.LastRawResult}"); } }
private void UseButton_Click(object sender, RoutedEventArgs e) { var info = TrainerGrid.SelectedItem as TrainerInfo; if (info == null) { MessageBox.Show("select a Machine first!"); return; } foreach (TrainerInfo item in TrainerGrid.Items) { item.IsUsing = false; } info.IsUsing = true; var trainer = Storage.Load <Trainer>(info.FileName); machine = trainer.GetClassificationMachine(); }