RGCN
- class RGCN(*, triples_factory, embedding_dim=500, num_layers=2, base_entity_initializer=<function xavier_uniform_>, base_entity_initializer_kwargs=None, relation_representations=None, relation_initializer=<function xavier_uniform_>, relation_initializer_kwargs=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:
ERModel
[FloatTensor
,RelationRepresentation
,FloatTensor
]An implementation of R-GCN from [schlichtkrull2018].
The Relational Graph Convolutional Network (R-GCN) comprises three parts:
A GCN-based entity encoder that computes enriched representations for entities, cf.
pykeen.nn.message_passing.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.Relation representations \(\textbf{R}_{r} \in \mathbb{R}^{d \times d}\) is a diagonal matrix that are learned independently from the GCN-based encoder.
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 model.
- Parameters:
triples_factory (
CoreTriplesFactory
) – the (training) triples factoryembedding_dim (
int
) – the embedding dimensionnum_layers (
int
) – >0 the number of layersbase_entity_initializer (
Union
[str
,Callable
[[FloatTensor
],FloatTensor
],None
]) – the entity base representation initializerbase_entity_initializer_kwargs (
Optional
[Mapping
[str
,Any
]]) – the entity base representation initializer’s keyword-based parametersrelation_representations (
Union
[str
,Representation
,Type
[Representation
],None
]) – the relation representations, or a hint thereofrelation_initializer (
Union
[str
,Callable
[[FloatTensor
],FloatTensor
],None
]) – the entity base representation initializerrelation_initializer_kwargs (
Optional
[Mapping
[str
,Any
]]) – the entity base representation initializer’s keyword-based parametersinteraction (
Union
[str
,Interaction
[FloatTensor
, ~RelationRepresentation,FloatTensor
],Type
[Interaction
[FloatTensor
, ~RelationRepresentation,FloatTensor
]],None
]) – the interaction function, or a hint thereofinteraction_kwargs (
Optional
[Mapping
[str
,Any
]]) – additional keyword-based parameters passed to the interaction functionuse_bias (
bool
) – whether to use a bias on the message passing layersactivation (
Union
[str
,Module
,None
]) – the activation function, or a hint thereofactivation_kwargs (
Optional
[Mapping
[str
,Any
]]) – additional keyword-based parameters passed to the activation functionedge_dropout (
float
) – the edge dropout, except for self-loopsself_loop_dropout (
float
) – the self-loop dropoutedge_weighting (
Union
[str
,EdgeWeighting
,None
]) – the edge weightingdecomposition (
Union
[str
,Decomposition
,None
]) – the convolution weight decompositiondecomposition_kwargs (
Optional
[Mapping
[str
,Any
]]) – additional keyword-based parameters passed to the weight decompositionregularizer (
Union
[str
,Regularizer
,None
]) – the regularizer applied to the base representationsregularizer_kwargs (
Optional
[Mapping
[str
,Any
]]) – additional keyword-based parameters passed to the regularizerkwargs – additional keyword-based parameters passed to
ERModel.__init__()
Attributes Summary
The default strategy for optimizing the model's hyper-parameters
Attributes Documentation
- hpo_default: ClassVar[Mapping[str, Any]] = {'activation': {'choices': [<class 'torch.nn.modules.activation.ReLU'>, <class 'torch.nn.modules.activation.LeakyReLU'>], 'type': 'categorical'}, 'decomposition': {'choices': ['bases', 'block'], 'type': 'categorical'}, 'edge_dropout': {'high': 0.5, 'low': 0.0, 'q': 0.1, 'type': <class 'float'>}, 'edge_weighting': {'choices': ['inverse_in_degree', 'inverse_out_degree', 'symmetric'], 'type': 'categorical'}, 'embedding_dim': {'high': 256, 'low': 16, 'q': 16, '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.5, 'low': 0.0, 'q': 0.1, 'type': <class 'float'>}, 'use_bias': {'type': 'bool'}}
The default strategy for optimizing the model’s hyper-parameters