updateWeightEntry method
E
updateWeightEntry({
- required int layerIndex,
- required int neuronIndex,
- required int entryIndex,
- required E weight,
- required E gradient,
- required E previousGradient,
- required E neuronOutput,
override
The per-weight-entry update rule (SIMD). Returns the delta to ADD to the
weight entry. Optimizers index their own state buffers with
(layerIndex, neuronIndex, entryIndex).
Implementation
@override
E updateWeightEntry({
required int layerIndex,
required int neuronIndex,
required int entryIndex,
required E weight,
required E gradient,
required E previousGradient,
required E neuronOutput,
}) {
final si = signalInstance;
if (_velocity == null) {
return si.entryOperationScale(gradient, learningRate);
}
final vSig = _velocity[layerIndex][neuronIndex];
final vNew = si.entryOperationSum(
si.entryOperationScale(vSig.getEntry(entryIndex), momentumFactor),
gradient,
);
vSig.setEntry(entryIndex, vNew);
final step = nesterov
? si.entryOperationSum(
si.entryOperationScale(vNew, momentumFactor),
gradient,
)
: vNew;
return si.entryOperationScale(step, learningRate);
}