code: def forward(self, src_tokens, src_lengths):
      # Embed tokens
      x = self.embed_tokens(src_tokens)
      src_tokens_tensor = (
          pytorch_translate_utils.get_source_tokens_tensor(src_tokens)
      )
      # Add position embeddings and dropout
      x = self.embed_scale * x
      positions = self.embed_positions(src_tokens_tensor)
      x += positions
      x = F.dropout(x, p=self.dropout, training=self.training)
  
      # B x T x C -> T x B x C
      x = x.transpose(0, 1)
  
      # compute padding mask (B x T)
      encoder_padding_mask = src_tokens_tensor.eq(self.padding_idx)
      if not encoder_padding_mask.any():
          encoder_padding_mask = None
  
      return x, encoder_padding_mask, positions
  
imports: import abc
  import math
  import torch
  import torch.nn
  import torch.nn.functional
  from fairseq import utils
  from fairseq.models import FairseqIncrementalDecoder, transformer
  from pytorch_translate import rnn_cell, utils, vocab_reduction
  from pytorch_translate.research.lexical_choice import lexical_translation
label_desc: Use image node_id 2 for calling the TransformerEmbedding obj's underlying member method code with example usage: obj.forward(src_tokens, src_lengths) and returns: x,  encoder_padding_mask,  positions