internal NeuralLayerFactory(uint sens, uint[] neurons, bool isBiasNeurons, InitializerWeights weightsInitializer, InitializerBias biasInitializer) { _sensorsCount = sens; _neurons = neurons; _isBiasNeurons = isBiasNeurons; _weightsInitializer = weightsInitializer; _biasInitializer = biasInitializer; }
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); } }
public Builder SetWeightsInitializer(InitializerWeights weightsInitializer) { WeightsInitializer = weightsInitializer; return(this); }
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); } }
internal HiddenLayer(uint synapsesCount, uint neuronsCount, bool isBiasNeuron, InitializerWeights weightsInitializer, InitializerBias biasInitializer) : base(synapsesCount, neuronsCount, isBiasNeuron, weightsInitializer, biasInitializer) { }