class_docstr: Class responsible for embedding vertices. Vertex embeddings take
  the form of a tensor of size [N, D], where
      N = number of vertices
      D = number of dimensions in the embedding space
class_docstr_tok: ["Class","responsible","for","embedding","vertices",".","Vertex","embeddings","take","the","form","of","a","tensor","of","size","[","N",",","D","]",",","where","N","=","number","of","vertices","D","=","number","of","dimensions","in","the","embedding","space"]
docstr: Produce vertex embeddings, a tensor of shape [N, D] where:
      N = number of vertices
      D = number of dimensions in the embedding space
  
  Return:
     Full vertex embeddings, a tensor of shape [N, D]
docstr_tok: ["Produce","vertex","embeddings",",","a","tensor","of","shape","[","N",",","D","]","where",":","N","=","number","of","vertices","D","=","number","of","dimensions","in","the","embedding","space","Return",":","Full","vertex","embeddings",",","a","tensor","of","shape","[","N",",","D","]"]
code: def forward(self) -> torch.Tensor:
      """
      Produce vertex embeddings, a tensor of shape [N, D] where:
          N = number of vertices
          D = number of dimensions in the embedding space
  
      Return:
         Full vertex embeddings, a tensor of shape [N, D]
      """
      return normalize_embeddings(self.embeddings)
  
file_path: detectron2/projects/DensePose/densepose/modeling/cse/vertex_direct_embedder.py
imports: import pickle
  import torch
  from torch import nn
  from detectron2.utils.file_io import PathManager
  from .utils import normalize_embeddings
label_desc: Use image node_id 3 for calling the VertexDirectEmbedder obj's underlying member method code with example usage: obj.forward() and returns: normalize_embeddings