code: def test_select_target_3d(self) -> None:
      output_tensor = torch.tensor(
          [
              [[1, 2, 3], [4, 5, 6], [7, 8, 9]],
              [[9, 8, 7], [6, 5, 4], [3, 2, 1]],
          ]
      )
      assertTensorAlmostEqual(
          self, _select_targets(output_tensor, (0, 1)), [2, 8]
      )
      assertTensorAlmostEqual(
          self,
          _select_targets(
              output_tensor,
              cast(List[Tuple[int, ...]], [(0, 1), (2, 0)]),
          ),
          [2, 3],
      )
  
      # Verify error is raised if list is longer than number of examples.
      with self.assertRaises(AssertionError):
          _select_targets(
              output_tensor,
              cast(List[Tuple[int, ...]], [(0, 1), (2, 0), (3, 2)]),
          )
  
      # Verify error is raised if too many dimensions are provided.
      with self.assertRaises(AssertionError):
          _select_targets(output_tensor, (1, 2, 3))
  
imports: from typing import cast, List, Tuple
  import torch
  from captum._utils.common import _format_feature_mask, _get_max_feature_index, _parse_version, _reduce_list, _select_targets, _sort_key_list, safe_div
  from tests.helpers.basic import assertTensorAlmostEqual, assertTensorTuplesAlmostEqual, BaseTest
label_desc: Use image node_id 8 for calling the Test obj's underlying member method code with example usage: obj.test_select_target_3d() without return types