public WeightChangeBackPropagator(IWeightChangeApplier weightChangeApplier, IEnumerable <IEnumerable <ITraversableUnitReadOnly <IUnitUnderTraining, IConnectionUnderTraining, IUnitActivationTraining> > > layeredUnits, double learningRate, double momentum = 0d) { _momentum = momentum; _layeredConnections = layeredUnits.Skip(1).SelectMany(u => u).Select(u => u.IncomingConnections); _calculator = new WeightChangeCalculator(learningRate); _weightChangeApplier = weightChangeApplier; }
protected ErrorBackPropagationStepsBase(IWeightSetter weightSetter, IWeightChangeApplier weightChangeApplier, IPerceptronUnderTraining perceptronUnderTraining, double learningRate, double momentum) { CheckLearningRate(learningRate); Perceptron = perceptronUnderTraining; _weightInitializer = new WeightInitializer(Perceptron.Network, weightSetter: weightSetter); _errorValueBackPropagator = new ErrorValueBackPropagator(Perceptron.Network); _weightChangeBackPropagator = new WeightChangeBackPropagator(weightChangeApplier, Perceptron.Network, learningRate, momentum); }