Exemplo n.º 1
0
        protected NeuralLink(NeuralNodeBase inNode, NeuralNodeBase outNode)
        {
            InNode  = inNode;
            OutNode = outNode;

            InitValues(1);
        }
        public override void CreateNetwork()
        {
            Nodes = new NeuralNodeBase[NodeCount];
            Links = new NeuralLink[LinkCount];

            var curr = 0;

            for (var i = 0; i < NodeCounts[0]; i++)                  // Input layer nodes
            {
                Nodes[curr++] = new InputNode();
            }

            FirstMiddleNode = curr;                                                     // Middle layer nodes
            for (var i = 1; i < NumLayers - 1; i++)
            {
                for (var j = 0; j < NodeCounts[i]; j++)
                {
                    Nodes[curr++] = new BPMiddleNode(LearningRate, MomentumTerm);
                }
            }

            FirstOutputNode = curr;                              // Output layer nodes
            for (var i = 0; i < NodeCounts[NumLayers - 1]; i++)
            {
                Nodes[curr++] = new BPOutputNode(LearningRate, MomentumTerm);
            }

            for (var i = 0; i < LinkCount; i++)                        // Create Links
            {
                Links[i] = new BackPropagationLink();
            }

            curr = 0;
            int layer1 = 0, layer2 = FirstMiddleNode;

            for (var i = 0; i < NumLayers - 1; i++)                   // Connect Layers
            {
                for (var j = 0; j < NodeCounts[i + 1]; j++)
                {
                    for (var k = 0; k < NodeCounts[i]; k++)
                    {
                        Links[curr].InNode  = Nodes[layer1 + k];
                        Links[curr].OutNode = Nodes[layer2 + j];

                        var link    = Links[curr++];
                        var inNode  = Nodes[layer1 + k];
                        var outNode = Nodes[layer2 + j];

                        inNode.OutLinks.Add(link);
                        outNode.InLinks.Add(link);

                        link.InNode  = inNode;
                        link.OutNode = outNode;
                    }
                }

                layer1  = layer2;
                layer2 += NodeCounts[i + 1];
            }
        }
Exemplo n.º 3
0
        protected override void createNetwork()
        {
            nodes = new NeuralNodeBase[nodeCount];
            links = new NeuralLink[linkCount];

            for (int i = 0; i < nodeCount - 2; i++)           // Create Input Nodes
            {
                nodes[i] = new InputNode();
            }

            nodes[nodeCount - 2] = new BiasNode();                // Create Bias Node
            nodes[nodeCount - 1] = new AdalineNode(learningRate);

            for (int i = 0; i < linkCount; i++)
            {
                AdalineLink l = new AdalineLink(nodes[i], nodes[nodeCount - 1]);               // Create links

                //l.InNode = nodes[i];
                //l.OutNode = nodes[nodeCount-1];

                links[i] = l;
            }

            for (int i = 0; i < linkCount; i++)                   // Connect inputs to ADALINE
            {
                Link(nodes[i], nodes[nodeCount - 1], links[i]);
            }
        }
Exemplo n.º 4
0
        public AdalineLink(NeuralNodeBase InNode, NeuralNodeBase OutNode)
        {
            setValue(NeuralLink.WeightIndex, Utility.RandomRange(-1.0, 1.0));

            inNode  = InNode;
            outNode = OutNode;
        }
Exemplo n.º 5
0
        protected NeuralLink(NeuralNodeBase inNode, NeuralNodeBase outNode, int size)
        {
            InNode  = inNode;
            OutNode = outNode;

            var numValues = size;

            if (numValues < 1)
            {
                numValues = 1;
            }

            InitValues(numValues);
        }
Exemplo n.º 6
0
        protected int OutputCount;     // Number of Output Layer Nodes

        public override void CreateNetwork()
        {
            Nodes = new NeuralNodeBase[NodeCount];
            Links = new NeuralLink[LinkCount];

            for (var i = 0; i < InputCount; i++)              // Create Input Nodes
            {
                Nodes[i] = new BAMInputNode();
            }

            for (var i = InputCount; i < InputCount + OutputCount; i++)     // Create Output Nodes
            {
                Nodes[i] = new BAMNode();
            }

            for (var i = 0; i < LinkCount; i++)               // Create links
            {
                Links[i] = new BAMLink();
            }

            var currLink = 0;

            for (var i = 0; i < InputCount; i++)                  // Connect inputs to ADALINE
            {
                for (var j = InputCount; j < InputCount + OutputCount; j++)
                {
                    Links[currLink].InNode  = Nodes[i];
                    Links[currLink].OutNode = Nodes[j];

                    var inNode  = Nodes[i];
                    var outNode = Nodes[j];
                    var link    = Links[currLink++];

                    outNode.InLinks.Add(link);
                    inNode.OutLinks.Add(link);

                    link.InNode  = inNode;
                    link.OutNode = outNode;
                }
            }
        }
 public BackPropagationLink(NeuralNodeBase inNode, NeuralNodeBase outNode)
     : base(inNode, outNode, 2)
 {
     Init();
 }
Exemplo n.º 8
0
 public AdalineLink(NeuralNodeBase inNode, NeuralNodeBase outNode) : base(inNode, outNode)
 {
     this[WeightIndex] = Utility.RandomRange(-1.0, 1.0);
 }