code: def batch_dot(
      a,
      b,
      transpose_a=False,
      transpose_b=False,
      forward_stype="default",
  ):
      r"""Batchwise dot product.
  
      ``batch_dot`` is used to compute dot product of ``x`` and ``y`` when ``x`` and
      ``y`` are data in batch, namely N-D (N >= 3) arrays in shape of `(B0, ..., B_i, :, :)`.
  
      For example, given ``x`` with shape `(B_0, ..., B_i, N, M)` and ``y`` with shape
      `(B_0, ..., B_i, M, K)`, the result array will have shape `(B_0, ..., B_i, N, K)`,
      which is computed by::
  
         batch_dot(x,y)[b_0, ..., b_i, :, :] = dot(x[b_0, ..., b_i, :, :], y[b_0, ..., b_i, :, :])
  
      Parameters
      ----------
      lhs : NDArray
          The first input
      rhs : NDArray
          The second input
      transpose_a : boolean, optional, default=0
          If true then transpose the first input before dot.
      transpose_b : boolean, optional, default=0
          If true then transpose the second input before dot.
      forward_stype : {None, 'csr', 'default', 'row_sparse'},optional, default='None'
          The desired storage type of the forward output given by user,
          if thecombination of input storage types and this hint does not matchany implemented ones,
          the dot operator will perform fallback operationand still produce
          an output of the desired storage type.
  
      Returns
      -------
      out : NDArray or list of NDArrays
          The output of this function.
      """
      return _api_internal.batch_dot(
          a, b, transpose_a, transpose_b, forward_stype
      )
  
imports: import numpy
  from .._internal import NDArrayBase
  from .None import _api_internal
  from ...util import set_module
  from ..ndarray import get_dtype_name
label_desc: Use image node_id 19 for calling a global function with example usage: batch_dot(a, b, transpose_a, transpose_b, forward_stype) and returns: _api_internal