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); }
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); }
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); }