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
--
-通过网络添加分发支持

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
javascript生成两点之间的固定纬度和经度   java为什么不删除并重命名文件?   求数组的和   java在漂亮面孔中使用正则表达式   SOAP(java)中的Hello World。如何修复它?   java I获取应用程序生成错误,配置为“”的资源“attr/arc_position”的值重复   云基础环境中的Java SFTP客户端应用   谷歌应用程序引擎Java查询日期不正常?   java使用cancel按钮对JOptionPane InputDialog循环进行转义   java数字格式总是返回异常   xquery Java Saxon API以“追加”模式写入文件   java Azure函数在第二个插槽中没有响应   java在构建Play应用程序后向其添加动态依赖项   json如何使用Jackson mapper for java。木卫一。可序列化类型字段?