code: def softmax_classification(
      self,
      model: Module,
      attr_method: Union[DeepLift, DeepLiftShap],
      input: Tensor,
      baselines,
      target: TargetType,
  ) -> None:
      # TODO add test cases for multiple different layers
      model.zero_grad()
      attributions, delta = attr_method.attribute(
          input,
          baselines=baselines,
          target=target,
          return_convergence_delta=True,
      )
      self._assert_attributions(
          model, attributions, input, baselines, delta, target
      )
  
      target2 = torch.tensor(1)
      attributions, delta = attr_method.attribute(
          input,
          baselines=baselines,
          target=target2,
          return_convergence_delta=True,
      )
  
      self._assert_attributions(
          model, attributions, input, baselines, delta, target2
      )
  
imports: from typing import Union
  import torch
  from captum._utils.typing import TargetType
  from captum.attr._core.deep_lift import DeepLift, DeepLiftShap
  from captum.attr._core.integrated_gradients import IntegratedGradients
  from tests.helpers.basic import assertAttributionComparision, BaseTest
  from tests.helpers.basic_models import BasicModel_ConvNet, BasicModel_ConvNet_MaxPool1d, BasicModel_ConvNet_MaxPool3d
  from tests.helpers.classification_models import SigmoidDeepLiftModel, SoftmaxDeepLiftModel
  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.softmax_classification(model, attr_method, input, baselines, target) without return types