__init__() got an unexpected keyword argument 'bounds'
时间: 2023-07-21 14:36:12 浏览: 191
升级keras解决load_weights()中的未定义skip_mismatch关键字问题
如果你使用的是`cma.CMAEvolutionStrategy`来定义优化器,并且出现了类似于`__init__() got an unexpected keyword argument 'bounds'`的错误提示,可能是因为`cma.CMAEvolutionStrategy`函数不支持`bounds`参数。
在CMA-ES算法中,通常使用“边界转换法”(bound handling)来处理变量的取值范围,而不是直接将边界信息作为优化器的参数传递。因此,在使用CMA-ES算法时,你可以通过定义适当的变量转换函数来处理变量的取值范围。
例如,下面是一个使用边界转换法来处理变量范围的示例代码:
```
import numpy as np
import cma
# 定义边界转换函数
def transform(x):
return np.clip(x, -1, 1)
# 定义种群大小为16的CMA-ES优化器
popsize = 16
optimizer = cma.CMAEvolutionStrategy(mean=np.zeros(10), sigma=1, transform_func=transform, seed=0, options={'popsize': popsize})
# 运行优化器
for i in range(100):
solutions = optimizer.ask()
fitness_values = [fitness(x) for x in solutions]
optimizer.tell(solutions, fitness_values)
optimizer.disp()
```
在这个例子中,`transform`函数将变量的取值范围限制在[-1, 1]之间,`transform_func`参数指定了使用的变量转换函数。通过定义适当的变量转换函数,你可以处理变量的取值范围,而不需要将边界信息作为优化器的参数传递。
阅读全文