使用pytorch的进化策略

pytorch-es的Python项目详细描述


#Pythorch的进化策略

![](https://media.giphy.com/media/30pemgyfipliu87swt/giphy.gif)


一套基于[evostra]的工具(https://github.com/alirezamika/evostra),用于在pytorch中使用[openai的进化策略](https://blog.openai.com/evolution-strategies/)。使用Evostra的Keras实现将提供一些示例。

不同的操作系统会有所不同,因此请参阅[Gym Repository](https://github.com/openai/gym)以获取构建的详细说明。您还需要安装[choice]的pytorch发行版(http://pytorch.org/)。通过将``-c``或```--cuda``传递给训练示例,可以触发cuda操作。创建conda或virtualenv环境并运行:

``shell
pip install-r requirements.txt
````

这些类被设计用于pytorch模型并接受两个参数:一个用于获得奖励的函数和一个与参数层对应的pytorch变量列表。这可以通过以下方式实现:

``python
import copy
from functools import partial

from evolution.strategies import evolutionmodule



此函数运行您的模型并为我生成奖励

“cloned_model=copy.deepcopy(model)
,枚举中的参数(克隆的_model.parameters()):
尝试:
param.data=weights[i]
除了:
param.data=weights[i]。data


在线程池中,如果需要注入其他参数,可以使用partial工具
partial戋func=partial(get戋reward,model=model)
mother戋parameters=list(model.parameters())

mother戋parameters,partial戋func,population戋size=100,
sigma=0.1,learning戋rate=0.001,
奖励目标=200,连续奖励目标停止=20,
线程计数=10,cuda=cuda,render\u test=true

````

*进化模块
-初始
-参数(pytorch变量列表)
-奖励函数=>;浮动(运行事件并返回奖励)
-总体大小=50
-西格玛=0.1
-学习率=0.001
-衰减=1.0
-西格玛衰减=1.0
-线程计数=4
-呈现测试=假
-CUDA=假
-奖励目标=无
-连续目标停止=无(在n次测试后停止,连续返回等于或大于目标的奖励)
-保存路径=无(测试时保存权重的路径)
-运行
-迭代
-打印步骤=10(运行测试和保存权重的频率)

方式:

``外壳
pythonpath=。python evolutionary_strategies/examples/cartpole/train_pytorch.py——权重路径cartpole_权重。p
``````

[](https://media.giphy.com/media/30pemgyfipliu87swt/giphy.gif)


cartpole

200次迭代求解:总体=10,西格玛=0.1,学习率=0.001。

![](https://media.giphy.com/media/5h9xfw3bxvztg4hvbi/giphy.gif)





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

推荐PyPI第三方库


热门话题
java使用HSET函数在redis中保存keyvalue   如何选择Tomcat上下文。Java代码中通过SpEL表达式的xml参数   java可以在javassist中访问Groovy脚本中声明的类吗?   java Lucene setPositionIncrement不起作用   有没有办法用Java调用shell脚本,并通过Java类为shell脚本变量设置值   java堆算法在列表中的实现   java如何让TTS在一个应用程序中以不同的语言表达?   java重构并在遍历枚举结构时删除case语句   java Android获取附近地点的列表   选定id后,java应用程序强制停止   如何用java显示消息对话框   java如何按日期和增量设置文本?   java如何按照依赖关系的顺序正确加载项目的类?   java在尝试为实体添加标识符时遇到问题   如何从Java字节码判断局部变量是否为“final”?(与BCEL相关)   neo4j中的java节点级安全性   java我在libGDX中缺少什么来获取Actor上的InputEvent?   java RecycleView不显示任何数据   Java中无构造函数创建子类实例的继承