示例#1
0
        public void Learning()
        {
            var networkConfig  = new NetworkConfiguration(3, 5);
            var learningConfig = new LearningConfiguration
            {
                ThetaFactorPerEpoch  = 0.95,
                DefaultRepeatsNumber = 25
            };
            var network  = new KohonenNetwork <Logistic>(networkConfig);
            var learning = new UnsupervisedLearning(network, learningConfig);

            var inputs = _getInputs();

            learning.Learn(inputs);

            network.Input(_control[0]);
            var res0 = network.GetOutputIndex();

            network.Input(_control[1]);
            var res1 = network.GetOutputIndex();

            network.Input(_control[2]);
            var res2 = network.GetOutputIndex();

            Assert.NotEqual(res0, res1);
            Assert.Equal(res1, res2);
        }
示例#2
0
        public async Task Organizing()
        {
            var networkConfig  = new NetworkConfiguration(3, 1);
            var network        = new KohonenNetwork <Logistic>(networkConfig);
            var learningConfig = new LearningConfiguration
            {
                ThetaFactorPerEpoch = 0.95,
                OrganizingAlgorithm = new Organizing <Logistic>(network, 0.777)
            };
            var learning = new UnsupervisedLearning(network, learningConfig);

            var inputs = _getInputs();
            await learning.LearnAsync(inputs, 25);

            network.Input(_control[0]);
            var res0 = await network.GetOutputIndexAsync();

            network.Input(_control[1]);
            var res1 = await network.GetOutputIndexAsync();

            network.Input(_control[2]);
            var res2 = await network.GetOutputIndexAsync();

            Assert.NotEqual(res0, res1);
            Assert.Equal(res1, res2);
        }
示例#3
0
        private bool _checkRange(IEnumerable <double> input)
        {
            _network.Input(input);
            var index       = _network.GetOutputIndex();
            var euclidRange = EuclidRangeSummator.GetEuclidRange(_network.OutputLayer.Nodes[index] as ISlaveNode);

            return(euclidRange < _criticalRange);
        }