/// <summary> /// Creates MaxNet network architecture /// </summary> /// <param name="neuronNum"> /// neuron number in network </param> /// <param name="neuronProperties"> /// neuron properties </param> private void createNetwork(int neuronsCount) { // set network type this.NetworkType = NeuralNetworkType.MAXNET; // createLayer input layer in layer Layer inputLayer = LayerFactory.createLayer(neuronsCount, new NeuronProperties()); this.addLayer(inputLayer); // createLayer properties for neurons in output layer NeuronProperties neuronProperties = new NeuronProperties(); neuronProperties.setProperty("neuronType", typeof(CompetitiveNeuron)); neuronProperties.setProperty("transferFunction", TransferFunctionType.Ramp.ToString()); // createLayer full connectivity in competitive layer CompetitiveLayer competitiveLayer = new CompetitiveLayer(neuronsCount, neuronProperties); // add competitive layer to network this.addLayer(competitiveLayer); double competitiveWeight = -(1 / (double)neuronsCount); // createLayer full connectivity within competitive layer ConnectionFactory.fullConnect(competitiveLayer, competitiveWeight, 1); // createLayer forward connectivity from input to competitive layer ConnectionFactory.forwardConnect(inputLayer, competitiveLayer, 1); // set input and output cells for this network NeuralNetworkFactory.DefaultIO = this; }
// three layers: input, hidden, output // as mlp add context layer // elman connect output of hidden 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()); 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.forwardConnect(hiddenLayer, contextLayer); // forward or full connectivity? ConnectionFactory.fullConnect(contextLayer, hiddenLayer); // set input and output cells for network NeuralNetworkFactory.DefaultIO = this; // set learnng rule this.LearningRule = new BackPropagation(); }