class RGCN(*, triples_factory, embedding_dim=500, num_layers=2, base_entity_initializer=<function xavier_uniform_>, base_entity_initializer_kwargs=None, relation_initializer=<function xavier_uniform_>, relation_initializer_kwargs=None, relation_representations=None, interaction='DistMult', interaction_kwargs=None, 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, regularizer=None, regularizer_kwargs=None, **kwargs)[source]

Bases: pykeen.models.nbase.ERModel[torch.FloatTensor, pykeen.typing.RelationRepresentation, torch.FloatTensor]

An implementation of R-GCN from [schlichtkrull2018].

The Relational Graph Convolutional Network (R-GCN) comprises three parts:

  1. A GCN-based entity encoder that computes enriched representations for entities, cf. pykeen.nn.emb.RGCNRepresentations. The representation for entity \(i\) at level \(l \in (1,\dots,L)\) is denoted as \(\textbf{e}_i^l\). The GCN is modified to use different weights depending on the type of the relation.

  2. Relation representations \(\textbf{R}_{r} \in \mathbb{R}^{d \times d}\) is a diagonal matrix that are learned independently from the GCN-based encoder.

  3. An arbitrary interaction model which computes the plausibility of facts given the enriched representations, cf. pykeen.nn.modules.Interaction.

Scores for each triple \((h,r,t) \in \mathcal{K}\) are calculated by using the representations in the final level of the GCN-based encoder \(\textbf{e}_h^L\) and \(\textbf{e}_t^L\) along with relation representation \(\textbf{R}_{r}\). While the original implementation of R-GCN used the DistMult model and we use it as a default, this implementation allows the specification of an arbitrary interaction model.

\[f(h,r,t) = \textbf{e}_h^L \textbf{R}_{r} \textbf{e}_t^L\]

Initialize the module.

  • triples_factory (CoreTriplesFactory) – The triples factory facilitates access to the dataset.

  • interaction (Union[str, Interaction[FloatTensor, ~RelationRepresentation, FloatTensor], Type[Interaction[FloatTensor, ~RelationRepresentation, FloatTensor]], None]) – The interaction module (e.g., TransE)

  • interaction_kwargs (Optional[Mapping[str, Any]]) – Additional key-word based parameters given to the interaction module’s constructor, if not already instantiated.

  • entity_representations – The entity representation or sequence of representations

  • relation_representations (Union[None, EmbeddingSpecification, RepresentationModule, Sequence[Union[EmbeddingSpecification, RepresentationModule]]]) – The relation representation or sequence of representations

  • loss – The loss to use. If None is given, use the loss default specific to the model subclass.

  • loss_kwargs – Additional key-word based parameters given to the loss module’s constructor, if not already instantiated.

  • predict_with_sigmoid – Whether to apply sigmoid onto the scores when predicting scores. Applying sigmoid at prediction time may lead to exactly equal scores for certain triples with very high, or very low score. When not trained with applying sigmoid (or using BCEWithLogitsLoss), the scores are not calibrated to perform well with sigmoid.

  • preferred_device – The preferred device for model training and inference.

  • random_seed – A random seed to use for initialising the model’s weights. Should be set when aiming at reproducibility.

  • skip_checks – whether to skip entity representation checks.

Attributes Summary


The default strategy for optimizing the model"s hyper-parameters

Attributes Documentation

hpo_default: ClassVar[Mapping[str, Any]] = {'activation_cls': {'choices': [<class 'torch.nn.modules.activation.ReLU'>, <class 'torch.nn.modules.activation.LeakyReLU'>], 'type': 'categorical'}, 'decomposition': {'choices': ['bases', 'blocks'], 'type': 'categorical'}, 'edge_dropout': {'high': 0.9, 'low': 0.0, 'type': <class 'float'>}, 'edge_weighting': {'choices': ['inverse_in_degree', 'inverse_out_degree', 'symmetric'], 'type': 'categorical'}, 'embedding_dim': {'high': 512, 'low': 32, 'q': 32, 'type': <class 'int'>}, 'interaction': {'choices': ['distmult', 'complex', 'ermlp'], 'type': 'categorical'}, 'num_layers': {'high': 5, 'low': 1, 'q': 1, 'type': <class 'int'>}, 'self_loop_dropout': {'high': 0.9, 'low': 0.0, 'type': <class 'float'>}, 'use_batch_norm': {'type': 'bool'}, 'use_bias': {'type': 'bool'}}

The default strategy for optimizing the model”s hyper-parameters