示例#1
0
        public MultiLayerPerceptron(SigmoidNeuronFactory factory)
        {
            _factory = factory;

            _inputs      = new List <Input>();
            _outputs     = new List <INeuron>();
            _hiddenLayer = new List <INeuron>();
        }
示例#2
0
        public MultiLayerPerceptron BuildMultiLayerPerceptron()
        {
            // 4 inputs, 3 hidden neurons, 2 outputs, fully connected

            var factory = new SigmoidNeuronFactory();

            var network = new MultiLayerPerceptron(factory);

            // input values
            var i1 = new Input();
            var i2 = new Input();
            var i3 = new Input();
            var i4 = new Input();

            // hidden layer
            var hn1 = factory.Create();
            var hn2 = factory.Create();
            var hn3 = factory.Create();
            //var hiddenLayer = new Layer(new List<INeuron> { hn1, hn2, hn3 });

            // output neurons
            var on1 = factory.Create();
            var on2 = factory.Create();

            //var outputLayer = new Layer(new List<INeuron> {on1, on2});

            network.AddInput(i1);
            network.AddInput(i2);
            network.AddInput(i3);
            network.AddInput(i4);

            // hidden layer
            network.AddHiddenNeuron(hn1);
            network.AddHiddenNeuron(hn2);
            network.AddHiddenNeuron(hn3);

            // output layer
            network.AddOutput(on1);
            network.AddOutput(on2);


            // hidden connections
            var dh11 = new Dendrite(learningRate: 1);
            var dh12 = new Dendrite(learningRate: 1);
            var dh21 = new Dendrite(learningRate: 1);
            var dh22 = new Dendrite(learningRate: 1);
            var dh31 = new Dendrite(learningRate: 1);
            var dh32 = new Dendrite(learningRate: 1);

            dh11.SetConnection(hn1);
            dh12.SetConnection(hn1);
            dh21.SetConnection(hn2);
            dh22.SetConnection(hn2);
            dh31.SetConnection(hn3);
            dh32.SetConnection(hn3);

            on1.Connect(dh11);
            on1.Connect(dh21);
            on1.Connect(dh31);
            on2.Connect(dh12);
            on2.Connect(dh22);
            on2.Connect(dh32);


            // input dendrite connections
            var d11 = new Dendrite(learningRate: 1);
            var d12 = new Dendrite(learningRate: 1);
            var d13 = new Dendrite(learningRate: 1);
            var d21 = new Dendrite(learningRate: 1);
            var d22 = new Dendrite(learningRate: 1);
            var d23 = new Dendrite(learningRate: 1);
            var d31 = new Dendrite(learningRate: 1);
            var d32 = new Dendrite(learningRate: 1);
            var d33 = new Dendrite(learningRate: 1);

            d11.SetConnection(i1);
            d12.SetConnection(i1);
            d13.SetConnection(i1);
            d21.SetConnection(i2);
            d22.SetConnection(i2);
            d23.SetConnection(i2);
            d31.SetConnection(i3);
            d32.SetConnection(i3);
            d33.SetConnection(i3);

            hn1.Connect(d11);
            hn1.Connect(d21);
            hn1.Connect(d31);

            hn2.Connect(d12);
            hn2.Connect(d22);
            hn2.Connect(d32);

            hn3.Connect(d13);
            hn3.Connect(d23);
            hn3.Connect(d33);

            return(network);
        }