code: def forward(self, time):
      device = time.device
      half_dim = self.dim // 2
      embeddings = math.log(10000) / (half_dim - 1)
      embeddings = torch.exp(
          torch.arange(half_dim, device=device) * -embeddings
      )
      embeddings = time[:, None] * embeddings[None, :]
      embeddings = torch.cat(
          (embeddings.sin(), embeddings.cos()), dim=-1
      )
      return embeddings
  
imports: import copy
  import math
  import random
  import warnings
  from typing import Tuple
  import torch
  import torch.nn
  import torch.nn.functional
  from mmcv.cnn import build_activation_layer
  from mmcv.ops import batched_nms
  from mmengine.structures import InstanceData
  from torch import Tensor
  from mmdet.registry import MODELS, TASK_UTILS
  from mmdet.structures import SampleList
  from mmdet.structures.bbox import bbox2roi, bbox_cxcywh_to_xyxy, bbox_xyxy_to_cxcywh, get_box_wh, scale_boxes
  from mmdet.utils import InstanceList
label_desc: Use image node_id 2 for calling the SinusoidalPositionEmbeddings obj's underlying member method code with example usage: obj.forward(time) and returns: embeddings