使用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如何在Microsoft Office Word或Excel文档中查找突出显示的文本   Java反射:获取方法返回参数的类型   java根据从字符串解析的日期对ArrayList<String>进行排序   不带IDE JSONObject的json JAVA   Selenium检查属性是否包含java中字符串的一部分   java Hibernate在使用@PostConstruct时找不到绑定到线程的会话   java频繁访问对象属性会带来成本吗?   java如何使用spring boot从json更新数据   Android Studio中的java适当边距布局   java spring引导无法在spring测试类中注入spring服务   java在插入排序中删除重复项   如何在JAVA中重写异常类方法   java Guava缓存内存泄漏   多线程处理三个必须并行执行的任务completableFuture,如果其中任何一个在java中引发异常,则全部取消