public void AdjustWeights(INeuralNetwork nn, double[][] weightGradients, double[][] prevWeightGradients)
{
var weights = nn.Weights;
for (var i = 0; i < weightGradients.Length; i++)
{
var gradientSubList = weightGradients[i];
var weightSubList = weights[i];
for (var j = 0; j < gradientSubList.Length; j++)
{
var prevWeight = weightSubList[j];
var fullGradient = gradientSubList[j] + QuadraticRegularization * prevWeight +
Momentum * prevWeightGradients[i][j];
weightSubList[j] = prevWeight - LearningRate * fullGradient;
}
}
}