开发 | TensorFlow Agents日前开源,轻松在TF中构建并行强化学习算法

AI科技评论消息,用于在TensorFlow中构建并行强化学习算法的高效基础架构范例TensorFlow Agents日前开源,这个项目是由谷歌的两位研究员James Davidson、Vincent Vanhoucke,以及Danijar Hafner共同研发的。关于这个项目的开源信息他们在GitHub上进行了介绍,AI科技评论将内容进行编译整理。

TensorFlow Agents

TensorFlow Agents为强化学习提供了优化的基础架构,它将OpenAI gym接口扩展到多个并行环境,并能在TensorFlow中训练智能体,进行批量计算。在这个项目中,我们提供BatchPPO,这是针对近端策略优化(Proximal Policy Optimization,PPO)的一个实现。

如果你在研究中使用了我们这个项目的代码,请引用我们之前发布的关于TensorFlow Agents的论文TensorFlow Agents: Efficient Batched Reinforcement Learning in TensorFlow,论文地址:https://drive.google.com/file/d/0B20Yn-GSaVHGMVlPanRTRlNIRlk/view

@misc{hafner2017agents, title={TensorFlow Agents: Efficient Batched Reinforcement Learning in TensorFlow}, author={Hafner, Danijar and Davidson, James and Vanhoucke, Vincent}, year={2017} }

工具:Python 2/3, TensorFlow 1.3+, Gym, rumamel.yaml

说明

先执行如下代码复制数据库并运行PPO算法。

python3 -m agents.scripts.train --logdir=/path/to/logdir --config=pendulum

这里用的算法已经在配置中定义好了,其中pendulum利用了已有的PPO实现。可以在agents/scripts/configs.py中查看更多的预定义配置。

如果想要重新开始运行之前的任务,可以在最后的指令中增加--timestamp=<time>标志,并提供你运行的目录名中的时间戳。

为了将度量可视化,需要从另一个终端启动TensorBoard,然后将浏览器指向http://localhost:2222:

tensorboard --logdir=/path/to/logdir --port=2222

如果要渲染视频,收集OpenAI Gym的统计数据上传至记分板,请输入以下代码:

python3 -m agents.scripts.visualize --logdir=/path/to/logdir/<time>-<config> --outdir=/path/to/outdir/

修正

这个项目的发布能让新的强化学习思想更容易实现。当修正代码之后,你可以从如下几个文件开始执行任务。

  • scripts/configs.py(指定任务和算法的实验配置)
  • scripts/networks.py(被定义为TensorFlow RNNCell的神经网络模型)
  • scripts/train.py(包含训练设置的可执行文件)
  • ppo/algorithm.py(PPO算法的TensorFlow图)

如果要运行所有的单元测试,请输入如下代码:

python3 -m unittest discover -p "*_test.py"

如果有更多问题,可以在 Github上提问。

执行

这次的发布还包括OpenAI Gym环境下的一个批处理接口,它能与TensorFlow无缝集成,实现高效的算法。这是通过如下核心组件实现的:

  • agents.tools.wrappers.ExternalProcess agents.tools.wrappers.ExternalProcess是构造外部进程里的OpenAI Gym 环境的包装(wrapper),它可以调用step()、reset()以及属性访问,转发到进程中,然后等待结果,可以并行运行多个环境而不受Python全局解释器锁(global interpreter lock)的限制。
  • agents.tools.BatchEnv agents.tools.BatchEnv能将OpenAI Gym接口扩展至多个环境中,它可以联合多个OpenAI Gym环境,用step()接受批量的动作,返回观察值、奖励、完成的标记和info对象。如果有多个独立的环境在外部进程中,它们将能被并行处理。
  • agents.tools.InGraphBatchEnv agents.tools.InGraphBatchEnv将batch环境集成到TensorFlow图中,保证step()和reset()函数都可以被调用。观察值、最后的动作、奖励和完成的标记中的batch都存储在变量中,并作为可用的张量。
  • agents.tools.simulate() agents.tools.simulate()将in-graph batch环境和强化学习算法融合成一步,可以在训练循环中调用,这减少了调用会话的数量,并提供了一种简单的方法来训练接下来的算法。

如果要理解这些代码,需要对TensorFlow的控制流运算(尤其是tf.cond(),tf.scan()和tf.control_dependencies())非常熟悉。

GitHub地址:https://github.com/tensorflow/agents

原文发布于微信公众号 - AI科技评论(aitechtalk)

原文发表时间:2017-09-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏美团技术团队

使用TensorFlow训练WDL模型性能问题定位与调优

40510
来自专栏AI研习社

一文详解如何用 R 语言绘制热图

AI 研习社按:作为目前最常见的一种可视化手段,热图因其丰富的色彩变化和生动饱满的信息表达被广泛应用于各种大数据分析场景。同时,专用于大数据统计分析、绘图和可视...

4045
来自专栏算法channel

机器学习|PageRank算法原理

01 — 网页排名主要考虑因素 学术界评判学术论文重要性通用方法是看论文的引用次数,原理很多时候都是可以通用的,学术界的思想可以应用到工业界。 google创始...

3426
来自专栏大数据智能实战

Deeplearning4j库学习

一、基础知识(了解) 背景知识:     如官网描述,dl4j-examples含有丰富的深度学习神经网络应用案例,这是一个为Java和Scala编写的首个商...

38710
来自专栏ATYUN订阅号

【框架】为降低机器学习开发者门槛,苹果发布了Turi Create框架

近日,苹果在GitHub上发布了Turi Create框架。苹果表示,这个框架旨在通过简化机器学习模型的开发,降低开发者构建模型的门槛。详细说明如下: Turi...

3546
来自专栏简书专栏

深度学习环境搭建-CUDA9.0、cudnn7.3、tensorflow_gpu1.10的安装

本文作者接触深度学习2个月后,开始进行目标检测实践。 本文作者的专题《目标检测》链接:https://www.jianshu.com/c/fd1d6f784c...

1464
来自专栏ATYUN订阅号

别再用pip了,用conda安装Tensorflow可使性能速度提升8倍

别再用pip安装Tensorflow了,改用conda吧,它是一个跨平台运行的开源软件包和环境管理系统。因此它适用于Mac,Windows和Linux。如果你还...

2.5K3
来自专栏AI研习社

Github 项目推荐 | Nvidia 用于数据增强和 JPEG 图像解码的 GPU 加速库 DALI

今天的深度学习应用程序包括复杂的多阶段预处理数据流水线,其中包括主要在 CPU 上执行的计算密集型步骤。例如,在 CPU 上执行诸如从磁盘加载数据、解码、剪裁、...

1822
来自专栏施炯的IoT开发专栏

Windows 10 IoT Serials 10 – 如何使用OCR引擎进行文字识别

1. 引言        OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的...

4404
来自专栏CVer

糟了!TensorFlow 1.9.0 来了

关注 CVer 的同学应该知道,前不久Amusi整理了 TensorFlow相关的学习资料,并推出TensorFlow从入门到精通系列贴(最近事情比较多,更新的...

1333

扫码关注云+社区