[原创] 强化学习框架 rlpyt 并行(parallelism)原理初探

查看关于 rlpyt 的更多文章请点击这里

rlpyt 是BAIR(Berkeley Artificial Intelligence Research,伯克利人工智能研究所)开源的一个强化学习(RL)框架。我之前写了一篇它的简介。 

在单机上全面的并行(Parallelism)特性是 rlpyt 有别于很多其他强化学习框架的一个显著特征。在前面的简介文章中,已经介绍了 rlpyt 支持多种场景下的并行训练。而这种“武功”是怎么修炼出来的呢?它是站在了巨人的肩膀上——通过PyTorch的多进程(multiprocessing)机制来实现的。
所以你知道为什么 rlpyt 不使用TensorFlow这样的框架来作为后端了吧,因为TensorFlow根本就没有这种功能。TensorFlow只能靠类似于Ray这样的并行计算框架的帮助,才能支撑起全方位的并行特性。

阅读更多

[原创] 强化学习的Atari环境下的frame skipping(跳帧)是指什么

查看更多强化学习的文章请点击这里

Atari是强化学习领域最常用的一个游戏实验环境,在很多文章以及代码中,会看到frame skipping(跳帧)这个概念,那么它到底是指什么呢?

阅读更多

[原创] 强化学习框架 rlpyt:如何使用预训练(pre-trained)的model

查看关于 rlpyt 的更多文章请点击这里

rlpyt 是BAIR(Berkeley Artificial Intelligence Research,伯克利人工智能研究所)开源的一个强化学习(RL)框架。我之前写了一篇它的简介。 
本文描述了在 rlpyt 框架下,如何使用一个预训练过的(pre-trained)model作为起点,来训练自己的RL模型的过程。

阅读更多

[原创] 强化学习框架 rlpyt:如何保存训练过程中的所有model

查看关于 rlpyt 的更多文章请点击这里

rlpyt 是BAIR(Berkeley Artificial Intelligence Research,伯克利人工智能研究所)开源的一个强化学习(RL)框架。我之前写了一篇它的简介。 
本文描述了如何保存迭代训练过程的所有model,以及背后的逻辑。

阅读更多

[原创] 强化学习框架 rlpyt:如何同时输出gaussian(高斯)和categorical(类别)的action

查看关于 rlpyt 的更多文章请点击这里

rlpyt 是BAIR(Berkeley Artificial Intelligence Research,伯克利人工智能研究所)开源的一个强化学习(RL)框架。我之前写了一篇它的简介。 
本文记录 rlpyt 的一些issue提及的问题以及解决方案。

阅读更多

[原创] 强化学习框架 rlpyt 源码分析:(6) 模型指标什么时候从 nan 变成有意义的值

查看关于 rlpyt 的更多文章请点击这里

rlpyt 是BAIR(Berkeley Artificial Intelligence Research,伯克利人工智能研究所)开源的一个强化学习(RL)框架。我之前写了一篇它的简介。 如果你想用这个框架来开发自己的强化学习程序(尤其是那些不属于Atari游戏领域的强化学习程序),那么需要对它的源码有一定的了解。本文尝试从 rlpyt 自带的一个实例来分析它的部分源码,希望能帮助到一小部分人。

▶▶ 观察训练日志引出的问题
以 example_1 为例,在训练的过程中,程序会不断打印出类似于下面的日志(部分内容):

阅读更多

[原创] 强化学习框架 rlpyt 的数据可视化工具:viskit

查看关于 rlpyt 的更多文章请点击这里

rlpyt 是BAIR(Berkeley Artificial Intelligence Research,伯克利人工智能研究所)开源的一个强化学习(RL)框架。我之前写了一篇它的简介。 
在训练强化学习模型的过程中,rlpyt 产生的大量训练日志看起来无比枯燥,本文展示了如何利用 viskit 把这些日志数据可视化。

阅读更多

[原创] 强化学习框架 rlpyt 源码分析:(5) 提供额外参数的Mixin类

查看关于 rlpyt 的更多文章请点击这里

rlpyt 是BAIR(Berkeley Artificial Intelligence Research,伯克利人工智能研究所)开源的一个强化学习(RL)框架。我之前写了一篇它的简介。 如果你想用这个框架来开发自己的强化学习程序(尤其是那些不属于Atari游戏领域的强化学习程序),那么需要对它的源码有一定的了解。本文尝试从 rlpyt 自带的一个实例来分析它的部分源码,希望能帮助到一小部分人。

▶▶ Mixin类简介
rlpyt 里面有大量的 *Mixin 类,例如 AtariMixin,MujocoMixin,RecurrentAgentMixin 等,作者并没有为这些名字很怪的class写任何注释,仅从使用的地方来看,很多Mixin类都与agent类有关联。

阅读更多

[原创] 树莓派:这个世界是你们的,是我们的,但终究是Python的!

要查看更多树莓派相关文章,请点击这里

很多年前我刚开始玩树莓派的时候,Python还是个“很不火”的编程语言,而如今Python借着深度学习(Deep Learning)的东风,已经毫无疑问地成了世界上最耀眼的明日之星;想当年我刚开始玩树莓派的时候,使用WiringPi开发库、在C++下开发GPIO应用是一个比较明智的选择,而如今树莓派上的Pyhton GPIO库已经百花齐放,并且多个树莓派的OS都已经内置了一或多个Python GPIO开发包,真正做到了:你只要装好系统,就马上能用Python写程序操作GPIO,立等可用。

阅读更多

[原创] 在树莓派上安装 Miniconda 并创建 Python 3.6环境

要查看更多树莓派相关文章,请点击这里

在树莓派3上安装Miniconda,并不能安装普通的Linux版,你得安装 for ARM v7 的版本:

wget http://repo.continuum.io/miniconda/Miniconda3-latest-Linux-armv7l.sh

chmod +x Miniconda3-latest-Linux-armv7l.sh
./Miniconda3-latest-Linux-armv7l.sh
跟着向导一步步走下去就可以完成安装。

阅读更多

[原创] 树莓派的 Ubuntu MATE 18.04 系统无法 apt upgrade 更新的问题

要查看更多树莓派相关文章,请点击这里

在树莓派上安装好Ubuntu MATE 18.04之后,我在试图更新系统的时候遇到了 bluez 软件包和 内核固件 冲突,从而导致无法进行下去的问题,本文记录一下现场情况以及解决办法。

阅读更多

[原创] Ubuntu MATE 扶一把,我的树莓派3B还能打

要查看更多树莓派相关文章,请点击这里

廉颇老矣,尚能饭否?
周末在家写代码的时候,斜眼看见躺在我桌子上正在吃灰的树莓派3B(V1.2),我突然想把它的系统更新一下。
时至2019年11月,外面已经是树莓派4代(2019.06发布)的天下了,而3B这种老型号,最适合拿来做遥控车之类的儿童玩具了。

阅读更多

[原创] Python的list.append()比np.append()更快

在Python中,假设你最终想得到一个NumPy array,而它是通过append大量数据得到的,那么有两种办法:
先创建一个Python list,append完数据之后再把这个list转成NumPy array。
 直接创建一个NumPy array,用 np.append() 函数来append数据。
第1种比第2种快很多,尤其是当你在一个for循环中频繁做这个事情的时候,差距就更明显了。

阅读更多