Example #1
0
        public void SyncTPM(TPM.TPM m1, TPM.TPM m2)
        {
            for (int i = 0; i < int.MaxValue; i++)
            {
                var weightsOld1 = m1.InputLayer.GetTargetWeights();
                var weightsold2 = m2.InputLayer.GetTargetWeights();

                var rand  = new Random(DateTime.Now.Millisecond);
                var input = new List <int>();
                for (int j = 0; j < m1.InputLayer.Neurons.Count; j++)
                {
                    var r = rand.Next(-1, 2);
                    while (r == 0)
                    {
                        r = rand.Next(-1, 2);
                    }
                    input.Add(r);
                }
                m1.Run(input.ToArray());
                m2.Run(input.ToArray());
                if (m1.OutputLayer.GetOutput() == m2.OutputLayer.GetOutput())
                {
                    UpdateWeights(m1);
                    UpdateWeights(m2);
                }

                var weights1 = m1.InputLayer.GetTargetWeights();
                var weights2 = m2.InputLayer.GetTargetWeights();

                var success = true;
                for (var k = 0; k < weights1.Count; k++)
                {
                    if (weights1[k] != weights2[k])
                    {
                        success = false;
                        break;
                    }
                }
                if (success)
                {
                    throw new Exception();
                }
            }
        }
Example #2
0
        public void SyncTPM(TPM.TPM m1 , TPM.TPM m2)
        {
            for (int i = 0; i < int.MaxValue; i++)
            {
                var weightsOld1 = m1.InputLayer.GetTargetWeights();
                var weightsold2 = m2.InputLayer.GetTargetWeights();

                var rand = new Random(DateTime.Now.Millisecond);
                var input = new List<int>();
                for (int j = 0; j < m1.InputLayer.Neurons.Count; j++)
                {
                    var r = rand.Next(-1, 2);
                    while (r == 0)
                    {
                        r = rand.Next(-1, 2);
                    }
                    input.Add(r);
                }
                m1.Run(input.ToArray());
                m2.Run(input.ToArray());
                if (m1.OutputLayer.GetOutput() == m2.OutputLayer.GetOutput()){
                    UpdateWeights(m1);
                    UpdateWeights(m2);
                }

                var weights1 = m1.InputLayer.GetTargetWeights();
                var weights2 = m2.InputLayer.GetTargetWeights();

                var success = true;
                for (var k = 0; k < weights1.Count; k++)
                {
                    if (weights1[k] != weights2[k])
                    {
                        success = false;
                        break;
                    }
                }
                if (success)
                {
                    throw new Exception();
                }
            }
        }