BlockDecomposition
- class BlockDecomposition(num_blocks: int | None = None, **kwargs)[source]
Bases:
Decomposition
Represent relation-specific weight matrices via block-diagonal matrices.
The block-diagonal decomposition restricts each transformation matrix to a block-diagonal-matrix, i.e.,
\[\mathbf{W}_r^l = diag(\mathbf{B}_{r,1}^l, \ldots, \mathbf{B}_{r,B}^l)\]where \(\mathbf{B}_{r,i} \in \mathbb{R}^{(d^{(l) }/ B) \times (d^{(l)} / B)}\).
The implementation is based on the efficient version of [thanapalasingam2021], which uses a reshaping of the adjacency tensor into a sparse matrix to support message passing by a single sparse matrix multiplication.
Initialize the layer.
- Parameters:
num_blocks (int | None) – the number of blocks.
kwargs – keyword-based parameters passed to
Decomposition.__init__()
.
Methods Summary
forward_horizontally_stacked
(x, adj)Forward pass for horizontally stacked adjacency.
forward_vertically_stacked
(x, adj)Forward pass for vertically stacked adjacency.
Iterate over components for extra_repr.
Reset the layer's parameters.
Methods Documentation
- forward_horizontally_stacked(x: Tensor, adj: Tensor) Tensor [source]
Forward pass for horizontally stacked adjacency.
- Parameters:
- Returns:
shape: (num_entities, output_dim) the updated entity representations.
- Return type:
- forward_vertically_stacked(x: Tensor, adj: Tensor) Tensor [source]
Forward pass for vertically stacked adjacency.
- Parameters:
- Returns:
shape: (num_entities, output_dim) the updated entity representations.
- Return type: