code: def test_saliency_grad_unchanged(self) -> None:
      model, inp, grads, add_args = _get_basic_config()
      inp.grad = torch.randn_like(inp)
      grad = inp.grad.detach().clone()
      self._saliency_base_assert(model, inp, grads, add_args)
      assertTensorTuplesAlmostEqual(self, inp.grad, grad, delta=0.0)
  
imports: from typing import Any, cast, Tuple, Union
  import torch
  from captum._utils.gradient import compute_gradients
  from captum._utils.typing import TensorOrTupleOfTensorsGeneric
  from captum.attr._core.noise_tunnel import NoiseTunnel
  from captum.attr._core.saliency import Saliency
  from tests.helpers.basic import assertTensorAlmostEqual, assertTensorTuplesAlmostEqual, BaseTest
  from tests.helpers.basic_models import BasicModel, BasicModel5_MultiArgs
  from tests.helpers.classification_models import SoftmaxModel
  from torch import Tensor
  from torch.nn import Module
label_desc: Use image node_id 14 for calling the Test obj's underlying member method code with example usage: obj.test_saliency_grad_unchanged() without return types