コード例 #1
0
ファイル: frmMain.cs プロジェクト: ogbanugot/DeepKurtex
        partial void test_ann_model_acyclicToolStripMenuItem_Click(object sender, EventArgs e)
        {
            string log = "";

            string c = "";

            c += "[neu=hiddenperceptron; act=tanh(a=0.5, b=0.03); fieldsize=2; nodes=2]";
            c += "[neu=outputperceptron; act=tanh(a = 0.2, b = 1.786); nodes=2]";

            Feedforward[] fnn = new Feedforward[2];

            fnn[0] = new Feedforward();
            fnn[0].Configure(c);

            Node[] input = new Node[]
            {
                new Node(new double?[] { 0.05, 0.00 }),
                new Node(new double?[] { 0.01, 0.00 })
            };

            fnn[0].Input = input;

            double[][] dataSet = new double[2][];
            dataSet[0] = new double[] { 0.05, 0.10 };
            dataSet[1] = new double[] { 0.01, 0.99 };

            richTextBox.Text = log;
        }
コード例 #2
0
ファイル: frmMain.cs プロジェクト: ogbanugot/DeepKurtex
        partial void test_ann_trainer_deltaRuleToolStripMenuItem_Click(object sender, EventArgs e)
        {
            string log = "";
            int    epochs = 10;
            double learningRate = 0.09, momentum = 0.6;

            Node[] input = new Node[]
            {
                new Node(new double?[] { 0.00, null }),
                new Node(new double?[] { 0.00, null })
            };

            string c = ""; // configuration string

            c += "[neu=hiddenperceptron; act=tanh(a=1.7159, b=0.6667); fieldsize=2; nodes=2]";
            c += "[neu=outputperceptron; act=tanh(a=1.7159, b=0.6667); nodes=1]";

            Feedforward[] fnn = new Feedforward[2];

            fnn[0] = new Feedforward();
            fnn[0].Configure(c);

            fnn[0].Input = input;

            // create or data set
            DataSet orDataSet = new DataSet(2, 1);

            orDataSet.Add(new double[] { -1.0, -1.0 }, new double[] { -1.0 });
            orDataSet.Add(new double[] { -1.0, +1.0 }, new double[] { +1.0 });
            orDataSet.Add(new double[] { +1.0, -1.0 }, new double[] { +1.0 });
            orDataSet.Add(new double[] { +1.0, +1.0 }, new double[] { +1.0 });

            // instantiate trainer
            DeltaRule dRule = new DeltaRule();

            dRule.Configure(fnn[0], epochs, orDataSet.Data, learningRate, momentum);

            //log += dRule.Next();

            dRule.Next();

            double[][] data = orDataSet.Data;
            for (int i = 0; i < orDataSet.Count; i++)
            {
                fnn[0].SetInput(data[i * 2]);
                fnn[0].PropagateSignal();
                log += "\n\n" + fnn[0].ToString();
            }

            fnn[1] = new Feedforward();
            fnn[1].Configure <Tanh>(new int[] { 2, 1 }, new double?[] { 1.7159, 0.6667 }, 2);

            fnn[1].Input = input;

            DataSet xrDataSet = new DataSet(2, 1);

            xrDataSet.Add(new double[] { -1.0, -1.0 }, new double[] { -1.0 });
            xrDataSet.Add(new double[] { -1.0, +1.0 }, new double[] { +1.0 });
            xrDataSet.Add(new double[] { +1.0, -1.0 }, new double[] { +1.0 });
            xrDataSet.Add(new double[] { +1.0, +1.0 }, new double[] { -1.0 });

            epochs       = 200;
            learningRate = 0.1; momentum = 0.80;

            dRule.Configure(fnn[1], epochs, xrDataSet.Data, learningRate, momentum);

            //log += dRule.Next();

            dRule.Next();

            log += "\n\n////////////////////////////////////////////////////////////////////";

            data = xrDataSet.Data;
            for (int i = 0; i < xrDataSet.Count; i++)
            {
                fnn[1].SetInput(data[i * 2]);
                fnn[1].PropagateSignal();
                log += "\n\n" + fnn[1].ToString();
            }

            richTextBox.Text = log;
        }