RGCN表示
- class RGCNRepresentation(triples_factory: CoreTriplesFactory, max_id: int | None = None, shape: Sequence[int] | None = None, entity_representations: str | Representation | type[Representation] | None = None, entity_representations_kwargs: Mapping[str, Any] | None = None, num_layers: int = 2, use_bias: bool = True, activation: str | Module | None = None, activation_kwargs: Mapping[str, Any] | None = None, edge_dropout: float = 0.4, self_loop_dropout: float = 0.2, edge_weighting: str | EdgeWeighting | None = None, decomposition: str | Decomposition | None = None, decomposition_kwargs: Mapping[str, Any] | None = None, cache: bool = True, **kwargs)[源代码]
基础类:
Representation通过R-GCN增强的实体表示。
实体编码器使用的GCN经过调整以包含类型化边。 GCN的前向传播定义为:
\[\textbf{e}_{i}^{l+1} = \sigma \left( \sum_{r \in \mathcal{R}}\sum_{j\in \mathcal{N}_{i}^{r}} \frac{1}{c_{i,r}} \textbf{W}_{r}^{l} \textbf{e}_{j}^{l} + \textbf{W}_{0}^{l} \textbf{e}_{i}^{l}\right)\]其中 \(\mathcal{N}_{i}^{r}\) 是通过关系 \(r\) 连接到节点 \(i\) 的邻居节点集合,\(c_{i,r}\) 是一个固定的归一化常数(但也可以作为一个额外的参数引入),\(\textbf{W}_{r}^{l} \in \mathbb{R}^{d^{(l)} \times d^{(l)}}\) 和 \(\textbf{W}_{0}^{l} \in \mathbb{R}^{d^{(l)} \times d^{(l)}}\) 是 R-GCN 的第 l 层的权重矩阵。
编码器为每个节点\(e_i\)聚合其邻居的潜在表示及其自身的潜在表示\(e_{i}^{l}\),形成一个新的潜在表示\(e_{i}^{l+1}\)。与标准GCN不同,R-GCN定义了关系特定的转换\(\textbf{W}_{r}^{l}\),这些转换取决于边的类型和方向。
由于为每个关系引入一个矩阵会引入大量额外的参数,作者提出使用分解方法,参见
pykeen.nn.message_passing.Decomposition。实例化R-GCN编码器。
- Parameters:
triples_factory (CoreTriplesFactory) – 用于消息传递的训练三元组的三元组工厂。
max_id (int) – 最大ID数量。可以是None(默认值),或者与三元组工厂的实体数量匹配。
entity_representations (str | Representation | type[Representation] | None) – 基础实体表示(或它们的提示)
entity_representations_kwargs (Mapping[str, Any] | None) – 用于基础实体表示的额外基于关键字的参数
num_layers (int) – 层数。
use_bias (bool) – 是否使用偏置。
activation_kwargs (Mapping[str, Any] | None) – 如果激活函数未预先实例化,则传递的额外基于关键字的参数。否则忽略。
edge_dropout (float) – 使用的边丢弃率。不适用于自环。
self_loop_dropout (float) – 使用的自循环丢弃率。
edge_weighting (str | EdgeWeighting | None) – 边缘加权机制。
分解 (str | Decomposition | None) – 分解方式,参见
pykeen.nn.message_passing.Decomposition.decomposition_kwargs (Mapping[str, Any] | None) – 在实例化时传递给分解的额外基于关键字的参数。
kwargs – 传递给
Representation.__init__()的额外基于关键字的参数cache (bool) – 是否缓存表示
- Raises:
ValueError – 如果三元组工厂创建了反向三元组。
方法总结
应用不应包含在梯度中的约束。
重置模块的参数。
方法文档