Giter VIP home page Giter VIP logo

Comments (11)

samuelbroscheit avatar samuelbroscheit commented on August 16, 2024

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.

rgemulla avatar rgemulla commented on August 16, 2024

Ok, this needs revision + I think it's risky to use right now. Are you 100% it is correct for 1toN?

from kge.

samuelbroscheit avatar samuelbroscheit commented on August 16, 2024

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.

samuelbroscheit avatar samuelbroscheit commented on August 16, 2024

I guess the nice solution would be if the the scorer collects all the parameters and its hyperparameters (reg weight + type), agreed?

from kge.

samuelbroscheit avatar samuelbroscheit commented on August 16, 2024

Are you 100% it is correct for 1toN?

No actually I have to fix it.

from kge.

rgemulla avatar rgemulla commented on August 16, 2024

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.

samuelbroscheit avatar samuelbroscheit commented on August 16, 2024

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.

samuelbroscheit avatar samuelbroscheit commented on August 16, 2024

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.

rgemulla avatar rgemulla commented on August 16, 2024

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.

rgemulla avatar rgemulla commented on August 16, 2024

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.

samuelbroscheit avatar samuelbroscheit commented on August 16, 2024

I am closing this due to #41, ok?

from kge.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.