code: def test_attack_comparator_with_additional_args(self) -> None:
      model = BasicModel_MultiLayer()
      text_inp = [["abc", "zyd", "ghi"], ["mnop", "qrs", "Tuv"]]
      additional_forward_args = torch.ones((2, 3)) * -97
      attack_comp = AttackComparator(
          forward_func=model,
          metric=tuple_metric,
          preproc_fn=batch_text_preproc_fn,
      )
      attack_comp.add_attack(
          SamplePerturb().perturb,
          name="Sequence Column Perturb",
          num_attempts=5,
          apply_before_preproc=False,
      )
      attack_comp.add_attack(
          string_batch_perturb,
          name="StringPerturb",
          apply_before_preproc=True,
      )
      batch_results = attack_comp.evaluate(
          text_inp,
          additional_forward_args=additional_forward_args,
          target=0,
          named_tuple=True,
          perturbations_per_eval=2,
      )
      expected_first_results = {
          "Original": ([0.0, 0.0], [116.0, 52.0]),
          "Sequence Column Perturb": {
              "mean": ([0.0, 0.0], [-1.0, -1.0]),
              "max": ([0.0, 0.0], [-1.0, -1.0]),
              "min": ([0.0, 0.0], [-1.0, -1.0]),
          },
          "StringPerturb": {"mean": ([0.0, 0.0], [2.0, 2.0])},
      }
      self._compare_results(batch_results, expected_first_results)
      expected_summary_results = {
          "Original": {
              "mean": (0.0, 84.0),
          },
          "Sequence Column Perturb Mean Attempt": {"mean": (0.0, -1.0)},
          "Sequence Column Perturb Min Attempt": {"mean": (0.0, -1.0)},
          "Sequence Column Perturb Max Attempt": {"mean": (0.0, -1.0)},
          "StringPerturb": {"mean": (0.0, 2.0)},
      }
      self._compare_results(
          attack_comp.summary(), expected_summary_results
      )
  
      attack_comp.reset()
      self.assertEqual(len(attack_comp.summary()), 0)
  
imports: import collections
  from typing import List
  import torch
  from captum.robust import AttackComparator, FGSM
  from tests.helpers.basic import assertTensorAlmostEqual, BaseTest
  from tests.helpers.basic_models import BasicModel, BasicModel_MultiLayer
  from torch import Tensor
label_desc: Use image node_id 3 for calling the Test obj's underlying member method code with example usage: obj.test_attack_comparator_with_additional_args() without return types