如何解决如何使用具有多个返回值的贝叶斯优化程序包?
我正在使用Python软件包“贝叶斯优化”(https://github.com/fmfn/BayesianOptimization)进行参数优化。默认情况下,black_box_function
始终返回要优化的(单个)值。在我的情况下,我正在使用Ray在GCP集群上运行优化,并且需要返回多个值(例如数据框等),但是优化只需要使用一个即可。不幸的是,程序包识别出{strong>全部的black_box_function
返回值以进行优化。有没有一种方法可以明确指定要用于优化的返回值?
import pandas as pd
import numpy as np
from bayes_opt import BayesianOptimization
def black_box_function(x,y):
df = pd.DataFrame(
np.random.randint(0,10,size=(10,4)),columns=["A","B","C","D"]
). # data I want to store (produced on each node of the cluster)
return -x ** 2 - (y - 1) ** 2 + 1,df # returns multiple values
pbounds = {'x': (2,4),'y': (-3,3)}
optimizer = BayesianOptimization(
f=black_box_function,pbounds=pbounds,verbose=2,random_state=1,)
optimizer.maximize( # How to tell the maximizer which value to maximize?
init_points=2,n_iter=3,)
我试图通过避免多个返回值来解决该问题
- 不幸的是,由于无法使用
ray.put(df)
从df
内部将black_box_funtion
存储在对象存储中,因此我没有设法检索存储的信息从节点获取/存储相应的对象引用。 - 从
df
内部直接将black_box_function
提取到BigQuery表中,但是这种方法似乎遇到了与并行数据提取有关的授权问题(摄入仅对开始将数据写入其中的第一个节点有效) BigQuery表,而其他所有表都无权访问该表。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。