code: def test_multi_input_ablation_with_mask(self) -> None:
      net = BasicModel_MultiLayer_MultiInput()
      inp1 = torch.tensor([[23.0, 100.0, 0.0], [20.0, 50.0, 30.0]])
      inp2 = torch.tensor([[20.0, 50.0, 30.0], [0.0, 100.0, 0.0]])
      inp3 = torch.tensor([[0.0, 100.0, 10.0], [2.0, 10.0, 3.0]])
      expected = (
          [[492.0, 492.0, 492.0], [400.0, 400.0, 400.0]],
          [[80.0, 200.0, 120.0], [0.0, 400.0, 0.0]],
          [[400.0, 420.0, 440.0], [48.0, 50.0, 52.0]],
      )
      self._occlusion_test_assert(
          net,
          (inp1, inp2, inp3),
          expected,
          additional_input=(1,),
          sliding_window_shapes=((3,), (1,), (2,)),
      )
      self._occlusion_test_assert(
          net,
          (inp1, inp2),
          expected[0:1],
          additional_input=(inp3, 1),
          perturbations_per_eval=(1, 2, 3),
          sliding_window_shapes=((3,), (1,)),
      )
  
imports: import io
  import unittest
  import unittest.mock
  from typing import Any, Callable, Tuple, Union
  import torch
  from captum._utils.typing import BaselineType, TargetType, TensorLikeList, TensorOrTupleOfTensorsGeneric
  from captum.attr._core.occlusion import Occlusion
  from tests.helpers.basic import assertTensorAlmostEqual, BaseTest
  from tests.helpers.basic_models import BasicModel3, BasicModel_ConvNet_One_Conv, BasicModel_MultiLayer, BasicModel_MultiLayer_MultiInput
  from torch import Tensor
label_desc: Use image node_id 12 for calling the Test obj's underlying member method code with example usage: obj.test_multi_input_ablation_with_mask() without return types