code: def _update_impl(self, key, p, g):
      d_norm = np.linalg.norm(p)
      g_norm = np.linalg.norm(g)
      g = g + self.weight_decay_rate * p
      if d_norm < self.eps:
          lr = self.lr
      else:
          lr = (
              self.lr
              * self.coefficient
              * d_norm
              / (g_norm + self.weight_decay_rate * d_norm)
          )
      _update_lars(p, g, self.v[key], lr, self.momentum)
  
file_path: nnabla/python/test/solver/test_lars.py
imports: import pytest
  import nnabla.solvers
  import numpy
  from solver_test_utils import solver_tester, RefSolver, MixinWeightDecayFused
  from nbla_test_utils import list_context
label_desc: Use image node_id 3 for calling the RefLars obj's underlying member method code with example usage: obj._update_impl(key, p, g) without return types