public Neuron[] neurons;//此層的神經元數量 //public IActivateFunction activateFunction; public void SetActivateFunction(IActivateFunction activatefunction) { for (int i = 0; i < neurons.Length; i++) { neurons[i].activateFunction = activatefunction; } }
/// <summary> /// Konstruktor przyjmujący funkcję aktywacji oraz ilość wejśc sieci. /// </summary> /// <param name="_activateFunction"> Funkcja aktywacji </param> /// <param name="_inputAmount"> Ilość wejść </param> public Neuron(IActivateFunction _activateFunction, int _inputAmount, int _id, bool _isBias) { id = _id; isBias = _isBias; activateFunction = _activateFunction; weights = new double[_inputAmount + (isBias ? 1 : 0)]; prevWeights = new double[_inputAmount + (isBias ? 1 : 0)]; prevDelta = new double[_inputAmount + (isBias ? 1 : 0)]; }
/// <summary> /// Konstruktor warstwy sieci neuronowe. /// </summary> /// <param name="_id"> Id warstwy </param> /// <param name="_neuronAmount"> Ilośc neuronów w warstwie. </param> /// <param name="_inputAmount"> Ilość wejść - długość wektora wejściowego.</param> /// <param name="_activateFunction"> Funkcja aktywacji neuronów w warstwie. </param> /// <param name="_isBias"> Czy neurony warstwy mają posiadać wagę biasu? </param> public Layer(int _id, int _neuronAmount, int _inputAmount, IActivateFunction _activateFunction, bool _isBias) { id = _id; input = new double[_inputAmount]; output = new double[_neuronAmount]; neurons = new List <Neuron>(_neuronAmount); for (int i = 0; i < _neuronAmount; i++) { neurons.Add(new Neuron(_activateFunction, _inputAmount, i, _isBias)); } }
public NeuralNetwork(NetworkSettings settings) { ActivateFunction = settings.ActivateFunction; Layers = new List <Layer>(settings.Size); for (var i = 0; i < settings.Size - 1; ++i) { Layers[i] = new Layer( settings.LayersSize[i], settings.LayersSize[i + 1]); } }
public NetworkSettings(IActivateFunction activationFunction, params int[] layers) { LayersSize = layers; ActivateFunction = activationFunction; }
/// <summary> /// Inicjalizacja pojedynczej warstwy sieci /// </summary> /// <param name="_id">Identyfikator sieci </param> /// <param name="_neuronAmount"> Ilość neuronów w warstwie </param> /// <param name="_inputAmount"> Ilość wejść - długośc wektora wejściowego </param> /// <param name="_activateFunction"> Funkcja aktywacji - Inversion of Control </param> public void initLayer(int _id, int _neuronAmount, int _inputAmount, IActivateFunction _activateFunction, bool _isBias) { layers.Add(new Layer(_id, _neuronAmount, _inputAmount, _activateFunction, _isBias)); }
public BackpropagationMethod(Models.NeuralNetwork network, double learningRate) { _network = network; _learningRate = learningRate; _activateFunction = _network.ActivateFunction; }