Beispiel #1
0
        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)}");
            }
        }
Beispiel #2
0
        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}");
            }
        }
Beispiel #3
0
        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();
        }