Pythorch研究者强化学习框架

cherry-rl的Python项目详细描述



Build Status

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从许多强化学习实现中获得灵感,包括

为什么是樱桃?

因为它是the cake中最甜的部分。

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

推荐PyPI第三方库


热门话题
java用变化的替换字符串替换子字符串   从数据库中断中恢复的oracle Java DAL?   Android/Java页边距位于左/右/底部   java如何用相同的源代码构建不同的APK?(我发现了一个错误)   java正则表达式,仅当字符串以一行中的3个数字开头时才匹配第一个数字   使用以xml为输入的给定端点调用java中的rest-ful web服务?   java长字符串转换为UTF8引发异常   java如何使用截取方法获取ArrayList   java将计算列添加到可观察列表中   正则表达式如何在java正则表达式中使用组?   java正则表达式只接受字母表和空格,不允许在字符串的开头和结尾使用空格   java简单onclick按钮在安卓中不起作用   java如何在Spring中只实现Crudepository的特定方法?   java无法使用json对象NPE读取jsonarray   java我可以添加maven依赖项,这些依赖项被打包为除此之外的任何东西。罐子