code: def __init__(
      self,
      hidden_size,
      stat_input_size,
      futr_input_size,
      hist_input_size,
      tgt_size,
  ):
      super().__init__()
      # There are 4 types of input:
      # 1. Static continuous
      # 2. Temporal known a priori continuous
      # 3. Temporal observed continuous
      # 4. Temporal observed targets (time series obseved so far)
  
      self.hidden_size = hidden_size
  
      self.stat_input_size = stat_input_size
      self.futr_input_size = futr_input_size
      self.hist_input_size = hist_input_size
      self.tgt_size = tgt_size
  
      # Instantiate Continuous Embeddings if size is not None
      for attr, size in [
          ("stat_exog_embedding", stat_input_size),
          ("futr_exog_embedding", futr_input_size),
          ("hist_exog_embedding", hist_input_size),
          ("tgt_embedding", tgt_size),
      ]:
          if size:
              vectors = nn.Parameter(torch.Tensor(size, hidden_size))
              bias = nn.Parameter(torch.zeros(size, hidden_size))
              torch.nn.init.xavier_normal_(vectors)
              setattr(self, attr + "_vectors", vectors)
              setattr(self, attr + "_bias", bias)
          else:
              setattr(self, attr + "_vectors", None)
              setattr(self, attr + "_bias", None)
  
imports: import torch
  import torch.nn
  import torch.nn.functional
  from torch import Tensor
  from torch.nn import LayerNorm
  import logging
  import warnings
  from typing import Tuple, Optional
  from ..losses.pytorch import MAE
  from ..common._base_windows import BaseWindows
label_desc: Use image node_id 1 to create a new TFTEmbedding object from inherited base classes: nn with example: obj = TFTEmbedding(hidden_size, stat_input_size, futr_input_size, hist_input_size, tgt_size)