updateWeightEntry method

  1. @override
E updateWeightEntry({
  1. required int layerIndex,
  2. required int neuronIndex,
  3. required int entryIndex,
  4. required E weight,
  5. required E gradient,
  6. required E previousGradient,
  7. 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);
}