class RGCNRepresentation(triples_factory, max_id=None, shape=None, entity_representations=None, entity_representations_kwargs=None, num_layers=2, use_bias=True, activation=None, activation_kwargs=None, edge_dropout=0.4, self_loop_dropout=0.2, edge_weighting=None, decomposition=None, decomposition_kwargs=None, cache=True, **kwargs)[source]

Bases: Representation

Entity representations enriched by R-GCN.

The GCN employed by the entity encoder is adapted to include typed edges. The forward pass of the GCN is defined by:

\[\textbf{e}_{i}^{l+1} = \sigma \left( \sum_{r \in \mathcal{R}}\sum_{j\in \mathcal{N}_{i}^{r}} \frac{1}{c_{i,r}} \textbf{W}_{r}^{l} \textbf{e}_{j}^{l} + \textbf{W}_{0}^{l} \textbf{e}_{i}^{l}\right)\]

where \(\mathcal{N}_{i}^{r}\) is the set of neighbors of node \(i\) that are connected to \(i\) by relation \(r\), \(c_{i,r}\) is a fixed normalization constant (but it can also be introduced as an additional parameter), and \(\textbf{W}_{r}^{l} \in \mathbb{R}^{d^{(l)} \times d^{(l)}}\) and \(\textbf{W}_{0}^{l} \in \mathbb{R}^{d^{(l)} \times d^{(l)}}\) are weight matrices of the l-th layer of the R-GCN.

The encoder aggregates for each node \(e_i\) the latent representations of its neighbors and its own latent representation \(e_{i}^{l}\) into a new latent representation \(e_{i}^{l+1}\). In contrast to standard GCN, R-GCN defines relation specific transformations \(\textbf{W}_{r}^{l}\) which depend on the type and direction of an edge.

Since having one matrix for each relation introduces a large number of additional parameters, the authors instead propose to use a decomposition, cf. pykeen.nn.message_passing.Decomposition.

Instantiate the R-GCN encoder.

  • triples_factory (CoreTriplesFactory) – The triples factory holding the training triples used for message passing.

  • max_id (Optional[int]) – The maximum number of IDs. could either be None (the default), or match the triples factory’s number of entities.

  • shape (Optional[Sequence[int]]) – the shape information. If None, will propagate the shape information of the base entity representations.

  • entity_representations (Union[str, Representation, Type[Representation], None]) – the base entity representations (or a hint for them)

  • entity_representations_kwargs (Optional[Mapping[str, Any]]) – additional keyword-based parameters for the base entity representations

  • num_layers (int) – The number of layers.

  • use_bias (bool) – Whether to use a bias.

  • activation (Union[str, Module, None]) – The activation.

  • activation_kwargs (Optional[Mapping[str, Any]]) – Additional keyword based arguments passed if the activation is not pre-instantiated. Ignored otherwise.

  • edge_dropout (float) – The edge dropout to use. Does not apply to self-loops.

  • self_loop_dropout (float) – The self-loop dropout to use.

  • edge_weighting (Union[str, EdgeWeighting, None]) – The edge weighting mechanism.

  • decomposition (Union[str, Decomposition, None]) – The decomposition, cf. pykeen.nn.message_passing.Decomposition.

  • decomposition_kwargs (Optional[Mapping[str, Any]]) – Additional keyword based arguments passed to the decomposition upon instantiation.

  • kwargs – additional keyword-based parameters passed to Representation.__init__()

  • cache (bool) – whether to cache representations


ValueError – If the triples factory creates inverse triples.

Methods Summary


Apply constraints which should not be included in gradients.


Reset the module's parameters.

Methods Documentation


Apply constraints which should not be included in gradients.

Return type:



Reset the module’s parameters.