code: def test_attack_multiinput(self) -> None:
      model = BasicModel2()
      input1 = torch.tensor(
          [[4.0, -1.0], [3.0, 10.0]], requires_grad=True
      )
      input2 = torch.tensor(
          [[2.0, -5.0], [-2.0, 1.0]], requires_grad=True
      )
      adv = PGD(model)
      perturbed_input = adv.perturb(
          (input1, input2), 0.25, 0.1, 3, 0, norm="L2"
      )
      answer = (
          [[3.75, -1.0], [2.75, 10.0]],
          [[2.25, -5.0], [-2.0, 1.0]],
      )
      for i in range(len(perturbed_input)):
          assertTensorAlmostEqual(
              self,
              perturbed_input[i],
              answer[i],
              delta=0.01,
              mode="max",
          )
  
file_path: captum/tests/robust/test_PGD.py
imports: import torch
  from captum.robust import PGD
  from tests.helpers.basic import assertTensorAlmostEqual, BaseTest
  from tests.helpers.basic_models import BasicModel, BasicModel2, BasicModel_MultiLayer
  from torch.nn import CrossEntropyLoss
label_desc: Use image node_id 4 for calling the Test obj's underlying member method code with example usage: obj.test_attack_multiinput() without return types