/// <summary> /// </summary> /// <param name="nm">Режима работы сети (Train, Test, Demo).</param> /// <param name="LayerInput">Входной слой.</param> public Network(NetworkMode nm, LayerInput LayerInput) { int[] numbNeuronLayers = { 1800, 120, 84, 2 }; input_layer = LayerInput; Console.WriteLine($"Слой свертки..."); first_convolution = new ConvolutionFirst(); Console.WriteLine($"Слой субдескритизации..."); first_subsamping = new SubsampingFirst(); Console.WriteLine($"Слой свертки..."); second_convolution = new ConvolutionSecond(); Console.WriteLine($"Слой субдескритизации..."); second_subsamping = new SubsampingSecond(); int numbLayerHiddens = 2; hidden_layer = new LayerHidden[numbLayerHiddens]; for (int i = 0; i < numbLayerHiddens; i++) { Console.WriteLine($"Полносвязный слой {i}..."); hidden_layer[i] = new LayerHidden(numbNeuronLayers[i + 1], numbNeuronLayers[i], NeuronType.Hidden, $"LayerHiddenConvolution{i}"); } Console.WriteLine($"Полносвязный слой output..."); output_layer = new LayerOutput(numbNeuronLayers[numbNeuronLayers.Length - 1], numbNeuronLayers[numbNeuronLayers.Length - 2], NeuronType.Output, "LayerOutputConvolution"); fact = new double[numbNeuronLayers[numbNeuronLayers.Length - 1]]; }
public void TestDeserialize() { var path = "D:\\1.xml"; var layInput = (LayerInput)LayerInput.Deserialize(path); Assert.AreEqual(layInput.ShapeIn.Rows, 4); }
public void TestActivated() { var inputLayer = new LayerInput(new DataShape(4, 1)); var(item1, item2) = inputLayer.Activated(new DenseMatrix(4, 1)); Assert.AreEqual(item1, item2); }
public void TestSerializer() { var path = "D:\\1.xml"; var inputLayer = new LayerInput(new DataShape(4, 1)); inputLayer.Serializer(path); Assert.IsTrue(File.Exists(path)); }
/// <summary> /// Creates instance of layer input for the specified layer. /// </summary> private static IDatasourceInput ReopenLayerInput(ILayer layer, IDatasourceInput oldInput) { if (layer == null) { return(null); } var input = new LayerInput(layer); var vector = oldInput as IVectorInput; if (vector != null) { input.SelectedOnly = vector.SelectedOnly; } return(input); }
private void AddLayerInput(int neurons) { var layer = new LayerInput { Neurons = new List <Neuron>(), }; for (var i = 1; i <= neurons; i++) { var neuron = new NeuronInput { Connections1 = new List <Connection>(), Connections2 = new List <Connection>(), }; neuron.Bias = Math2.Range(-1f, 1); layer.Neurons.Add(neuron); } this.Layers.Add(layer); }
/// <summary> /// Конструктор. /// </summary> /// <param name="non">Число нейронов текущего слоя.</param> /// <param name="nopn">Число нейронов предыдущего слоя.</param> /// <param name="nt">Тип нейрона.</param> /// <param name="type">Название слоя.</param> protected Layer(int non, int nopn, NeuronType nt, string type) { numofneurons = non; numofprevneurons = nopn; Neurons = new Neuron[non]; Console.WriteLine($"Чтение весов"); double[,] Weights = WeightInitialize(MemoryMode.GET, type); Console.WriteLine($"Чтение весов окончено"); lastdeltaweights = Weights; for (int i = 0; i < non; ++i) { double[] temp_weights = new double[nopn + 1]; for (int j = 0; j < nopn + 1; ++j) { temp_weights[j] = Weights[i, j]; } Neurons[i] = new Neuron(null, temp_weights, nt); } output = new LayerInput(); }
public void CreateLayNet(TrainParameters layNetParameter) { LayerNet = new List <Layer>(); var inputLayer = new LayerInput(InputDataShape) { LayerIndex = 0 }; LayerNet.Add(inputLayer); layNetParameter.InterLayerStructs.ToList().ForEach(a => { var dataShape = LayerNet.Last().ShapeOut; switch (a.LayerType) { case LayerType.FullConnectLayer: var fullConnectedLayer = new LayerFullConnected(dataShape, a.NeureCount) { LayerIndex = LayerNet.Count }; LayerNet.Add(fullConnectedLayer); break; case LayerType.PoolingLayer: var poolingLayer = new LayerPooling(dataShape) { LayerIndex = LayerNet.Count }; LayerNet.Add(poolingLayer); break; } }); var outputLayer = new LayerOutput(LayerNet.Last().ShapeOut, OutputDataShape) { LayerIndex = LayerNet.Count }; LayerNet.Add(outputLayer); }
public void TestInitial() { var inputLayer = new LayerInput(new DataShape(4, 1)); Assert.AreNotEqual(inputLayer, null); }