TransD¶
-
class
TransD
(triples_factory, embedding_dim=50, relation_dim=30, loss=None, preferred_device=None, random_seed=None, regularizer=None)[source]¶ Bases:
pykeen.models.base.EntityRelationEmbeddingModel
An implementation of TransD from [ji2015].
TransD is an extension of
pykeen.models.TransR
that, like TransR, considers entities and relations as objects living in different vector spaces. However, instead of performing the same relation-specific projection for all entity embeddings, entity-relation-specific projection matrices \(\textbf{M}_{r,h}, \textbf{M}_{t,h} \in \mathbb{R}^{k \times d}\) are constructed.To do so, all head entities, tail entities, and relations are represented by two vectors, \(\textbf{e}_h, \hat{\textbf{e}}_h, \textbf{e}_t, \hat{\textbf{e}}_t \in \mathbb{R}^d\) and \(\textbf{r}_r, \hat{\textbf{r}}_r \in \mathbb{R}^k\), respectively. The first set of embeddings is used for calculating the entity-relation-specific projection matrices:
\[ \begin{align}\begin{aligned}\textbf{M}_{r,h} = \hat{\textbf{r}}_r \hat{\textbf{e}}_h^{T} + \tilde{\textbf{I}}\\\textbf{M}_{r,t} = \hat{\textbf{r}}_r \hat{\textbf{e}}_t^{T} + \tilde{\textbf{I}}\end{aligned}\end{align} \]where \(\tilde{\textbf{I}} \in \mathbb{R}^{k \times d}\) is a \(k \times d\) matrix with ones on the diagonal and zeros elsewhere. Next, \(\textbf{e}_h\) and \(\textbf{e}_t\) are projected into the relation space by means of the constructed projection matrices. Finally, the plausibility score for \((h,r,t) \in \mathbb{K}\) is given by:
\[f(h,r,t) = -\|\textbf{M}_{r,h} \textbf{e}_h + \textbf{r}_r - \textbf{M}_{r,t} \textbf{e}_t\|_{2}^2\]See also
OpenKE implementation of TransD
Initialize the entity embedding model.
- Parameters
relation_dim (
int
) – The relation embedding dimensionality. If not given, defaults to same size as entity embedding dimension.
See also
Constructor of the base class
pykeen.models.Model
See also
Constructor of the base class
pykeen.models.EntityEmbeddingModel
Attributes Summary
The default strategy for optimizing the model’s hyper-parameters
Methods Summary
interaction_function
(h, h_p, r, r_p, t, t_p)Evaluate the interaction function for given embeddings.
score_h
(rt_batch)Forward pass using left side (head) prediction.
score_hrt
(hrt_batch)Forward pass.
score_t
(hr_batch)Forward pass using right side (tail) prediction.
Attributes Documentation
-
hpo_default
: ClassVar[Mapping[str, Any]] = {'embedding_dim': {'high': 256, 'low': 16, 'q': 16, 'type': <class 'int'>}, 'relation_dim': {'high': 256, 'low': 16, 'q': 16, 'type': <class 'int'>}}¶ The default strategy for optimizing the model’s hyper-parameters
Methods Documentation
-
static
interaction_function
(h, h_p, r, r_p, t, t_p)[source]¶ Evaluate the interaction function for given embeddings.
The embeddings have to be in a broadcastable shape.
- Parameters
h (
FloatTensor
) – shape: (batch_size, num_entities, d_e) Head embeddings.h_p (
FloatTensor
) – shape: (batch_size, num_entities, d_e) Head projections.r (
FloatTensor
) – shape: (batch_size, num_entities, d_r) Relation embeddings.r_p (
FloatTensor
) – shape: (batch_size, num_entities, d_r) Relation projections.t (
FloatTensor
) – shape: (batch_size, num_entities, d_e) Tail embeddings.t_p (
FloatTensor
) – shape: (batch_size, num_entities, d_e) Tail projections.
- Return type
FloatTensor
- Returns
shape: (batch_size, num_entities) The scores.
-
score_h
(rt_batch)[source]¶ Forward pass using left side (head) prediction.
This method calculates the score for all possible heads for each (relation, tail) pair.
- Parameters
rt_batch (
LongTensor
) – shape: (batch_size, 2), dtype: long The indices of (relation, tail) pairs.- Return type
FloatTensor
- Returns
shape: (batch_size, num_entities), dtype: float For each r-t pair, the scores for all possible heads.
-
score_hrt
(hrt_batch)[source]¶ Forward pass.
This method takes head, relation and tail of each triple and calculates the corresponding score.
- Parameters
hrt_batch (
LongTensor
) – shape: (batch_size, 3), dtype: long The indices of (head, relation, tail) triples.- Raises
NotImplementedError – If the method was not implemented for this class.
- Return type
FloatTensor
- Returns
shape: (batch_size, 1), dtype: float The score for each triple.
-
score_t
(hr_batch)[source]¶ Forward pass using right side (tail) prediction.
This method calculates the score for all possible tails for each (head, relation) pair.
- Parameters
hr_batch (
LongTensor
) – shape: (batch_size, 2), dtype: long The indices of (head, relation) pairs.- Return type
FloatTensor
- Returns
shape: (batch_size, num_entities), dtype: float For each h-r pair, the scores for all possible tails.