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
        })
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.
        
darts/models/forecasting/tft_submodels.py