多重嵌入#

class pytorch_forecasting.models.nn.embeddings.MultiEmbedding(embedding_sizes: Dict[str, Tuple[int, int]] | Dict[str, int] | List[int] | List[Tuple[int, int]], x_categoricals: List[str] = None, categorical_groups: Dict[str, List[str]] | None = None, embedding_paddings: List[str] | None = None, max_embedding_size: int = None)[来源]#

基础: Module

用于包括类别变量组的类别变量的嵌入层。

支持静态和动态类别(即批次 x 时间 x 类别的 3 个维度)。

Parameters:
  • embedding_sizes (Union[Dict[str, Tuple[int, int]], Dict[str, int], List[int], List[Tuple[int, int]]]) –

    要么

    • 嵌入大小的字典,例如 {'cat1': (10, 3)} 表示第一个类别变量有10个唯一值,映射到3个嵌入维度。使用 get_embedding_size() 根据类别数量自动获取合理的嵌入大小。

    • 类别大小的字典,例如 {'cat1': 10},其中嵌入大小由 get_embedding_size() 推断。

    • 嵌入大小和类别大小的列表,例如 [(10, 3), (20, 2)](要求 x_categoricals 为空)

    • 类别大小的列表,其中嵌入大小由 get_embedding_size() 推断(要求 x_categoricals 为空)。

    如果输入作为列表提供,输出将是形状为 batch x (可选) time x sum(embedding_sizes) 的单个张量。否则,输出是嵌入张量的字典。

  • x_categoricals (列表[字符串]) – 用作输入的分类变量列表。

  • categorical_groups (字典[字符串, 列表[字符串]]) – 应该在嵌入包中汇总的类别字典,例如 {'cat1': ['cat2', 'cat3']} 表示一个新的类别变量 'cat1' 映射到一个包含第二和第三个类别变量的嵌入包。 默认为空字典。

  • embedding_paddings (List[str]) – 分类变量的列表,其中值0映射到零嵌入向量。默认为空列表。

  • max_embedding_size (int, 可选) – 如果通过 embedding_sizes 定义的嵌入大小大于 max_embedding_size, 则将受到限制。默认值为 None。

方法

forward(x)

init_embeddings()

items()

keys()

names()

values()

forward(x: Tensor) Dict[str, Tensor][来源]#
Parameters:

x (torch.Tensor) – 形状为 batch x (可选) time x categorials 的输入张量,顺序为 x_categoricals

Returns:

类别名称到嵌入的字典

如果 embedding_size 作为字典提供,则形状为 batch x (可选) time x embedding_size。 否则,返回形状为 batch x (可选) time x sum(embedding_sizes) 的嵌入。 查询属性 output_size 以获取输出的大小。

Return type:

联合[字典[str, torch.Tensor], torch.Tensor]