def METHOD_NAME(
    self,
    ntypes: int,
    reuse=None,
    suffix="",
):
    """Build the computational graph for the descriptor.
    Parameters
    ----------
    ntypes
        Number of atom types.
    reuse
        The weights in the networks should be reused when get the variable.
    suffix
        Name suffix to identify this descriptor
    Returns
    -------
    embedded_types
        The computational graph for embedded types
    """
    if self.model_type is not None and self.model_type == "compressed_model":
        return self.type_embedding_from_graph
    types = tf.convert_to_tensor(list(range(ntypes)), dtype=tf.int32)
    ebd_type = tf.cast(
        tf.one_hot(tf.cast(types, dtype=tf.int32), int(ntypes)),
        self.filter_precision,
    )
    ebd_type = tf.reshape(ebd_type, [-1, ntypes])
    name = "type_embed_net" + suffix
    if (
        nvnmd_cfg.enable
        and (nvnmd_cfg.version == 1)
        and (nvnmd_cfg.restore_descriptor or nvnmd_cfg.restore_fitting_net)
    ):
        self.type_embedding_net_variables = nvnmd_cfg.get_dp_init_weights()
    with tf.variable_scope(name, reuse=reuse):
        ebd_type = embedding_net(
            ebd_type,
            self.neuron,
            activation_fn=self.filter_activation_fn,
            precision=self.filter_precision,
            resnet_dt=self.filter_resnet_dt,
            seed=self.seed,
            trainable=self.trainable,
            initial_variables=self.type_embedding_net_variables,
            uniform_seed=self.uniform_seed,
        )
    ebd_type = tf.reshape(ebd_type, [-1, self.neuron[-1]])  # ntypes * neuron[-1]
    if self.padding:
        last_type = tf.cast(tf.zeros([1, self.neuron[-1]]), self.filter_precision)
        ebd_type = tf.concat([ebd_type, last_type], 0)  # (ntypes + 1) * neuron[-1]
    self.ebd_type = tf.identity(ebd_type, name="t_typeebd")
    return self.ebd_type