Giter Club home page Giter Club logo

Comments (17)

relf avatar relf commented on May 24, 2024

Could you show your code for pickling? Have you got an error?

from smt.

ArioBattolla avatar ArioBattolla commented on May 24, 2024

I did:

sm = models[model](**par)
sm.set_training_values(X_train, y_train)
sm.train()
with open("best_models.pickle", "wb") as handle:
        pickle.dump(sm, handle)

I got this error:
PicklingError: Can't pickle <class 'function'>: attribute lookup function on builtins failed

from smt.

relf avatar relf commented on May 24, 2024

Ok. That was fixed recently for Kriging based surrogates at least (see #154). So you have to install SMT from GitHub.

from smt.

ArioBattolla avatar ArioBattolla commented on May 24, 2024

Ah ok, thank you very much.
What can I do for other models, such as RBF or IDW?

from smt.

relf avatar relf commented on May 24, 2024

I've just released SMT 0.3.3, you can try it with:

pip install -U smt

Regarding, IDW and RBF, do you get an error? I am not sure but I think it had worked for me.

from smt.

ArioBattolla avatar ArioBattolla commented on May 24, 2024

It gives me this error:

File "W:/17_Users/trainees/Battolla/manda\regression.py", line 647, in AutoInterpolation
pickle.dump(best_models, handle)

File "stringsource", line 2, in smt.surrogate_models.rbfclib.PyRBF.reduce_cython

TypeError: no default reduce due to non-trivial cinit

I have no clue what is about

from smt.

relf avatar relf commented on May 24, 2024

My bad. Indeed it does not work for IDW and RBF and other surrogates using a Cython extensions. Those require special handling (see stackoverflow related question).

from smt.

ArioBattolla avatar ArioBattolla commented on May 24, 2024

But if I save KPLS, do I need to retrain the model or can I load directly to predict new points? Because I am not able to do that.

from smt.

bouhlelma avatar bouhlelma commented on May 24, 2024

from smt.

relf avatar relf commented on May 24, 2024

But if I save KPLS, do I need to retrain the model or can I load directly to predict new points? Because I am not able to do that.

What is going on? After the dump, you should be able to load the KPLS surrogate using pickle.load() and retrieve the trained surrogate.

from smt.

ldallen-crrel avatar ldallen-crrel commented on May 24, 2024

Hello @relf ,
Is there an accepted method to saving trained surrogates that do use Cython? I followed the link you posted above, but I am still confused about how it is implemented. Specifically, I am trying to save an IDW model.

My bad. Indeed it does not work for IDW and RBF and other surrogates using a Cython extensions. Those require special handling (see stackoverflow related question).

My code is nearly the same as the OP, though I get a different error:
TypeError: no default __reduce__ due to non-trivial __cinit__

Thanks

from smt.

relf avatar relf commented on May 24, 2024

@ldallen-crrel No, we have not work specifically on surrogates dump, I've just referenced the link I found after a 2-minutes search. I've started to make pickling work for kriging-based ones but as I said Cython extensions require special handling. I've not planned to work on that, but it would be a great contribution to SMT. What do you mean by OP?

from smt.

ldallen-crrel avatar ldallen-crrel commented on May 24, 2024

Thank you for the reply. By OP, I only meant the original poster (ArioBattolla).

from smt.

petrmanek avatar petrmanek commented on May 24, 2024

Bumping this after some time passed. Has this been resolved? Or has anyone found a workaround? I still get the following error when saving some models (e.g. RBF): TypeError: no default __reduce__ due to non-trivial __cinit__

from smt.

relf avatar relf commented on May 24, 2024

Nothing has evolved on this point. You get an error as it is not implemented (hence the open status of this issue). As far as I am concerned, I do not work on this but I will be happy to integrate a PR on this topic.

from smt.

relf avatar relf commented on May 24, 2024

Bumping on this again, for future reference, note that even if they can not be pickled directly, RBF, IDW, RMTS (like QP and LS) training operation can be cached.

These surrogates have a data_dir option which allows to specify a directory to cache relevant data for each method. Provided you initialize the method with the same training data, cached data is loaded back from the previous run without running training operation again.

from smt.

relf avatar relf commented on May 24, 2024

A section on this topic is added to the documentation.

from smt.

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.