Comments (11)
M first implementation was doing the kw argument thing, which was exploding in the number of changes. I agree that it operates under the given assumption,. However, I am deliberately not using the embed_all func, which is why it currently works for 1toN.
from kge.
Ok, this needs revision + I think it's risky to use right now. Are you 100% it is correct for 1toN?
from kge.
It is not risky now. But It could be nicer done. As I said,I already had it working with the kwarg way, but it involved a lot of changes for which I wanted us to discuss it first, how we want to do it.
How it did it was that the penalty computation lived now in the KgeModel class and the penalty had a kwargs argument. The annoying thing is that this meant that we would have to change every forward of every model to correctly collect the sparsely embedded spo, sp or po embeddings. I did it for complex, but then figured that what I am doing now is equivalent, ss long as we only care about the lookupembedders parameters.
from kge.
I guess the nice solution would be if the the scorer collects all the parameters and its hyperparameters (reg weight + type), agreed?
from kge.
Are you 100% it is correct for 1toN?
No actually I have to fix it.
from kge.
I think the trainer should collect the ids of the entities and relations that are used in the batch and pass it to the penalty function. This way, the penalty function becomes trivial (like the code you quoted somewhere a few days ago) and different training jobs can collect these ids in the most suitable way.
from kge.
This would imply that the penalty function knows what the scorer is doing with those ids, whcih IMHO is as risky as the assumption I was using.
from kge.
Also, ideally we would design something that lets us also use the same penalty for non embedder parameters liek the hidden layers from NN models and such. This, however, would mean that we might have to move the penalty term into the model scope.
from kge.
The penalty term is already in the model scope. It's just that it forwards the computation of the embedder penalty terms to the embedders, but each model can add arbitrary other penalties if it wanted to do so.
from kge.
I think the revised implementation looks much better. It will also throw an error if the trainer is not setup correctly (passes the right information to the model). Is it implemented for both trainers already?
I suggest to change self.get_s_embedder().penalty(slot=0, **kwargs)
to self.get_s_embedder().penalty(penality_ids=triples[slot], **kwargs)
or so. This way, the embedder can be used later on when the weights do not come from triples.
from kge.
I am closing this due to #41, ok?
from kge.
Related Issues (20)
- Support more metrics?
- How to apply HittER
- Number of negative samples during evaluation HOT 3
- web.informatik.uni-mannheim.de not accesible HOT 2
- ValueError thrown by `$ kge start examples/toy-complex-train.yaml` HOT 3
- Using buffer for writing to a file during preprocessing
- ConvE and reciprocal_relations_model HOT 2
- Getting output of libKGE
- Relation Prediction HOT 5
- Filtered _ro prediction HOT 1
- Frequency based sampling broken
- Error on tensor scoring HOT 1
- Adding user keys to config HOT 2
- Trial XXXXX failed: TypeError("step() missing 1 required positional argument: 'closure'") HOT 2
- ERROR: file:///content does not appear to be a Python project: neither 'setup.py' nor 'pyproject.toml' found. HOT 3
- generate embeddings HOT 1
- Trained embeddings are missing for Codex-{S/M/L} HOT 1
- dataset issues HOT 3
- Getting model predictions in parallel HOT 1
- About debug the program HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from kge.