class_docstr: A multi-index-slicing block.
  This can be used rather than the short hand tensor[...,[a,b]] where [a,b] is the list given as selection indices.
  
  :param in_keys: One key identifying the input tensors.
  :param out_keys: One key identifying the output tensors.
  :param in_shapes: List of input shapes.
  :param select_dim: The dimension to slice from.
  :param select_idxs: The index or indices to select.
code: def __init__(
      self,
      in_keys: Union[str, List[str]],
      out_keys: Union[str, List[str]],
      in_shapes: Union[Sequence[int], List[Sequence[int]]],
      select_dim: int,
      select_idxs: Union[int, Sequence[int]],
  ):
      super().__init__(
          in_keys=in_keys, out_keys=out_keys, in_shapes=in_shapes
      )
      self.selection_dim = select_dim
      self.selection_idxs = torch.tensor(
          select_idxs, requires_grad=False
      )
      assert self.selection_idxs.ndim == 1
  
file_path: maze/maze/perception/blocks/general/multi_index_slicing.py
imports: from typing import Union, List, Sequence, Dict
  import torch
  from maze.core.annotations import override
  from maze.perception.blocks.base import PerceptionBlock
label_desc: Use image node_id 1 to create a new MultiIndexSlicingBlock object from inherited base classes: PerceptionBlock with example: obj = MultiIndexSlicingBlock(in_keys, out_keys, in_shapes, select_dim, select_idxs)