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第三方库


热门话题
JAXB可以将ArrayList作为逗号分隔的值输出吗?   java使用bcel将一个内部类移动到另一个外部类   java无法识别Lucene MoreLikeThis中的错误   安卓如何在Frida中将动态类转换为json或java文件   java如何使用Struts2在blob类型的列中保存我的sql中的图像?   使用mavenreleaseplugin将java maven发布到nexus 3.0.1失败   java这是正确的方法吗?   Windows上的java Runner不工作   找不到java Hibernate+Spring xml映射   java如何访问WMI查询的数据(通过JNA)SAFEARRAY结果   java如何在本地导入库而不使用Maven中的Nexus?   java渐变本地项目依赖项   使用URLFetchService/URL Google appengine for java