code: def multi_lamb_update(
      weights,
      grads,
      mean,
      var,
      step_count,
      lrs,
      wds,
      out=None,
      num_tensors=0,
      **kwargs,
  ):
      """Given a list of gradients, update weights, mean and variance of multiple tensors
      following LAMB Optimizer implementation.
  
      Parameters
      ----------
      weights : List of NDArrays containing the input weights of multiple tensors
  
      grads : List of NDArrays containing input gradients
  
      mean : List of NDArrays containing mean of multiple tensors to be updated
  
      var : List of NDArrays containing variance of multiple tensors to be updated
  
      step_count : List of scalars with the number of update step for each tensor
  
      lrs : List of learning rates (one for each tensor)
  
      wds : List of weight decays (one for each tensor)
  
      out: List of NDArrays where the updated weights will be stored
  
      num_tensors : Number of NDArrays/tensors in the list
      """
  
      if not num_tensors:
          num_tensors = len(weights)
      temp_list = _flatten_list(zip(weights, grads, mean, var))
      return ndarray._internal._multi_lamb_update(
          *temp_list,
          out=out,
          num_tensors=num_tensors,
          step_count=step_count,
          learning_rates=lrs,
          wds=wds,
          **kwargs,
      )
  
imports: import math
  import numpy
  import mxnet
  from ..device import current_device
  from ..random import uniform
  from ..base import _as_list
  from .None import ndarray
label_desc: Use image node_id 16 for calling a global function with example usage: multi_lamb_update(weights, grads, mean, var, step_count, lrs, wds, out, num_tensors) and returns: ndarray