code: def _check_backward_with_params(
      # This function was introduced along with the `is_immutable_params`
      # argument to `_CheckBackward`.
      # It allows passing `params` as ndarrays instead of `Parameter`s and thus
      # depends less on the state of the parameter held by the caller.
      # It is required by the `LinkTestCase` to check ChainerX parameter
      # gradients, since those parameters cannot perturbed in-place for the
      # numerical gradients if passed as `Parameter`s as those requiring
      # gradients cannot be updated in-place.
      func,
      x_data,
      y_grad,
      params=(),
      eps=1e-3,
      atol=1e-5,
      rtol=1e-4,
      no_grads=None,
      dtype=None,
      detect_nondifferentiable=False,
  ):
      assert all(
          isinstance(p, chainer.get_array_types()) for p in params
      )
      _CheckBackward(
          func,
          x_data,
          y_grad,
          params,
          eps,
          atol,
          rtol,
          no_grads,
          dtype,
          detect_nondifferentiable,
          is_immutable_params=True,
      ).run()
  
imports: from __future__ import absolute_import
  import warnings
  import numpy
  import six
  import chainer
  from chainer import backend
  from chainer.backends import _cpu
  from chainer.backends import cuda
  from chainer import configuration
  from chainer import testing
  from chainer import utils
  from chainer import variable
  import chainerx
label_desc: Use image node_id 9 for calling a global function with example usage: _check_backward_with_params(func, x_data, y_grad, params, eps, atol, rtol, no_grads, dtype, detect_nondifferentiable) without return types