torch_geometric.nn.models.RENet

class RENet(num_nodes: int, num_rels: int, hidden_channels: int, seq_len: int, num_layers: int = 1, dropout: float = 0.0, bias: bool = True)[source]

Bases: Module

来自“Recurrent Event Network for Reasoning over Temporal Knowledge Graphs”论文的循环事件网络模型。

\[f_{\mathbf{\Theta}}(\mathbf{e}_s, \mathbf{e}_r, \mathbf{h}^{(t-1)}(s, r))\]

基于RNN编码器

\[\mathbf{h}^{(t)}(s, r) = \textrm{RNN}(\mathbf{e}_s, \mathbf{e}_r, g(\mathcal{O}^{(t)}_r(s)), \mathbf{h}^{(t-1)}(s, r))\]

其中 \(\mathbf{e}_s\)\(\mathbf{e}_r\) 表示实体和关系嵌入,\(\mathcal{O}^{(t)}_r(s)\) 表示在时间戳 \(t\) 下与主体 \(s\) 在关系 \(r\) 下交互的对象集合。 该模型将 \(g\) 实现为 均值聚合器,并将 \(f_{\mathbf{\Theta}}\) 实现为线性投影。

Parameters:
  • num_nodes (int) – 知识图谱中的节点数量。

  • num_rels (int) – 知识图谱中的关系数量。

  • hidden_channels (int) – 节点和关系嵌入的隐藏大小。

  • seq_len (int) – 过去事件的序列长度。

  • num_layers (int, optional) – 循环层的数量。 (默认值: 1)

  • dropout (float) – 如果非零,在最终预测之前引入一个dropout层。(默认值:0.

  • bias (bool, optional) – If set to False, all layers will not learn an additive bias. (default: True)

forward(data: Data) Tuple[Tensor, Tensor][source]

给定一个data批次,计算前向传递。

Parameters:

data (torch_geometric.data.Data) – 输入数据,包含主体 sub, 关系 rel 和对象 obj 信息,形状为 [batch_size]. 此外,data 需要包含主体的历史信息,由节点索引向量 h_sub 和 它们的相对时间戳 h_sub_t 以及批次分配 h_sub_batch 给出。 同样的信息也必须为对象提供 (h_obj, h_obj_t, h_obj_batch).

Return type:

Tuple[Tensor, Tensor]

reset_parameters()[source]
static pre_transform(seq_len: int) Callable[source]

预计算历史对象。

\[\{ \mathcal{O}^{(t-k-1)}_r(s), \ldots, \mathcal{O}^{(t-1)}_r(s) \}\]

一个 torch_geometric.datasets.icews.EventDataset\(k\) 表示序列长度 seq_len

Return type:

Callable

test(logits: Tensor, y: Tensor) Tensor[source]

给定真实值 y,计算平均倒数排名(MRR)和1/3/10的命中率。

Return type:

Tensor