Python 使用Nevergrad优化接受Numpy数组的函数

Python 使用Nevergrad优化接受Numpy数组的函数,python,nevergrad,Python,Nevergrad,给定一个任意函数,我想用nevergrad找到函数的输入,使其最小化。输入是一个(32,32)numpy数组(或图像),其值在(0,1)范围内 假设我们的函数是图像的对比度。如果所有像素具有相同的值,则对比度将最小化。这是我到目前为止掌握的代码 导入nevergrad 将numpy作为np导入 def对比度(X): vmin,vmax=float(np.min(X)),float(np.max(X)) num=vmax-vmin denom=vmax+vmin 如果denom==0: 返回0 其

给定一个任意函数,我想用nevergrad找到函数的输入,使其最小化。输入是一个(32,32)numpy数组(或图像),其值在(0,1)范围内

假设我们的函数是图像的对比度。如果所有像素具有相同的值,则对比度将最小化。这是我到目前为止掌握的代码

导入nevergrad
将numpy作为np导入
def对比度(X):
vmin,vmax=float(np.min(X)),float(np.max(X))
num=vmax-vmin
denom=vmax+vmin
如果denom==0:
返回0
其他:
返回num/denom
形状=(32,32)
x0=np.随机.均匀(尺寸=形状)
参数化=nevergrad.p.Array(初始=x0,下限=0.0,上限=1.0)
优化器=nevergrad.optimizers.NGOpt(参数化=参数化,预算=10000)
res=优化器。最小化(对比度)
打印(对比度(分辨率值))
在我的机器上,这段代码大约需要45秒,生成的图像对比度值约为0.95。你知道如何调整这段代码,使它找到一个接近最小值的值吗?nevergrad是这项工作的合适工具吗