Example #1
0
        public int GetWinner(NormalizeInput input)
        {
            var winner = 0;

            if (Output == null)
            {
                Output = new double[OutputNeuronCount];
            }

            var biggest = Double.MinValue;

            for (var i = 0; i < OutputNeuronCount; i++)
            {
                Output[i] = MatrixMath.DotProduct(input.InputMatrix, OutputWeights.GetRow(i)) * input.NormalizationFactor;
                Output[i] = (Output[i] + 1.0) / 2.0;

                if (Output[i] > biggest)
                {
                    biggest = Output[i];
                    winner  = i;
                }

                if (Output[i] < 0)
                {
                    Output[i] = 0;
                }
                if (Output[i] > 1)
                {
                    Output[i] = 1;
                }
            }
            return(winner);
        }
Example #2
0
        public override XElement ToXElement(string name)
        {
            var element = base.ToXElement(name);

            element.Add(InputWeights.ToXElement("inputWeights"));
            element.Add(OutputWeights.ToXElement("outputWeights"));
            return(element);
        }
Example #3
0
 /// <summary>
 /// Used after all values have been loaded to link that value to all outputs
 /// </summary>
 /// <param name="values">The list of all values</param>
 internal void LinkTo(List <IndexedValue> values)
 {
     foreach (string s in tmpOutputs.Keys)
     {
         IndexedValue output = values.Exists(v => v.Name.Equals(s))?values.Find(v => v.Name.Equals(s)):null;
         if (output != null)
         {
             OutputWeights.Add(output, tmpOutputs[s]);
         }
     }
 }
        public Vector <float> FeedForward(Vector <float> inputs)
        {
            Vector <float> hiddenActivations = HiddenWeights
                                               .Multiply(inputs)
                                               .Add(HiddenBiases)
                                               .Map(NetworkParameters.HiddenLayerActivationFunction);

            return(OutputWeights
                   .Multiply(hiddenActivations)
                   .Add(OutputBiases)
                   .Map(NetworkParameters.OutputLayerActivationFunction));
        }
 public string ToFullParamsString()
 {
     return($"{NetworkParameters.InputCount}-{NetworkParameters.HiddenLayerNeuronCount}\n" +
            $"{HiddenWeights.ToMatrixString()}\n{HiddenBiases.ToVectorString()}\n{OutputWeights.ToMatrixString()}\n{OutputBiases.ToVectorString()}");
 }
 public override string ToString()
 {
     return($"{NetworkParameters.InputCount}-{NetworkParameters.HiddenLayerNeuronCount} " +
            $"{HiddenWeights.GetHashCode()},{HiddenBiases.GetHashCode()},{OutputWeights.GetHashCode()},{OutputBiases.GetHashCode()}");
 }
 public NeuralNetwork Clone()
 {
     return(new NeuralNetwork(HiddenWeights.Clone(), HiddenBiases.Clone(), OutputWeights.Clone(),
                              OutputBiases.Clone(), NetworkParameters.HiddenLayerActivationFunction, NetworkParameters.OutputLayerActivationFunction));
 }