class_docstr: Block that creates recursively the Encode-Decoder structure of one Hourglass.
  
  Attributes:
    depth: Integer, depth of the encoder
    features_dims: Integer list, feature dimensions in each depth.
    blocks_per_stage: Integer list, number of residual blocks in each stage.
    norm_type: Object type of the norm to use.
code: def make_encoder_hourglass_block(
      out_dim,
      norm_type,
      kernel_regularizer,
      num_blocks,
      do_stride=False,
  ):
      hourglass_block = []
      for ii in range(num_blocks):
          stride = 2 if ii == 0 and do_stride else 1
          hourglass_block.append(
              network_cb.ResidualBlock(
                  out_dim,
                  norm_type,
                  kernel_regularizer,
                  stride=stride,
                  skip=stride == 2,
              )
          )
      return hourglass_block
  
imports: import gin
  import tensorflow
  from tensorflow_graphics.projects.points_to_3Dobjects.networks import networks
  import tensorflow_graphics.projects.points_to_3Dobjects.networks.custom_blocks
label_desc: Use image node_id 2 for calling the EncoderDecoderBlock obj's underlying member method code with example usage: obj.make_encoder_hourglass_block(out_dim, norm_type, kernel_regularizer, num_blocks, do_stride) and returns: hourglass_block