class_docstr: Executor is the object providing efficient symbolic and imperative graph
  execution and optimization.
  
  Examples
  --------
  >>> # typical approach to create an executor is to bind symbol
  >>> a = mx.sym.var('a')
  >>> b = mx.sym.var('b')
  >>> c = 2 * a + b
  >>> texec = c._bind(mx.cpu(), {'a': mx.nd.array([1,2]), 'b':mx.nd.array([2,3])})
class_docstr_tok: ["Executor","is","the","object","providing","efficient","symbolic","and","imperative","graph","execution","and","optimization",".","Examples","--","--","--","--",">",">",">","#","typical","approach","to","create","an","executor","is","to","bind","symbol",">",">",">","a","=","mx.sym.var","(","'","a","'",")",">",">",">","b","=","mx.sym.var","(","'","b","'",")",">",">",">","c","=","2","*","a","+","b",">",">",">","texec","=","c._bind","(","mx.cpu","(",")",",","{","'","a","'",":","mx.nd.array","(","[","1,2","]",")",",","'","b","'",":","mx.nd.array","(","[","2,3","]",")","}",")"]
docstr: the gradient array
docstr_tok: ["the","gradient","array"]
code: def grad_arrays(self):
      """the gradient array"""
      if isinstance(self._args_grad, (list, tuple)):
          return list(self._args_grad)
  
      arr = [None] * len(self._arg_names)
      if self._args_grad:
          assert isinstance(self._args_grad, dict)
          for k, _ in self._args_grad.items():
              try:
                  i = self._input_names.index(k)
                  j = self._arg_names.index(k)
                  arr[j] = self._args[i].grad
              # ignore provided arg grad which is not present in
              # input_names
              except ValueError:
                  pass
      return arr
  
file_path: mxnet/python/mxnet/executor.py
imports: import numpy
  from .None import ndarray
label_desc: Use image node_id 7 for calling the Executor obj's underlying member method code with example usage: obj.grad_arrays() and returns: arr, list