class BasesDecomposition(input_dim, num_relations, num_bases=None, output_dim=None, memory_intense=False)[source]

Bases: pykeen.nn.message_passing.Decomposition

Represent relation-weights as a linear combination of base transformation matrices.

The basis decomposition represents the relation-specific transformation matrices as a weighted combination of base matrices, \(\{\mathbf{B}_i^l\}_{i=1}^{B}\), i.e.,

\[\mathbf{W}_r^l = \sum \limits_{b=1}^B \alpha_{rb} \mathbf{B}^l_i\]

Initialize the layer.

  • input_dim (int) – >0 The input dimension.

  • num_relations (int) – >0 The number of relations.

  • num_bases (Optional[int]) – >0 The number of bases to use.

  • output_dim (Optional[int]) – >0 The output dimension. If None is given, defaults to input_dim.

  • memory_intense (bool) – Enable memory-intense forward pass which may be faster, in particular if the number of different relations is small.

Methods Summary

forward(x, node_keep_mask, source, target, ...)

Relation-specific message passing from source to target.


Reset the parameters of this layer.

Methods Documentation

forward(x, node_keep_mask, source, target, edge_type, edge_weights=None)[source]

Relation-specific message passing from source to target.

  • x (FloatTensor) – shape: (num_nodes, input_dim) The node representations.

  • node_keep_mask (Optional[BoolTensor]) – shape: (num_nodes,) The node-keep mask for self-loop dropout.

  • source (LongTensor) – shape: (num_edges,) The source indices.

  • target (LongTensor) – shape: (num_edges,) The target indices.

  • edge_type (LongTensor) – shape: (num_edges,) The edge types.

  • edge_weights (Optional[FloatTensor]) – shape: (num_edges,) Precomputed edge weights.

Return type



shape: (num_nodes, output_dim) The enriched node embeddings.


Reset the parameters of this layer.