如何使用具有多个返回值的贝叶斯优化程序包?

问题描述

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...