如何解决Nevergrad 包中的建议值
重现步骤
import nevergrad as ng
import numpy as np
loc = ng.p.Scalar(lower=-5,upper=5)
scale = ng.p.Scalar(lower=0,upper=5)
s = ng.p.Scalar(lower=0,upper=10)
k = ng.p.Choice(list(range(2,6)))
w = ng.p.Array(shape=(self.times.shape[0],)).set_bounds(-10,10)
instru = ng.p.Instrumentation(loc=loc,scale = scale,s=s,k=k,w = w)
optimizer = ng.optimizers.DE(parametrization=instru,budget=budget)
optimizer.suggest((),{'k':3,'loc':-2,'s':2,'scale':2,'w':np.ones(self.times.shape[0])})
观察结果
ValueError: Tuple value must be a tuple of size 0,got: ((),{'k': 3,'loc': -2,'s': 2,'scale': 2,'w': array([1.,1.,1.])}).
Current value: ()
预期结果
用于在优化器运行中设置的初始值
有人在 Nevergrad 中成功使用 suggest
method 吗?
如果是这样,您介意复制/粘贴工作代码吗?我一直在尝试不同形式的 example in the documentation,但似乎无法让它发挥作用。
解决方法
问题已在相关 Github thread 中回答:
基本上,suggest
的调用方式应该与优化函数的调用方式相同,在您的情况下,鉴于您使用的是 Instrumentation,我想应该是:
optimizer.suggest(k=3,loc=-2,s=2,scale=2,w=mp.ones(self.times.shape[0]))
另一个选项,除了 Choice 参数之外的所有选项都可以使用 Array 和 Scalar 的 init 选项(例如:loc = ng.p.Scalar(init=-2,lower=-5,upper=5))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。