code: def update(self, w, grad_func):
      # Calculate the gradient of the loss a bit further down the slope from w
      approx_future_grad = np.clip(
          grad_func(w - self.momentum * self.w_updt), -1, 1
      )
      # Initialize on first update
      if not self.w_updt.any():
          self.w_updt = np.zeros(np.shape(w))
  
      self.w_updt = (
          self.momentum * self.w_updt
          + self.learning_rate * approx_future_grad
      )
      # Move against the gradient to minimize loss
      return w - self.w_updt
  
file_path: ML-From-Scratch/mlfromscratch/deep_learning/optimizers.py
imports: import numpy
  from mlfromscratch.utils import make_diagonal, normalize
label_desc: Use image node_id 2 for calling the NesterovAcceleratedGradient obj's underlying member method code with example usage: obj.update(w, grad_func) and returns: unknown