多重嵌入#
- 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]