applyGradients method
void
applyGradients(])
apply gradients
to the layers
with Optimizer
's logic
Implementation
@override
void applyGradients(gradients, layers, [parametr]) {
if (momentum == 0) {
for (int i = 0; i < layers.length; i += 1) {
if (layers[i].useBiases) {
layers[i].b = layers[i].b! - gradients[i][0].scaled(biasLearningRate);
}
layers[i].w = layers[i].w! - gradients[i][1].scaled(learningRate);
}
} else if (_previuosDelta == null) {
_previuosDelta =
List<Matrix>.filled(gradients.length, Matrix.zero(n: 0, m: 0));
for (int i = 0; i < layers.length; i += 1) {
if (layers[i].useBiases) {
layers[i].b = layers[i].b! - gradients[i][0].scaled(biasLearningRate);
}
_previuosDelta![i] = gradients[i][1]..scale(learningRate);
layers[i].w = layers[i].w! - gradients[i][1];
}
} else {
for (int i = 0; i < layers.length; i += 1) {
if (layers[i].useBiases) {
layers[i].b = layers[i].b! - gradients[i][0].scaled(biasLearningRate);
}
_previuosDelta![i] = _previuosDelta![i].scaled(momentum) -
gradients[i][1].scaled(learningRate);
layers[i].w = layers[i].w! + _previuosDelta![i];
}
}
}