使用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)
![](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())
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)