public void ForwardPass(Matrix targetValues) { foreach (AffineLayer layer in AffineLayers()) { layer.ForwardPass(); } LossLayer.ForwardPass(targetValues); }
public void BackwardPass(Matrix targetValues) { LinkedListNode <Layer> curLayer = _layers.Last; LossLayer lossLayer = (LossLayer)curLayer.Value; lossLayer.ComputeLossGradients(targetValues); while (true) { curLayer = curLayer.Previous; if (curLayer == null) { break; } curLayer.Value.BackwardPass(); } }
public Model(int inputsCount, ActivationType inputActivationType, int outputsCount, ActivationType outputActivationType, CostType costType) { var inputLayer = new AffineLayer(inputsCount, inputActivationType); _layers.AddFirst(inputLayer); inputLayer.SetListNode(_layers.First); var outputLayer = new AffineLayer(outputsCount, outputActivationType); _layers.AddLast(outputLayer); outputLayer.SetListNode(_layers.Last); LossLayer = new LossLayer(costType, outputsCount); _layers.AddLast(LossLayer); LossLayer.SetListNode(_layers.Last); UpdateLayersIds(); }