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(); }
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(); }
/// <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(); }