Exemplo n.º 1
0
        public void Learn(INeuralNetwork net, ILearningSequence<ISupervisedLearningVector> seq)
        {
            LearningStory = new List<NeuronState>();
            bool isLearned = true;

            do
            {
                StoreState(net);
                isLearned = true;
                IEnumerator<ISupervisedLearningVector> en = seq.Vectors.GetEnumerator();
                while (en.MoveNext())
                {
                    net.SetInput(en.Current.Data);

                    net.Compute();

                    double delta = en.Current.CorrectOutput - net[0];
                    if (delta != 0.0)
                    {
                        isLearned = false;
                        CorrectWeights(net, delta > 0 ? 1.0 : -1.0);
                    }

                }
                seq.Shuffle();

            } while (!isLearned);
            StoreState(net);
        }
Exemplo n.º 2
0
        public void Learn(INeuralNetwork net, ILearningSequence<ISupervisedLearningVector> seq)
        {
            LearningStory = new List<NeuronState>();

            bool isLearned = true;
            int counter = 0;
            do
            {
                StoreState(net);
                isLearned = true;
                IEnumerator<ISupervisedLearningVector> en = seq.Vectors.GetEnumerator();
                while (en.MoveNext())
                {
                    net.SetInput(en.Current.Data);
                    net.Compute();
                    CorrectWeights(net, en.Current.CorrectOutput - net.Layers[1][0].Potential);
                }

                en.Reset();

                while (en.MoveNext())
                {
                    net.SetInput(en.Current.Data);

                    net.Compute();

                    if (Math.Abs(en.Current.CorrectOutput - net[0]) > Epsilon)
                    {
                        isLearned = false;
                        break;
                    }
                }
                seq.Shuffle();
                counter++;
            } while (!isLearned && counter < EpochLimit);
            StoreState(net);
            Failed = !isLearned;
        }
Exemplo n.º 3
0
Arquivo: Form1.cs Projeto: wowa/n
 private void Form1_Load(object sender, EventArgs e)
 {
     learningSequence = new LearningSequence<ISupervisedLearningVector>();
     learningSequenceDT = new DataTable();
     dataGridView1.AutoGenerateColumns = true;
     dataGridView1.DataSource = learningSequenceDT;
 }
Exemplo n.º 4
0
Arquivo: Form1.cs Projeto: wowa/n
 private void listBox1_SelectedIndexChanged_1(object sender, EventArgs e)
 {
     switch (listBox1.SelectedIndex)
     {
         case 0:
             learningSequence = new LearningSequence<ISupervisedLearningVector>();
             learningSequence.Add(new SupervisedLearningVector(new double[2] { -1, -1 }, -1));
             learningSequence.Add(new SupervisedLearningVector(new double[2] { 1, -1 }, -1));
             learningSequence.Add(new SupervisedLearningVector(new double[2] { -1, 1 }, -1));
             learningSequence.Add(new SupervisedLearningVector(new double[2] { 1, 1 }, 1));
             UpdateLearningSequenceDT();
             break;
         case 1:
             learningSequence = new LearningSequence<ISupervisedLearningVector>();
             learningSequence.Add(new SupervisedLearningVector(new double[2] { -1, -1 }, -1));
             learningSequence.Add(new SupervisedLearningVector(new double[2] { 1, -1 }, 1));
             learningSequence.Add(new SupervisedLearningVector(new double[2] { -1, 1 }, 1));
             learningSequence.Add(new SupervisedLearningVector(new double[2] { 1, 1 }, 1));
             UpdateLearningSequenceDT();
             break;
         case 2:
             learningSequence = new LearningSequence<ISupervisedLearningVector>();
             learningSequence.Add(new SupervisedLearningVector(new double[2] { 0, 0 }, 0));
             learningSequence.Add(new SupervisedLearningVector(new double[2] { 1, 0 }, 0));
             learningSequence.Add(new SupervisedLearningVector(new double[2] { 0, 1 }, 0));
             learningSequence.Add(new SupervisedLearningVector(new double[2] { 1, 1 }, 1));
             UpdateLearningSequenceDT();
             break;
         case 3:
             learningSequence = new LearningSequence<ISupervisedLearningVector>();
             learningSequence.Add(new SupervisedLearningVector(new double[2] { 0, 0 }, 0));
             learningSequence.Add(new SupervisedLearningVector(new double[2] { 1, 0 }, 1));
             learningSequence.Add(new SupervisedLearningVector(new double[2] { 0, 1 }, 1));
             learningSequence.Add(new SupervisedLearningVector(new double[2] { 1, 1 }, 1));
             UpdateLearningSequenceDT();
             break;
     }
 }