Pythorch研究者强化学习框架
cherry-rl的Python项目详细描述
Cherry是建立在Pythorch之上的研究人员强化学习框架。
<>与其他强化学习实现不同,CICE没有对现有算法实现单个单片接口。 相反,它为您提供了低级的、通用的工具来编写您自己的算法。 借鉴unix的理念,每个工具都力求尽可能独立于框架的其他部分。 所以如果你不喜欢某个特定的工具,你就不需要使用它。功能
- pythonic和低级接口lapytorch。
- 支持表格(!)函数逼近算法。
- 各种OpenAI健身房环境包装。
- 常用算法的帮助函数。(例如A2C、DDPG、TRPO、PPO、SAC)
- 日志、可视化和调试工具。
- 在CPU和GPU上进行无痛高效的分布式培训。
- 单元、集成和回归测试,持续集成。
要进一步了解cherry背后的工具和哲学,请查看我们的Getting Started tutorial。
示例
下面的代码片段展示了cherry提供的一些工具。
importcherryasch# Wrap environmentsenv=gym.make('CartPole-v0')env=ch.envs.Logger(env,interval=1000)env=ch.envs.Torch(env)policy=PolicyNet()optimizer=optim.Adam(policy.parameters(),lr=1e-2)replay=ch.ExperienceReplay()# Manage transitionsforstepinrange(1000):state=env.reset()whileTrue:mass=Categorical(policy(state))action=mass.sample()log_prob=mass.log_prob(action)next_state,reward,done,_=env.step(action)# Build the ExperienceReplayreplay.append(state,action,reward,next_state,done,log_prob=log_prob)ifdone:breakelse:state=next_state# Discounting and normalizing rewardsrewards=ch.td.discount(0.99,replay.reward(),replay.done())rewards=ch.normalize(rewards)loss=-th.sum(replay.log_prob()*rewards)optimizer.zero_grad()loss.backward()optimizer.step()replay.empty()
在examples/文件夹中提供了更多高质量的示例。
安装
notecherry被认为是早期alpha版本。可能会坏的。
pip install cherry-rl
文档
Cherry的网站上有文档和教程:http://cherry-rl.net。
贡献
首先,谢谢你考虑给Cherry捐款。 以下是我们努力遵循的几条准则。
- 总是一个好主意,先打开一个问题,在那里我们可以讨论如何最好地进行。
- 如果您想使用cherry贡献一个新的示例,最好将它放在一个文件中。
- 如果您想为核心库贡献一个新特性,我们建议首先实现一个展示新功能的示例。这样做非常有用:
- 它允许自动测试,
- 它确保功能正确实现,
- 它向用户展示如何使用您的功能,并且
- 在讨论合并实现的最佳方法时,它给出了一个具体的例子。
我们没有论坛,但很高兴与您讨论松弛。 请确保向smr.arnold@gmail.com发送电子邮件以获取邀请。
致谢
Cherry从许多强化学习实现中获得灵感,包括
- OpenAI Baselines,
- 约翰·舒尔曼的implementations
- 伊利亚·科斯特里科夫的implementations,
- 张尚同的{a9},
- 戴夫·阿贝尔的implementations,
- 庞维奇的implementations,
- 凯·阿鲁库马兰的implementations,
- RLLab/Garage。
为什么是樱桃?
因为它是the cake中最甜的部分。