code: def lamb_update_numpy(
      param,
      g_t,
      t,
      m,
      v,
      lr=0.001,
      lamb_wd=0.0,
      beta1=0.9,
      beta2=0.999,
      epsilon=1e-6,
  ):
      m_t = beta1 * m + (1 - beta1) * g_t
      v_t = beta2 * v + (1 - beta2) * g_t * g_t
  
      m_t_hat = m_t / (1 - beta1 ** (t + 1))
      v_t_hat = v_t / (1 - beta2 ** (t + 1))
      update = m_t_hat / (np.sqrt(v_t_hat) + epsilon)
  
      update += lamb_wd * param
  
      w_norm = linalg.norm(param, ord=2)
      g_norm = linalg.norm(update, ord=2)
      ratio = np.where(
          w_norm > 0, np.where(g_norm > 0, (w_norm / g_norm), 1.0), 1.0
      )
  
      param_t = param - ratio * lr * update
      return param_t, m_t, v_t
  
imports: import numpy
  from numpy import linalg
  import pytest
  import tensorflow
  from tensorflow_addons.optimizers import lamb
  from tensorflow_addons.utils import test_utils
label_desc: Use image node_id 2 for calling a global function with example usage: lamb_update_numpy(param, g_t, t, m, v, lr, lamb_wd, beta1, beta2, epsilon) and returns: param_t,  m_t,  v_t