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();
        }