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 __repr__(self):
      txt = f"{self.__class__.__name__}"
      txt += f"\n\tselection_dim: {self.selection_dim}, selection_idxs: {self.selection_idxs.tolist()}"
      txt += f"\n\tOut Shapes: {self.out_shapes()}"
      return txt
  
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 3 for calling the MultiIndexSlicingBlock obj's underlying member method code with example usage: obj.__repr__() and returns: txt