Пример #1
0
 internal NeuralLayerFactory(uint sens, uint[] neurons, bool isBiasNeurons, InitializerWeights weightsInitializer, InitializerBias biasInitializer)
 {
     _sensorsCount       = sens;
     _neurons            = neurons;
     _isBiasNeurons      = isBiasNeurons;
     _weightsInitializer = weightsInitializer;
     _biasInitializer    = biasInitializer;
 }
Пример #2
0
        internal static float[][] InitializeNeuronWeights(uint synapsesCount, uint neuronsCount, InitializerWeights weightsInitializer)
        {
            float[][] _randomWeights = new float[synapsesCount][];

            for (int synapse = 0; synapse < synapsesCount; synapse++)
            {
                if (_randomWeights[synapse] == null)
                {
                    _randomWeights[synapse] = new float[neuronsCount];
                }
                for (int neuron = 0; neuron < neuronsCount; neuron++)
                {
                    _randomWeights[synapse][neuron] = GetWeights(weightsInitializer);
                }
            }

            return(_randomWeights);

            float GetWeights(InitializerWeights initializer)
            {
                float _weight = 0;

                switch (initializer)
                {
                case InitializerWeights.Zeros:
                    _weight = 0F;
                    break;

                case InitializerWeights.Ones:
                    _weight = 1F;
                    break;

                case InitializerWeights.Random:
                    _weight = (float)Math.Round(_random.NextDouble(), 5);
                    break;

                case InitializerWeights.XavierUniform:
                    var max   = Math.Sqrt(6 / (synapsesCount + neuronsCount));
                    var min   = -1 * max;
                    var range = 2 * max;
                    _weight = (float)Math.Round(min + _random.NextDouble() * range, 5);
                    break;
                }
                return(_weight);
            }
        }
Пример #3
0
 public Builder SetWeightsInitializer(InitializerWeights weightsInitializer)
 {
     WeightsInitializer = weightsInitializer;
     return(this);
 }
Пример #4
0
 internal NeuralLayer(uint synapsesCount, uint neuronsCount, bool isBiasNeuron, InitializerWeights weightsInitializer, InitializerBias biasInitializer)
 {
     _SynapsesCount = synapsesCount;
     _NeuronsCount  = neuronsCount;
     _NeuronWeights = NeuralMath.InitializeNeuronWeights(_SynapsesCount, _NeuronsCount, weightsInitializer);
     if (isBiasNeuron)
     {
         _BiasWeights = NeuralMath.InitializeBiasWeights(neuronsCount, biasInitializer);
     }
 }
Пример #5
0
 internal HiddenLayer(uint synapsesCount, uint neuronsCount, bool isBiasNeuron, InitializerWeights weightsInitializer, InitializerBias biasInitializer)
     : base(synapsesCount, neuronsCount, isBiasNeuron, weightsInitializer, biasInitializer)
 {
 }