KGE.models.semantic_based.RESCAL
Classes
An implementation of RESCAL from [nickel 2011]. |
|
|
A base module for Semantic Based Embedding Model. |
|
An implementation of Square Error Loss. |
|
An implementation of uniform negative sampling |
Class Inheritance Diagram

An implementation of RESCAL
- class KGE.models.semantic_based.RESCAL.RESCAL[source]
Bases:
KGE.models.base_model.SemanticModel.SemanticModelAn implementation of RESCAL from [nickel 2011].
RESCAL is a bilinear model that represents each entity as a vector that models the latent-component representation and represents each relation as a matrix that models the interactions between the latent components.
The score of \((h,r,t)\) is defined by a bilinear function:
\[f(h,r,t) = \textbf{e}_h^{T} \textbf{R}_{r} \textbf{e}_t\]where \(\textbf{e}_i \in \mathbb{R}^k\) are vector representations of the entities, and \(\textbf{R}_i \in \mathbb{R}^{k \times k}\) is an asymmetric matrix associated with the relation.
If
constraint=Truegiven in__init__(), conduct L2-regularization described in original RESCAL paper:\[regularization~term = \lambda \times \left( \sum_{i} {\left\| \textbf{e}_i \right\|}_2^2 + \sum_{i} {\left\| \textbf{R}_i \right\|}_F^2 \right).\]Methods
evaluate(eval_X, corrupt_side[, positive_X])Evaluate triplets.
get_rank(x, positive_X, corrupt_side)Get rank for specific one triplet.
restore_model_weights(model_weights)Restore the model weights.
score_hrt(h, r, t)Score the triplets \((h,r,t)\).
train(train_X, val_X, metadata, epochs, ...)Train the Knowledge Graph Embedding Model.
- __init__(embedding_params, negative_ratio, corrupt_side, loss_fn=<KGE.loss.SquareErrorLoss object>, ns_strategy=<class 'KGE.ns_strategy.UniformStrategy'>, constraint=True, constraint_weight=1.0, n_workers=1)[source]
Initialized RESCAL
- Parameters
embedding_params (
dict) – embedding dimension parameters, should have key'embedding_size'for embedding dimension \(k\)negative_ratio (
int) – number of negative samplecorrupt_side (
str) – corrupt from which side while trainging, can be'h','t', or'h+t'loss_fn (
class, optional) – loss function classKGE.loss.Loss, by defaultKGE.loss.SquareErrorLossns_strategy (
function, optional) – negative sampling strategy, by defaultKGE.ns_strategy.uniform_strategy()constraint (
bool, optional) – conduct constraint or not, by defaultTrueconstraint_weight (
float, optional) – regularization weight \(\lambda\), by default 1.0n_workers (
int, optional) – number of workers for negative sampling, by default 1
- evaluate(eval_X, corrupt_side, positive_X=None)
Evaluate triplets.
- Parameters
eval_X (
tf.Tensorornp.array) – triplets to be evaluatedcorrupt_side (
str) – corrupt triplets from which side, can be'h'and't'positive_X (
tf.Tensorornp.array, optional) – positive triplets that should be filtered while generating corrupted triplets, by default None (no filter applied)
- Returns
evaluation result
- Return type
dict
- get_rank(x, positive_X, corrupt_side)
Get rank for specific one triplet.
- Parameters
x (
tf.Tensorornp.array) – rank this tripletpositive_X (
tf.Tensorornp.array, optional) – positive triplets that should bt filtered while generating corrupted triplets, ifNone, no filter appliedcorrupt_side (
str) – corrupt triplets from which side, can be'h'and't'
- Returns
ranking result
- Return type
int
- restore_model_weights(model_weights)
Restore the model weights.
- Parameters
model_weights (
dict) – dictionary of model weights to be restored
- score_hrt(h, r, t)[source]
Score the triplets \((h,r,t)\).
If
hisNone, score all entities: \((h_i, r, t)\).If
tisNone, score all entities: \((h, r, t_i)\).handtshould not beNonesimultaneously.- Parameters
h (
tf.Tensorornp.ndarrayorNone) – index of heads with shape(n,)r (
tf.Tensorornp.ndarray) – index of relations with shape(n,)t (
tf.Tensorornp.ndarrayorNone) – index of tails with shape(n,)
- Returns
triplets scores with shape
(n,)- Return type
tf.Tensor
- train(train_X, val_X, metadata, epochs, batch_size, early_stopping_rounds=None, model_weights_initial=None, restore_best_weight=True, optimizer='Adam', seed=None, log_path='./logs', log_projector=False)
Train the Knowledge Graph Embedding Model.
- Parameters
train_X (
np.ndarrayorstr) –training triplets.
If
np.ndarray, shape should be(n,3)for \((h,r,t)\) respectively.If
str, training triplets should be save under this folder path with csv format, every csv files should have 3 columns without header for \((h,r,t)\) respectively.val_X (
np.ndarrayorstr) –validation triplets.
If
np.ndarray, shape should be(n,3)for \((h,r,t)\) respectively.If
str, training triplets should be save under this folder path with csv format, every csv files should have 3 columns without header for \((h,r,t)\) respectively.metadata (
dict) –metadata for kg data. should have following keys:
'ent2ind': dict, dictionay that mapping entity to index.'ind2ent': list, list that mapping index to entity.'rel2ind': dict, dictionay that mapping relation to index.'ind2rel': list, list that mapping index to relation.can use KGE.data_utils.index_kg to index and get metadata.
epochs (
int) – number of epochsbatch_size (
int) – batch_sizeearly_stopping_rounds (
int, optional) – number of rounds that trigger early stopping, by default None (no early stopping)model_weights_initial (
dict, optional) – initial model wieghts with specific value, by default Nonerestore_best_weight (
bool, optional) – restore weight to the best iteration if early stopping rounds is not None, by default Trueoptimizer (
strortensorflow.keras.optimizers, optional) – optimizer that apply in training, by default'Adam', use the default setting of tf.keras.optimizers.Adamseed (
int, optional) – random seed for shuffling data & embedding initialzation, by default Nonelog_path (
str, optional) – path for tensorboard logging, by default “./logs”log_projector (
bool, optional) – project the embbedings in the tensorboard projector tab, setting this True will write the metadata and embedding tsv files inlog_pathand project this data on tensorboard projector tab, by default False