code: def test_mulitple_perturbations_per_eval(self) -> None:
      perturbations_per_eval = 4
      batch_size = 2
      input_size = (4,)
  
      inp = torch.randn((batch_size,) + input_size)
  
      def forward_func(x):
          return 1 - x
  
      target = 1
      feature_importance = FeaturePermutation(forward_func=forward_func)
  
      attribs = feature_importance.attribute(
          inp,
          perturbations_per_eval=perturbations_per_eval,
          target=target,
      )
      self.assertTrue(attribs.size() == (batch_size,) + input_size)
  
      for i in range(inp.size(1)):
          if i == target:
              continue
          assertTensorAlmostEqual(
              self, attribs[:, i], torch.zeros_like(attribs[:, i])
          )
  
      y = forward_func(inp)
      actual_diff = torch.stack(
          [(y[0] - y[1])[target], (y[1] - y[0])[target]]
      )
      assertTensorAlmostEqual(self, attribs[:, target], actual_diff)
  
file_path: captum/tests/attr/test_feature_permutation.py
imports: from typing import List, Tuple
  import torch
  from captum.attr._core.feature_permutation import _permute_feature, FeaturePermutation
  from tests.helpers.basic import assertTensorAlmostEqual, BaseTest
  from tests.helpers.basic_models import BasicModelWithSparseInputs
  from torch import Tensor
label_desc: Use image node_id 7 for calling the Test obj's underlying member method code with example usage: obj.test_mulitple_perturbations_per_eval() and returns: unknown