public List <Synapse> BuildSynapses() { Synapses = new List <Synapse>(); var seq = 0; Hiddens.ForEach(p => p.Seq = ++seq); var hiddens = Hiddens.OrderBy(p => p.Seq); var orig = Inputs.ToList(); var id = 0; foreach (var h in hiddens) { var dest = h; Build(orig, dest, ref id); orig = dest; } Build(orig, Outputs, ref id); return(Synapses); }
public void FeedForward() { CalculateNeurons(Inputs); foreach (var hiddens in Hiddens.OrderBy(p => p.Seq)) { CalculateNeurons(hiddens); } }
private void CalculateHiddenErrors() { foreach (var hiddens in Hiddens.OrderByDescending(p => p.Seq)) { foreach (var neuron in hiddens) { neuron.Error = Synapses.Where(p => p.Orig == neuron).Sum(p => p.Dest.Error * dActivation(p.Dest.Value) * p.Weight); } } }
public void BackPropagation() { CalculateErrors(); CalculateSynapse(Outputs); foreach (var hiddens in Hiddens.OrderByDescending(p => p.Seq)) { CalculateSynapse(hiddens); } }
public void FeedForward(float[] inputs) { ActivateFunction activateFunction = ActivateFunctions.Sigmoid; Hiddens[0] = ApplyActivationFunction(Task.Run(() => Feed(WeightsIH, Matrix.ArrayToMatrix(inputs), Bias[0, 0])).Result, activateFunction); for (int i = 0; i < Hiddens.Count() - 1; i++) { Hiddens[i + 1] = ApplyActivationFunction(Task.Run(() => Feed(WeightsH[i], Matrix.ArrayToMatrix(Hiddens[i].Items), Bias[i + 1, 0])).Result, activateFunction); } var lastBias = Bias.GetLength(0) - 1; Outputs = ApplyActivationFunction(Task.Run(() => Feed(WeightsHO, Matrix.ArrayToMatrix(Hiddens.LastOrDefault().Items), Bias[lastBias, 0])).Result, activateFunction); }
public IEnumerable <CstToken> TokenWithHiddens() { return(Hiddens.Concat(Value)); }