code: def build_embedding(dictionary, embed_dim, path=None, freeze=False):
      num_embeddings = len(dictionary)
      padding_idx = dictionary.pad()
      emb = TransformerTokenEmbedding(
          num_embeddings, embed_dim, padding_idx, freeze
      )
      # if provided, load from preloaded dictionaries
      if path:
          embed_dict = utils.parse_embedding(path)
          utils.load_embedding(embed_dict, dictionary, emb)
      return emb
  
imports: import math
  import random
  import torch
  import torch.nn
  import torch.nn.functional
  from fairseq import options, utils
  from fairseq.models import FairseqEncoder, FairseqEncoderDecoderModel, FairseqIncrementalDecoder, register_model, register_model_architecture, transformer
  from fairseq.modules import AdaptiveSoftmax, LayerNorm, MultiheadAttention, SinusoidalPositionalEmbedding
  from pytorch_translate import utils, vocab_reduction
  from pytorch_translate.average_attention import AverageAttention
  from pytorch_translate.common_layers import TransformerEmbedding, TransformerEncoderGivenEmbeddings, TransformerTokenEmbedding, VariableTracker
  from pytorch_translate.semi_supervised import SemiSupervisedModel
  from pytorch_translate.utils import torch_find
label_desc: Use image node_id 1 for calling a global function with example usage: build_embedding(dictionary, embed_dim, path, freeze) and returns: emb