Beispiel #1
0
        // three layers: input, hidden, output
        // as mlp add context layer
        // jordan  connect output of output  layer to input of context layer
        // output of context to input of hidden layer



        private void createNetwork(int inputNeuronsCount, int hiddenNeuronsCount, int contextNeuronsCount, int outputNeuronsCount)
        {
            // create input layer
            InputLayer inputLayer = new InputLayer(inputNeuronsCount);

            inputLayer.addNeuron(new BiasNeuron());
            addLayer(inputLayer);

            NeuronProperties neuronProperties = new NeuronProperties();

            // neuronProperties.setProperty("useBias", true);
            neuronProperties.setProperty("transferFunction", TransferFunctionType.Sigmoid.ToString());             // use linear or logitic function! (TR-8604.pdf)

            Layer hiddenLayer = new Layer(hiddenNeuronsCount, neuronProperties);

            hiddenLayer.addNeuron(new BiasNeuron());
            addLayer(hiddenLayer);

            ConnectionFactory.fullConnect(inputLayer, hiddenLayer);

            Layer contextLayer = new Layer(contextNeuronsCount, neuronProperties);

            addLayer(contextLayer);                             // we might also need bias for context neurons?

            Layer outputLayer = new Layer(outputNeuronsCount, neuronProperties);

            addLayer(outputLayer);

            ConnectionFactory.fullConnect(hiddenLayer, outputLayer);

            ConnectionFactory.fullConnect(outputLayer, contextLayer);
            ConnectionFactory.fullConnect(contextLayer, hiddenLayer);


            // set input and output cells for network
            NeuralNetworkFactory.DefaultIO = this;

            // set learnng rule
            this.LearningRule = new BackPropagation();
        }
Beispiel #2
0
        /// <summary>
        /// Creates adaline network architecture with specified number of input neurons
        /// </summary>
        /// <param name="inputNeuronsCount">
        ///              number of neurons in input layer </param>
        private void createNetwork(int inputNeuronsCount)
        {
            // set network type code
            this.NetworkType = NeuralNetworkType.ADALINE;

            // create input layer neuron settings for this network
            NeuronProperties inNeuronProperties = new NeuronProperties();

            inNeuronProperties.setProperty("transferFunction", TransferFunctionType.Linear.ToString());

            // createLayer input layer with specified number of neurons
            Layer inputLayer = LayerFactory.createLayer(inputNeuronsCount, inNeuronProperties);

            inputLayer.addNeuron(new BiasNeuron());                             // add bias neuron (always 1, and it will act as bias input for output neuron)
            this.addLayer(inputLayer);

            // create output layer neuron settings for this network
            NeuronProperties outNeuronProperties = new NeuronProperties();

            outNeuronProperties.setProperty("transferFunction", TransferFunctionType.Ramp.ToString());
            outNeuronProperties.setProperty("transferFunction.slope", 1);
            outNeuronProperties.setProperty("transferFunction.yHigh", 1);
            outNeuronProperties.setProperty("transferFunction.xHigh", 1);
            outNeuronProperties.setProperty("transferFunction.yLow", -1);
            outNeuronProperties.setProperty("transferFunction.xLow", -1);

            // createLayer output layer (only one neuron)
            Layer outputLayer = LayerFactory.createLayer(1, outNeuronProperties);

            this.addLayer(outputLayer);

            // createLayer full conectivity between input and output layer
            ConnectionFactory.fullConnect(inputLayer, outputLayer);

            // set input and output cells for network
            NeuralNetworkFactory.DefaultIO = this;

            // set LMS learning rule for this network
            this.LearningRule = new LMS();
        }