TransE交互

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

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

基于无状态范数的TransE交互函数。

TransE 模型将关系建模为从头实体到尾实体在 \(\textbf{e}\) 中的平移:

\[\textbf{e}_h + \textbf{e}_r \approx \textbf{e}_t\]

这个方程被重新排列,并应用了\(l_p\)范数来创建TransE交互函数。

\[f(h, r, t) = - \|\textbf{e}_h + \textbf{e}_r - \textbf{e}_t\|_{p}\]

虽然这种公式在计算上是高效的,但它本质上无法建模一对一、一对多和多对多的关系。对于三元组 \((h,r,t_1), (h,r,t_2) \in \mathcal{K}\) 其中 \(t_1 \neq t_2\),模型调整嵌入以确保 \(\textbf{e}_h + \textbf{e}_r \approx \textbf{e}_{t_1}\)\(\textbf{e}_h + \textbf{e}_r \approx \textbf{e}_{t_2}\),这导致 \(\textbf{e}_{t_1} \approx \textbf{e}_{t_2}\)

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

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

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

方法总结

forward(h, r, t)

评估交互函数。

方法文档

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

评估交互函数。

另请参阅

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

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

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

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

Returns:

形状: batch_dims 分数。

Return type:

Tensor