public ART1 BuildNetwork(int inputSize, float vigilance = 0.5f, int initialClusterCount = 0) { Contract.Requires<ArgumentOutOfRangeException>(0 < inputSize, "Size of the input vector must be positive."); Contract.Requires<ArgumentOutOfRangeException>(0f < vigilance && vigilance < 1f, "Vigilance parameter must be in (0,1) range."); Contract.Requires<ArgumentOutOfRangeException>(0 <= initialClusterCount, "Initial cluster count must be nonnegative."); InputNeuronFactory inputNeuronFactory = new InputNeuronFactory(); InputLayerBuilder inputLayerBuilder = new InputLayerBuilder(inputNeuronFactory); InputLayer inputLayer = inputLayerBuilder.Build(inputSize); ConnectionFactory connectionFactory = new ConnectionFactory(); OutputNeuronFactory outputNeuronFactory = new OutputNeuronFactory(inputLayer, connectionFactory); OutputLayerBuilder outputLayerBuilder = new OutputLayerBuilder(outputNeuronFactory); OutputLayer outputLayer = outputLayerBuilder.Build(initialClusterCount); OrientingSubsystem orientingSubsystem = new OrientingSubsystem(inputLayer, outputLayer); orientingSubsystem.Vigilance = vigilance; AttentionalSubsystem attentionalSubsystem = new AttentionalSubsystem(orientingSubsystem, inputLayer, outputLayer); ART1 network = new ART1(attentionalSubsystem); return network; }
public ART1PictogramClassifier(ART1 art1Network) { this.art1Network = art1Network; }
public void Renew(int width, int height, float vigilance) { network = ART1Builder.Instance.BuildNetwork(width * height, vigilance); patternInputProcessor.Renew(width, height); }