问题描述
我正在使用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 (将#修改为@)