docstr: Parameters
  ----------
  x
      Input Tensor
  
  Returns
  -------
  Tensor
      Jacobian of the SNMLPBlock evaluated at x.
docstr_tok: ["Parameters","--","--","--","--","--","x","Input","Tensor","Returns","--","--","--","-","Tensor","Jacobian","of","the","SNMLPBlock","evaluated","at","x","."]
code: def jacobian(self, x: Tensor) -> Tensor:
      """
  
      Parameters
      ----------
      x
          Input Tensor
  
      Returns
      -------
      Tensor
          Jacobian of the SNMLPBlock evaluated at x.
  
      """
      if self._jacobian_method == "ignore":
          return x * 0
      elif self._jacobian_method == "bf":
          if (
              len(self._cached_inputs) > 0
              and self._cached_inputs[0] is not x
          ):
              warnings.warn(
                  "Input not the same, recomputing forward for jacobian"
                  " term..."
              )
              self(x)
          return jacobian_sn_mlp_block_bf(
              [
                  (l, i)
                  for l, i in zip(self._layers, self._cached_inputs)
              ]
          )
      raise NotImplementedError(self._jacobian_method)
  
file_path: gluonts/src/gluonts/mx/block/snmlp.py
imports: from typing import List, Tuple
  import warnings
  import mxnet
  from mxnet.ndarray import linalg_gemm2
  from gluonts.mx import Tensor
  from gluonts.core.component import validated
  from gluonts.mx.util import _broadcast_param
  from gluonts.mx.activation import get_activation, get_activation_deriv
  from gluonts.mx.block.sndense import SNDense
label_desc: Use image node_id 4 for calling the SNMLPBlock obj's underlying member method code with example usage: obj.jacobian(x) and returns: unknown, jacobian_sn_mlp_block_bf