python中的进化策略求解器
evostra的Python项目详细描述
evostra:evolution strategy for python是一种基于适应和进化思想的优化技术。
来源:
…代码块::bash
$python setup.py install
代码块::bash
$pip安装git+https://github.com/alirezamika/evostra.git
代码块::bash
$pip install evostra
(可能需要使用python3或pip3来使用python3或pip3来使用python3)
>
>
>示例用法
>
>
> >
>
因此,我们可以使用任何框架来构建模型,只需将权重传递给ES。
例如,我们可以使用Keras来构建模型,并将其权重传递给ES,但在这里,我们使用Evostra的内置模型FeedForwardNetwork,这对于我们的用例来说要快得多:
。代码::python
import numpy as np
from evostra import evolutionstrategy
from evostra.models import feed forward network
3])
现在我们定义我们的get_奖励函数:
…代码::python
solution=np.array([0.1,-0.4,0.5])
inp=np.asarray([1,2,3,4,5])
def get_reward(权重):
global solution,model,inp
model.set_weights(weights)
prediction=model.predict(inp)
这里我们的最佳奖励是零
奖励=-np.sum(np.square(solution-prediction))
返回奖励
现在我们可以构建evolutionstrategy对象并运行它进行一些迭代:
代码::python
在这里,我们使用1个进程作为
任务不需要计算开销,使用更多进程会由于IPC开销而降低性能。
es=evolutionstrategy(model.get_weights(),get_reward,population_size=20,sigma=0.1,learning_rate=0.03,decay=0.995,num_threads=1)
es.run(1000,打印步骤=100)
代码:
iter 100。奖励:-68.819312
iter 200。奖励:-0.218466
iter 300。奖励:-0.110204
iter 400。奖励:-0.001901
iter 500。奖励:-0.000459
iter 600。奖励:-0.000287
ITER 700。奖励:-0.000939
ITER 800。奖励:-0.000504
ITER 900。奖励:-0.000522
iter 1000。奖励:-0.000178
现在我们有了优化的权重,我们可以更新我们的模型:
…代码::python
optimized_weights=es.get_weights()
model.set_weights(optimized_weights)
todo
--
-通过网络添加分发支持
来源:
…代码块::bash
$python setup.py install
代码块::bash
$pip安装git+https://github.com/alirezamika/evostra.git
代码块::bash
$pip install evostra
(可能需要使用python3或pip3来使用python3或pip3来使用python3)
>
>
>示例用法
>
>
>
>
因此,我们可以使用任何框架来构建模型,只需将权重传递给ES。
例如,我们可以使用Keras来构建模型,并将其权重传递给ES,但在这里,我们使用Evostra的内置模型FeedForwardNetwork,这对于我们的用例来说要快得多:
。代码::python
import numpy as np
from evostra import evolutionstrategy
from evostra.models import feed forward network
3])
现在我们定义我们的get_奖励函数:
…代码::python
solution=np.array([0.1,-0.4,0.5])
inp=np.asarray([1,2,3,4,5])
def get_reward(权重):
global solution,model,inp
model.set_weights(weights)
prediction=model.predict(inp)
这里我们的最佳奖励是零
奖励=-np.sum(np.square(solution-prediction))
返回奖励
现在我们可以构建evolutionstrategy对象并运行它进行一些迭代:
代码::python
在这里,我们使用1个进程作为
任务不需要计算开销,使用更多进程会由于IPC开销而降低性能。
es=evolutionstrategy(model.get_weights(),get_reward,population_size=20,sigma=0.1,learning_rate=0.03,decay=0.995,num_threads=1)
es.run(1000,打印步骤=100)
代码:
iter 100。奖励:-68.819312
iter 200。奖励:-0.218466
iter 300。奖励:-0.110204
iter 400。奖励:-0.001901
iter 500。奖励:-0.000459
iter 600。奖励:-0.000287
ITER 700。奖励:-0.000939
ITER 800。奖励:-0.000504
ITER 900。奖励:-0.000522
iter 1000。奖励:-0.000178
现在我们有了优化的权重,我们可以更新我们的模型:
…代码::python
optimized_weights=es.get_weights()
model.set_weights(optimized_weights)
todo
--
-通过网络添加分发支持