docstr: Embedding layer for categorical variables including groups of categorical variables.
  Enabled for static and dynamic categories (i.e. 3 dimensions for batch x time x categories).
  
  Parameters
  ----------
  embedding_sizes
      dictionary of embedding sizes, e.g. ``{'cat1': (10, 3)}``
      indicates that the first categorical variable has 10 unique values which are mapped to 3 embedding
      dimensions. Use :py:func:`~pytorch_forecasting.utils.get_embedding_size` to automatically obtain
      reasonable embedding sizes depending on the number of categories.
  variable_names
      list of categorical variable names to ensure ordered iterations.
docstr_tok: ["Embedding","layer","for","categorical","variables","including","groups","of","categorical","variables",".","Enabled","for","static","and","dynamic","categories","(","i.e",".","3","dimensions","for","batch","x","time","x","categories",")",".","Parameters","--","--","--","--","--","embedding_sizes","dictionary","of","embedding","sizes",",","e.g",".","``","{","'cat1","'",":","(","10",",","3",")","}","``","indicates","that","the","first","categorical","variable","has","10","unique","values","which","are","mapped","to","3","embedding","dimensions",".","Use",":","py",":","func",":","`","~pytorch_forecasting.utils.get_embedding_size","`","to","automatically","obtain","reasonable","embedding","sizes","depending","on","the","number","of","categories",".","variable_names","list","of","categorical","variable","names","to","ensure","ordered","iterations","."]
code: def __init__(
      self,
      embedding_sizes: Dict[str, Tuple[int, int]],
      variable_names: List[str],
  ):
      """Embedding layer for categorical variables including groups of categorical variables.
      Enabled for static and dynamic categories (i.e. 3 dimensions for batch x time x categories).
  
      Parameters
      ----------
      embedding_sizes
          dictionary of embedding sizes, e.g. ``{'cat1': (10, 3)}``
          indicates that the first categorical variable has 10 unique values which are mapped to 3 embedding
          dimensions. Use :py:func:`~pytorch_forecasting.utils.get_embedding_size` to automatically obtain
          reasonable embedding sizes depending on the number of categories.
      variable_names
          list of categorical variable names to ensure ordered iterations.
      """
      super().__init__()
      self.embedding_sizes = embedding_sizes
      self.variable_names = variable_names
  
      self.embeddings = nn.ModuleDict(
          {
              name: nn.Embedding(*embedding_sizes[name])
              for name in variable_names
          }
      )
  
imports: from typing import Dict, List, Optional, Tuple, Union
  import torch
  import torch.nn
  import torch.nn.functional
  from darts.logging import get_logger
  from darts.utils.torch import MonteCarloDropout
label_desc: Use image node_id 1 to create a new _MultiEmbedding object from inherited base classes: nn with example: obj = _MultiEmbedding(embedding_sizes, variable_names)