public Network() { // 0 слой - входной входных соединений нет InputLayer = new Layer2D(InputImageWidth, InputImageHeight, 0, 0); // 1 слой - сверточный, 156 весов, 26364 входных соединений var layer1 = new ConvolutionalLayer(L1MapsCount, L1MapWidth, L1MapHeight, L1InputsPerNeuron, Kernel); layer1.ConnectTo(InputLayer); // 2 слой - сверточный, 7550 весов, 188750 входных соединений var layer2 = new ConvolutionalLayer(L2MapsCount, L2MapWidth, L2MapHeight, L2InputsPerNeuron, Kernel); layer2.ConnectTo(layer1); // 3 слой - полносвязный, 125100 весов, 125100 соединений var layer3 = new Layer(L3NeuronsCount, L3InputsPerNeuron); layer3.ConnectTo(layer2); // 4 слой - полносвязный, 1010 весов, 1010 соединений OutputLayer = new Layer(L4NeuronsCount, L4InputsPerNeuron); OutputLayer.ConnectTo(layer3); for (int y = 0, n = 0; y < InputLayer.Height; y++) { for (var x = 0; x < InputLayer.Width; x++, n++) { Debug.Assert(InputLayer.Neurons[n] == InputLayer.Neurons2D[y][x], string.Format("n => y, x: {0} => {1}, {2}", n, y, x)); } } Layers = new[] { InputLayer, layer1, layer2, layer3, OutputLayer }; }
/// <summary> /// ќбеспечивает соединение каждой карты признаков с каждой картой признаков входного сверточного сло¤. /// </summary> /// <param name="inputLayer">¬ходной сверточный слой.</param> public void ConnectTo(ConvolutionalLayer inputLayer) { // каждую карту признаков подключаем к входному слою foreach (var featureMap in FeatureMaps) { featureMap.ConnectTo(inputLayer, _kernel); } }
public void ConnectTo(ConvolutionalLayer inputLayer, KernelParams kernel) { // поочередно подключаем карту к каждой карте входного слоя, var inputsCounter = 0; foreach (var featureMap in inputLayer.FeatureMaps) ConnectWithoutBiasTo(featureMap, kernel, ref inputsCounter); ConnectLastToBias(); }
public void ConnectTo(ConvolutionalLayer inputLayer, KernelParams kernel) { // поочередно подключаем карту к каждой карте входного слоя, var inputsCounter = 0; foreach (var featureMap in inputLayer.FeatureMaps) { ConnectWithoutBiasTo(featureMap, kernel, ref inputsCounter); } ConnectLastToBias(); }