首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sci-kit optimize中模型的保存和加载

sci-kit optimize中模型的保存和加载
EN

Stack Overflow用户
提问于 2019-12-23 05:09:42
回答 1查看 332关注 0票数 1

我在skopt包中对gp_minimize使用了贝叶斯优化,对dummy_minimize使用了随机搜索。

我想通过scikit-opt中的load选项保存这两个模型:

skopt.dump(gp_100, 'gp_100.pkl')

据我所知,应该可以使用以下行加载模型:

gp_100 = skopt.load('gp_100.pkl')

不幸的是,这引发了一个错误:

代码语言:javascript
复制
<ipython-input-18-a24ad5907175> in <module>
      1 from skopt import load
----> 2 gpall_1000 = skopt.load('gp_100.pkl')

/opt/conda/lib/python3.7/site-packages/skopt/utils.py in load(filename, **kwargs)
    170         Reconstructed OptimizeResult instance.
    171     """
--> 172     return load_(filename, **kwargs)
    173 
    174 

/opt/conda/lib/python3.7/site-packages/joblib/numpy_pickle.py in load(filename, mmap_mode)
    603                     return load_compatibility(fobj)
    604 
--> 605                 obj = _unpickle(fobj, filename, mmap_mode)
    606 
    607     return obj

/opt/conda/lib/python3.7/site-packages/joblib/numpy_pickle.py in _unpickle(fobj, filename, mmap_mode)
    527     obj = None
    528     try:
--> 529         obj = unpickler.load()
    530         if unpickler.compat_mode:
    531             warnings.warn("The file '%s' has been generated with a "

/opt/conda/lib/python3.7/pickle.py in load(self)
   1083                     raise EOFError
   1084                 assert isinstance(key, bytes_types)
-> 1085                 dispatch[key[0]](self)
   1086         except _Stop as stopinst:
   1087             return stopinst.value

/opt/conda/lib/python3.7/pickle.py in load_global(self)
   1371         module = self.readline()[:-1].decode("utf-8")
   1372         name = self.readline()[:-1].decode("utf-8")
-> 1373         klass = self.find_class(module, name)
   1374         self.append(klass)
   1375     dispatch[GLOBAL[0]] = load_global

/opt/conda/lib/python3.7/pickle.py in find_class(self, module, name)
   1425             return _getattribute(sys.modules[module], name)[0]
   1426         else:
-> 1427             return getattr(sys.modules[module], name)
   1428 
   1429     def load_reduce(self):

AttributeError: module '__main__' has no attribute 'objective'

如何正确加载这些模型?

我想通过plot_convergence加载它们并绘制它们。

提前谢谢你!

亲切的问候

EN

回答 1

Stack Overflow用户

发布于 2020-03-13 13:41:55

在调用load之前,您需要导入模型中使用的所有库和其他类定义。

例如,如果在调用dump的同一个函数中调用load (就在转储之后),您可能不会得到这个错误,因为库已经加载。因此,它可以识别加载的对象中的属性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59448048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档