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); }
public override XElement ToXElement(string name) { var element = base.ToXElement(name); element.Add(InputWeights.ToXElement("inputWeights")); element.Add(OutputWeights.ToXElement("outputWeights")); return(element); }
/// <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)); }