docstr: Another test with Saliency, local sensitivity and more
  complex model with higher dimensional input.
docstr_tok: ["Another","test","with","Saliency",",","local","sensitivity","and","more","complex","model","with","higher","dimensional","input","."]
code: def test_convnet_multi_target(self) -> None:
      r"""
      Another test with Saliency, local sensitivity and more
      complex model with higher dimensional input.
      """
      model = BasicModel_ConvNet_One_Conv()
      sa = Saliency(model)
  
      input = torch.stack(
          [torch.arange(1, 17).float()] * 20, dim=0
      ).view(20, 1, 4, 4)
  
      self.sensitivity_max_assert(
          sa.attribute,
          input,
          torch.zeros(20),
          target=torch.tensor([1] * 20),
          n_perturb_samples=10,
          max_examples_per_batch=40,
      )
  
imports: import typing
  from typing import Any, Callable, cast, List, Tuple, Union
  import torch
  from captum._utils.typing import BaselineType, TargetType, TensorOrTupleOfTensorsGeneric
  from captum.attr import DeepLift, GradientShap, GuidedBackprop, IntegratedGradients, Saliency
  from captum.metrics import sensitivity_max
  from captum.metrics._core.sensitivity import default_perturb_func
  from tests.helpers.basic import assertTensorAlmostEqual, BaseTest
  from tests.helpers.basic_models import BasicModel2, BasicModel4_MultiArgs, BasicModel_ConvNet_One_Conv, BasicModel_MultiLayer
  from torch import Tensor
label_desc: Use image node_id 4 for calling the Test obj's underlying member method code with example usage: obj.test_convnet_multi_target() without return types