code: def _gradient_input_test_assert(
      self,
      model: Module,
      target_layer: Module,
      test_input: TensorOrTupleOfTensorsGeneric,
      test_neuron_selector: Union[
          int, Tuple[Union[int, slice], ...], Callable
      ],
      expected_input_gradient: Union[
          List[List[float]], Tuple[List[List[float]], ...]
      ],
      additional_input: Any = None,
      attribute_to_neuron_input: bool = False,
  ) -> None:
      grad = NeuronGradient(model, target_layer)
      attributions = grad.attribute(
          test_input,
          test_neuron_selector,
          additional_forward_args=additional_input,
          attribute_to_neuron_input=attribute_to_neuron_input,
      )
      assertTensorTuplesAlmostEqual(
          self, attributions, expected_input_gradient
      )
  
imports: import unittest
  from typing import Any, Callable, cast, List, Tuple, Union
  import torch
  from captum._utils.gradient import _forward_layer_eval
  from captum._utils.typing import TensorOrTupleOfTensorsGeneric
  from captum.attr._core.neuron.neuron_gradient import NeuronGradient
  from captum.attr._core.saliency import Saliency
  from tests.helpers.basic import assertTensorAlmostEqual, assertTensorTuplesAlmostEqual, BaseTest
  from tests.helpers.basic_models import BasicModel_ConvNet, BasicModel_MultiLayer, BasicModel_MultiLayer_MultiInput
  from torch import Tensor
  from torch.nn import Module
label_desc: Use image node_id 13 for calling the Test obj's underlying member method code with example usage: obj._gradient_input_test_assert(model, target_layer, test_input, test_neuron_selector, expected_input_gradient, additional_input, attribute_to_neuron_input) without return types