TransR

class dgl.nn.pytorch.link.TransR(num_rels, rfeats, nfeats, p=1)[source]

Bases: Module

相似性度量来自 学习实体和关系嵌入以完成知识图谱

数学上,它定义如下:

\[- {\| M_r h + r - M_r t \|}_p\]

其中 \(M_r\) 是一个关系特定的投影矩阵,\(h\) 是 头嵌入,\(r\) 是关系嵌入,\(t\) 是尾嵌入。

Parameters:
  • num_rels (int) – Number of relation types.

  • rfeats (int) – 关系嵌入大小。

  • nfeats (int) – 实体嵌入大小。

  • p (int, optional) – The p to use for Lp norm, which can be 1 or 2.

rel_emb

可学习的关系类型嵌入。

Type:

torch.nn.Embedding

rel_project

可学习的关系类型特定投影。

Type:

torch.nn.Embedding

示例

>>> import dgl
>>> import torch as th
>>> from dgl.nn import TransR
>>> # input features
>>> num_nodes = 10
>>> num_edges = 30
>>> num_rels = 3
>>> feats = 4
>>> scorer = TransR(num_rels=num_rels, rfeats=2, nfeats=feats)
>>> g = dgl.rand_graph(num_nodes=num_nodes, num_edges=num_edges)
>>> src, dst = g.edges()
>>> h = th.randn(num_nodes, feats)
>>> h_head = h[src]
>>> h_tail = h[dst]
>>> # Randomly initialize edge relation types for demonstration
>>> rels = th.randint(low=0, high=num_rels, size=(num_edges,))
>>> scorer(h_head, h_tail, rels).shape
torch.Size([30])
forward(h_head, h_tail, rels)[source]

评分三元组。

Parameters:
  • h_head (torch.Tensor) – 头部实体特征。张量的形状为 \((E, D)\),其中 \(E\) 是三元组的数量,\(D\) 是特征大小。

  • h_tail (torch.Tensor) – 尾部实体特征。张量的形状为 \((E, D)\),其中 \(E\) 是三元的数量,\(D\) 是特征大小。

  • rels (torch.Tensor) – 关系类型。它是一个形状为 \((E)\) 的 LongTensor,其中 \(E\) 是三元的数量。

Returns:

The triple scores. The tensor is of shape \((E)\).

Return type:

torch.Tensor

reset_parameters()[source]

Description

重新初始化可学习的参数。