Our current functionality is limited. We only support DistMult, ComplEx, and TransE, with double-sided relation embeddings.
We should expand our functionality by adding more models to Marius. The first thing to do is to scope out which models are out there and which can be implemented easily in our current abstractions.
Once we get a better handle on which models are out there, we can see in what ways our current abstractions are lacking and how we can improve them.
For each decoder model we should ask the following questions:
Does the model need additional information beyond a source, relation and destination embedding for a given edge?
Does the model require computation that does not fit with our double-sided relation embedding approach? E.g score_lhs = comparator(relation_operator(h, r), t) and score_rhs = comparator(relation_operator(t, r'), h)
What modifications would we need to make to LinkPredictionDecoder to support this model?
Our current functionality is limited. We only support DistMult, ComplEx, and TransE, with double-sided relation embeddings.
We should expand our functionality by adding more models to Marius. The first thing to do is to scope out which models are out there and which can be implemented easily in our current abstractions.
A starting point is to look into the models supported by PyKeen: List: https://github.com/pykeen/pykeen#models-26 Implementation: https://github.com/pykeen/pykeen/blob/master/src/pykeen/nn/functional.py Documentation: https://pykeen.readthedocs.io/en/stable/api/pykeen.nn.functional.convkb_interaction.html
Once we get a better handle on which models are out there, we can see in what ways our current abstractions are lacking and how we can improve them.
For each decoder model we should ask the following questions: