class_docstr: Block that creates a convolutional head.
  
  Attributes:
    in_dim: Integer, number of filter in the first convolution.
    dim: Integer, number of output classes.
    name: String, name of the block .
code: def __init__(
      self,
      in_dim,
      dim,
      norm_type,
      kernel_regularizer,
      name="head",
      return_features=False,
  ):
      super(Head, self).__init__(name=name)
      self.return_features = return_features
      self.pad = tf.keras.layers.ZeroPadding2D((1, 1))
      self.conv = tf.keras.layers.Conv2D(
          in_dim, 3, kernel_regularizer=kernel_regularizer()
      )
      self.relu = tf.keras.layers.ReLU()
      self.out_conv = tf.keras.layers.Conv2D(
          dim, 1, kernel_regularizer=kernel_regularizer()
      )
      if self.name == "centers":
          self.out_conv.bias_initializer = (
              tf.keras.initializers.constant(-2.19)
          )
  
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 1 to create a new Head object from inherited base classes: tf.keras.layers with example: obj = Head(in_dim, dim, norm_type, kernel_regularizer, name, return_features)