TransH交互

class TransHInteraction(p: int, power_norm: bool = False)[source]

基础类:NormBasedInteraction[Tensor, tuple[Tensor, Tensor], Tensor]

基于范数的TransH交互函数。

该模型通过在一个关系特定的超平面中应用从头实体到尾实体的翻译来扩展TransEInteraction,以解决其无法建模一对多、多对一和多对多关系的问题。

在TransH中,每个关系由一个超平面表示,更具体地说,是这个超平面的法向量 \(\mathbf{r}_{w} \in \mathbb{R}^d\) 和一个位于超平面内的向量 \(\mathbf{r}_{d} \in \mathbb{R}^d\)。 为了获得一个合理性分数,首先将头部表示 \(\mathbf{h} \in \mathbb{R}^d\), 和尾部嵌入 \(\mathbf{t} \in \mathbb{R}^d\) 投影到特定关系的超平面上:

\[ \begin{align}\begin{aligned}\mathbf{h}_{r} = \mathbf{h} - \mathbf{r}_{w}^T \mathbf{h} \mathbf{r}_w\\\mathbf{t}_{r} = \mathbf{t} - \mathbf{r}_{w}^T \mathbf{t} \mathbf{r}_w\end{aligned}\end{align} \]

然后,使用投影表示来计算分数,如 TransEInteraction:

\[-\|\textbf{h}_{r} + \textbf{r}_d - \textbf{t}_{r}\|_{p}^2\]

初始化基于范数的交互函数。

Parameters:
  • p (int) – 与 torch.linalg.vector_norm() 一起使用的范数。通常为1或2。

  • power_norm (bool) – 是否使用\(L_p\)范数的p次方。它的优点是在0附近可微分,并且在数值上更稳定。

属性摘要

relation_shape

关系表示的符号形状

方法总结

forward(h, r, t)

评估交互函数。

属性文档

relation_shape: Sequence[str] = ('d', 'd')

关系表示的符号形状

方法文档

forward(h: Tensor, r: tuple[Tensor, Tensor], t: Tensor) Tensor[来源]

评估交互函数。

另请参阅

Interaction.forward 提供了关于交互函数通用批处理形式的详细描述。

Parameters:
  • h (Tensor) – 形状: (*batch_dims, d) 头部表示。

  • r (tuple[Tensor, Tensor]) – 形状: (*batch_dims, d) 关系表示。

  • t (Tensor) – 形状: (*batch_dims, d) 尾部表示。

Returns:

形状: batch_dims 分数。

Return type:

Tensor