class_docstr: A global average pooling block.
  The block expects the input tensors to have the from (batch-dim, channel-dim, row-dim, column-dim).
  
  :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.
code: def __repr__(self):
      txt = f"{GlobalAveragePoolingBlock.__name__}"
      txt += f"\nOut Shapes: {self.out_shapes()}"
      return txt
  
file_path: maze/maze/perception/blocks/general/gap.py
imports: from typing import Union, List, Sequence, Dict
  import torch
  from torch import nn
  from maze.core.annotations import override
  from maze.perception.blocks.shape_normalization import ShapeNormalizationBlock
label_desc: Use image node_id 3 for calling the GlobalAveragePoolingBlock obj's underlying member method code with example usage: obj.__repr__() and returns: txt