示例#1
0
        public XORNetworkLayout()
        {
            var neuronInitializer = new RandomLayerInitializer();
            var outputActivation  = new SigmoidActivation();

            layers = new List <Layer>
            {
                new Layer(2, 3, neuronInitializer, outputActivation),
                new Layer(3, 1, neuronInitializer, outputActivation),
            };

            ConnectLayers();
        }
示例#2
0
        public CustomNetworkLayout(LayerConfiguration firstHiddenConfig, params LayerConfiguration[] nextHiddenConfigs)
        {
            var initializer = new RandomLayerInitializer();

            layers = new List <Layer>
            {
                new Layer(784, firstHiddenConfig.NeuronCount, initializer, firstHiddenConfig.OutputActivation)
            };

            int previousLayerNeuronCount = firstHiddenConfig.NeuronCount;

            foreach (LayerConfiguration layerConfig in nextHiddenConfigs)
            {
                layers.Add(new Layer(previousLayerNeuronCount, layerConfig.NeuronCount, initializer, layerConfig.OutputActivation));
                previousLayerNeuronCount = layerConfig.NeuronCount;
            }

            layers.Add(new Layer(previousLayerNeuronCount, 10, initializer, new SigmoidActivation()));

            ConnectLayers();
        }
示例#3
0
        /// <summary>
        /// Предоставляет класс для конфигурации структуры нейронной сети.
        /// </summary>
        /// <param name="layerConfigurations">Коллекция конфигураций слоя нейронной сети</param>
        public NeuraNetLayout(LayerConfiguration[] layerConfigurations)
        {
            if (layerConfigurations == null)
            {
                throw new ArgumentNullException("layerConfigurations");
            }

            if (layerConfigurations.Length < 2)
            {
                throw new ArgumentException("Минимальное количество слоев в нейронной сети должно быть равно двум", "layerConfigurations");
            }

            var initializer = new RandomLayerInitializer();

            layers = Enumerable.Range(1, layerConfigurations.Length - 1).Select(index =>
            {
                var activation = GetActivationByName(layerConfigurations[index].OutputActivationName);
                return(new Layer(layerConfigurations[index - 1].NeuronCount, layerConfigurations[index].NeuronCount, initializer, activation));
            }).ToList();

            ConnectLayers();
        }