class_docstr: Cycle Loss for Shapes.
  Inspired by:
  "Mapping in a Cycle: Sinkhorn Regularized Unsupervised Learning for Point Cloud Shapes".
docstr: Do a forward pass with a random pair (src, dst) pair of shapes
  Args:
      embedder (nn.Module): module that computes vertex embeddings for different meshes
docstr_tok: ["Do","a","forward","pass","with","a","random","pair","(","src",",","dst",")","pair","of","shapes","Args",":","embedder","(","nn.Module",")",":","module","that","computes","vertex","embeddings","for","different","meshes"]
code: def forward(self, embedder: nn.Module):
      """
      Do a forward pass with a random pair (src, dst) pair of shapes
      Args:
          embedder (nn.Module): module that computes vertex embeddings for different meshes
      """
      src_mesh_name, dst_mesh_name = self._sample_random_pair()
      return self._forward_one_pair(
          embedder, src_mesh_name, dst_mesh_name
      )
  
file_path: detectron2/projects/DensePose/densepose/modeling/losses/cycle_shape2shape.py
imports: import random
  from typing import Tuple
  import torch
  from torch import nn
  from torch.nn import functional
  from detectron2.config import CfgNode
  from densepose.structures.mesh import create_mesh
  from .utils import sample_random_indices
label_desc: Use image node_id 3 for calling the ShapeToShapeCycleLoss obj's underlying member method code with example usage: obj.forward(embedder) and returns: self