public NeuralLayer(int inputSize, int neuronsSize, bool randomWeights, double[] randomWeightsLimits, TransitionFunction tf, bool useBias) { neurons = new Neuron[neuronsSize]; for (int j = 0; j < neuronsSize; j++) { double[] weights = new double[inputSize]; neurons[j] = new Neuron(weights, 0, tf); if (randomWeights) { neurons[j].RandomFill(randomWeightsLimits, useBias); } } }
private void Init(int inputSize, int neuronsSize, bool randomWeights, double[] randomWeightsLimits, int neighbourhoodDimension) { neurons = new Neuron[neuronsSize]; for (int j = 0; j < neuronsSize; j++) { double[] weights = new double[inputSize]; neurons[j] = new Neuron(weights, 0); if (randomWeights) neurons[j].RandomFill(randomWeightsLimits, true); } int length = (int)Math.Ceiling(Math.Pow(neuronsSize, 1.0 / neighbourhoodDimension)); for (int i = 0; i < neuronsSize; i++) { double[] pos = new double[neighbourhoodDimension]; int p = i; for (int j = 0; j < neighbourhoodDimension - 1; j++) { pos[j] = p % length; p /= length; } pos[neighbourhoodDimension - 1] = p; neurons[i].Position = pos; } }
public KohonenLayer(Neuron[] neurons) { this.neurons = neurons; }
public NeuralLayer(Neuron[] neurons) { this.neurons = neurons; }