Esempio n. 1
0
File: NN.cs Progetto: Hundo1018/NN
 public Neuron[] neurons;//此層的神經元數量
 //public IActivateFunction activateFunction;
 public void SetActivateFunction(IActivateFunction activatefunction)
 {
     for (int i = 0; i < neurons.Length; i++)
     {
         neurons[i].activateFunction = activatefunction;
     }
 }
Esempio n. 2
0
 /// <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)];
 }
Esempio n. 3
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));
            }
        }
Esempio n. 4
0
        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;
 }
Esempio n. 6
0
 /// <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));
 }
Esempio n. 7
0
 public BackpropagationMethod(Models.NeuralNetwork network, double learningRate)
 {
     _network          = network;
     _learningRate     = learningRate;
     _activateFunction = _network.ActivateFunction;
 }