块分解

class BlockDecomposition(num_blocks: int | None = None, **kwargs)[来源]

基础类:Decomposition

通过块对角矩阵表示特定关系权重矩阵。

块对角分解将每个变换矩阵限制为块对角矩阵,即,

\[\mathbf{W}_r^l = diag(\mathbf{B}_{r,1}^l, \ldots, \mathbf{B}_{r,B}^l)\]

其中 \(\mathbf{B}_{r,i} \in \mathbb{R}^{(d^{(l) }/ B) \times (d^{(l)} / B)}\).

该实现基于[thanapalasingam2021]的高效版本,该版本通过将邻接张量重塑为稀疏矩阵来支持通过单个稀疏矩阵乘法进行消息传递。

初始化层。

Parameters:
  • num_blocks (int | None) – 块的数量。

  • kwargs – 传递给 Decomposition.__init__() 的基于关键字的参数。

方法总结

forward_horizontally_stacked(x, adj)

水平堆叠邻接矩阵的前向传递。

forward_vertically_stacked(x, adj)

垂直堆叠邻接矩阵的前向传递。

iter_extra_repr()

遍历extra_repr的组件。

reset_parameters()

重置层的参数。

方法文档

forward_horizontally_stacked(x: Tensor, adj: Tensor) Tensor[source]

水平堆叠邻接矩阵的前向传递。

Parameters:
  • x (Tensor) – 形状: (num_entities, input_dim) 输入的实体表示

  • adj (Tensor) – 形状: (num_entities, num_relations * num_entities), 稀疏 水平堆叠的邻接矩阵

Returns:

形状: (num_entities, output_dim) 更新后的实体表示。

Return type:

Tensor

forward_vertically_stacked(x: Tensor, adj: Tensor) Tensor[source]

垂直堆叠邻接矩阵的前向传递。

Parameters:
  • x (Tensor) – 形状: (num_entities, input_dim) 输入的实体表示

  • adj (Tensor) – 形状: (num_entities * num_relations, num_entities), 稀疏 垂直堆叠的邻接矩阵

Returns:

形状: (num_entities, output_dim) 更新后的实体表示。

Return type:

Tensor

iter_extra_repr() Iterable[str][来源]

遍历extra_repr的组件。

Return type:

Iterable[str]

reset_parameters()[来源]

重置层的参数。