public SigmoidNeuron(int numberOfInputs, SigmoidFunction function, double minInitialWeight, double maxInitialWeight, bool biased) : base(numberOfInputs) { this.function = function; this.SetInitialWeights(minInitialWeight, maxInitialWeight); this.biased = biased; if (this.biased) biasedWeight = rand.NextDouble() * (maxInitialWeight - minInitialWeight) + minInitialWeight; }
public SigmoidLayer(int numberOfNeurons, int numberOfInputs, SigmoidFunction function, double minInitialWeight, double maxInitialWeight, bool biased) : base(numberOfNeurons, numberOfInputs) { for (int i = 0; i < numberOfNeurons; i++) { neurons[i] = new SigmoidNeuron(numberOfInputs, function, minInitialWeight, maxInitialWeight, biased); } }
public PerceptronNetwork(SigmoidFunction function, int numberOfInputs, double minInitialWeight, double maxInitialWeight, bool biased, params int[] numberOfNeurons) : base(numberOfInputs, numberOfNeurons.Length) { layers[0] = new InputLayer(numberOfInputs); for (int i = 1; i < numberOfLayers; i++) { layers[i] = new SigmoidLayer(numberOfNeurons[i], numberOfNeurons[i - 1], function, minInitialWeight, maxInitialWeight, biased); } }
private void trainNeuronBtn_Click(object sender, EventArgs e) { if (perceptronNetwork != null) perceptronNetwork = null; SigmoidFunction sigmoidFunction = new SigmoidFunction(); int[] numberOfNeurons = {numberOfInputs, int.Parse(hiddenNeuronsTB.Text), numberOfInputs}; bool biased = biasedChkBox.Checked; perceptronNetwork = new PerceptronNetwork(sigmoidFunction, numberOfInputs, -0.5, 0.5, biased, numberOfNeurons); perceptronTraining = new PerceptronTraining(ref perceptronNetwork); int epochs = int.Parse(epochsTB.Text); double trainingStep = double.Parse(trainingStepTB.Text); perceptronTraining.TrainingStep = trainingStep; perceptronTraining.RunTraining(ref trainingSet, epochs); trained = true; computeBtn.Enabled = trained; updateTrainingOutputList(); }