教你从头到尾利用DQN自动玩flappy bird(全程命令提示,纯小白教程)

教你从头到尾利用DQN自动玩flappy bird(全程命令提示、纯小白教程)

作者:骁哲、李伟、July
说明:本教程主要由骁哲编写,且最后跑的是yenchenlin的github开源demo。如遇问题欢迎加Q群交流:472899334。
时间:二零一六年十月十三日。

前言

我们在上一篇教程《基于torch学汪峰写歌词、聊天机器人、图像着色/生成、看图说话、字幕生成》中说到:“让每一个人都能玩一把,无限降低初学朋友的实验门槛”,那是否能把难度再次降低呢,比如部分同学不熟悉Linux命令咋整,那是不是不熟悉Linux命令就没法折腾了?然既然是为了让每个人都能玩一把,那就应该尽最大可能照顾到最大多数。

本教程提供全程命令提示,以便让Linux命令暂不熟的同学也能搭建起来。因此,自动玩转flappy bird分三个步骤:

  1. 不管三七二十一,先把游戏搭建起来
  2. 搭建起来后,Linux命令后续慢慢熟悉,熟悉后,一通百通,搭建其他实验的环境也会立马顺畅许多
  3. 取得成就感和安心之后,再细细深究实验背后之原理(另,10月机器学习算法班上也会深究实验背后原理)

另本教程省略了ubuntu14.04安装,如果此前没安装过Ubuntu,可以参看《教你从头到尾利用DL学梵高作画》里的第4.1部分。

还是这个事,欢迎更多朋友跟我们一起做实验,一起玩。包括本flappy bird在内的8个实验:梵高作画、文字生成、自动聊天机器人、图像着色、图像生成、看图说话、字幕生成、flappy bird,10月份内做出这8个实验中的任意一个并在微博上[email protected]研究者July,便送100上课券,把实验心得发社区 ask.julyed.com 后,再送100上课券。

一、NVIDIA驱动、CUDA、cudnn安装

apt-get update (更新源)

apt-get install vim (安装VIM)

vi /etc/default/grub (进入grub文件)

添加text (具体方法参看《教你从头到尾利用DL学梵高作画》)

update-grub2 (更新一下)

reboot (重启)

1、 Install NVIDIA Driver 安装NVIDIA驱动

cd /**/**/** (cd到cuda所在文件目录下)

./NVIDIA-Linux-x86_64-367.44.run   (安装NVIDIA驱动)

reboot  (重启)

2、 Install CUDA 安装CUDA

cd /**/**/** (cd到cuda所在文件目录下)

./cuda_8.0.27_linux.run  (安装CUDA)

!accept之后第一个选项填写“n”(该选项让你选择是否安装NVIDIA的Driver,之前已经安装过了,  所以不需要),之后一路“绿灯”。

vi /etc/default/grub    (打开grub)

修改text (具体方法参看《教你从头到尾利用DL学梵高作画》)

update-grub2 (更新一下)

reboot (重启)

3、 Install cuDNN 安装cuDNN

tar xvzf cudnn-7.5-linux-x64-v5.1-ga.tgz   (解压)

sudo cp cuda/include/cudnn.h /usr/local/cuda/include  (复制)

sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64   (复制)

sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*   (加权限)

CUDA Environment Path    添加CUDA的环境变量

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"

export CUDA_HOME=/usr/local/cuda

export PATH="$CUDA_HOME/bin:$PATH"

二、 安装Tensorflow

apt-get install git

Clone the TensorFlow repository    克隆Tensorflow

git clone https://github.com/tensorflow/tensorflow

1、 Install Bazel   安装Bazel

Install JDK 8   安装JDK8

sudo add-apt-repository ppa:webupd8team/java   (添加源)

sudo apt-get update   (更新)

sudo apt-get install oracle-java8-installer   (安装)

 Add Bazel distribution URI as a package source (one time setup) (将Bazel的URL添加为源)

echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list

curl https://bazel.io/bazel-release.pub.gpg | sudo apt-key add -

Update and install Bazel  更新并下载Bazel

sudo apt-get update && sudo apt-get install bazel

sudo apt-get upgrade bazel

2、 Install other dependencies   安装其他依赖

sudo apt-get install python-numpy swig python-dev python-wheel python-pip

Configure the installation  配置 (这里注意configure后面的提示,提示已经给出)

./configure

Please specify the location of python. [Default is /usr/bin/python]:

Do you wish to build TensorFlow with Google Cloud Platform support? [y/N] N

No Google Cloud Platform support will be enabled for TensorFlow

Do you wish to build TensorFlow with GPU support? [y/N] y

GPU support will be enabled for TensorFlow

Please specify which gcc nvcc should use as the host compiler. [Default is /usr/bin/gcc]:

Please specify the Cuda SDK version you want to use, e.g. 7.0. [Leave empty to use system default]: 8.0

Please specify the location where CUDA 7.5 toolkit is installed. Refer to README.md for more details. [Default is /usr/local/cuda]:

Please specify the cuDNN version you want to use. [Leave empty to use system default]: 5

Please specify the location where cuDNN 5 library is installed. Refer to README.md for more details. [Default is /usr/local/cuda]:

Please specify a list of comma-separated Cuda compute capabilities you want to build with.

You can find the compute capability of your device at: https://developer.nvidia.com/cuda-gpus.

Please note that each additional compute capability significantly increases your build time and binary size.

[Default is: "3.5,5.2"]:

Setting up Cuda include

Setting up Cuda lib

Setting up Cuda bin

Setting up Cuda nvvm

Setting up CUPTI include

Setting up CUPTI lib64

Configuration finished

3、 Create the pip package and install    创建pip包并且安装

bazel build -c opt //tensorflow/tools/pip_package:build_pip_package  (笔者用公司网提示error,翻墙后问题解决)

bazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package

bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg(笔者安装过程中出现ImportError:No module named setuptools,解决办法:apt-get install python-pip,安装python-pip就行了)

sudo pip install /tmp/tensorflow_pkg/tensorflow-0.11.0rc0-py2-none-any.whl

4、 Setting up TensorFlow for Development    编译设置Tensorflow

bazel build -c opt //tensorflow/tools/pip_package:build_pip_package

bazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package

mkdir _python_build

cd _python_build

ln -s ../bazel-bin/tensorflow/tools/pip_package/build_pip_package.runfiles/org_tensorflow/* .

ln -s ../tensorflow/tools/pip_package/* .

python setup.py develop

5、 Train your first TensorFlow neural net model    测试Tensorflow

cd tensorflow/models/image/mnist

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"

export CUDA_HOME=/usr/local/cuda (这里重新添加环境变量是因为笔者安装过程中提示未能找到CUDA)

python convolutional.py(笔者这里出现AttributeError:type object ‘NewBase‘ has no attribute ‘is_abstract‘问题,解决办法:sudo pip install six --upgrade -- target="/usr/lib/python2.7/dist-packages")

三、 安装OpenCV

Download OpenCV    下载OpenCV

浏览器打开  http://opencv.org/

右侧下载Linux版本的OpenCV

cd到下载目录

unzip opencv-2.4.13.zip

cd opencv-2.4.13

mkdir release

sudo apt-get install build-essential cmake libgtk2.0-dev pkg-config python-dev python-numpy libavcodec-dev libavformat-dev libswscale-dev

cd release

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..

sudo make install

四、 下载FlappyBird

Download DeepLearningFlappyBird     下载FlappyBird

git clone --recursive https://github.com/yenchenlin/DeepLearningFlappyBird

五、 安装pygame

Install  pygame    安装pygame

wget http://www.pygame.org/ftp/pygame-1.9.1release.tar.gz   下载pygame

sudo apt-get install libsdl1.2-dev      (SDL安装)

sudo apt-get install libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsdl-gfx1.2-dev libsdl-net1.2-dev libsdl-sge-dev libsdl-sound1.2-dev libportmidi-dev libsmpeg-dev   (安装其他依赖包)

cd pygame-1.9.1release

python config.py

run deep_q_network.py

python  deep_q_network.py        运行deep_q_network.py  (笔者这里报错:AttributeError:‘module‘ object has no attribute ‘stack‘,解决办法:

sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas

python-sympy python-nose

git clone git://github.com/numpy/numpy.git numpy  (笔者这里运行了一下cd numpy;python setup.py install,发现报

错缺少cython于是执行后面的命令)

apt-get install cython

cd numpy

python setup.py install)

六、 执行程序

全部安装完后,再次执行

python  deep_q_network.py

画面卡住等待一下,GPU、CUDA在运行需要时间..

稍等片刻,奇迹出现了,飞鸟开始自动飞、自动上下跳跃、自动穿过障碍,要知道纯人工手动玩很难坚持9s!

静态图片可能看不出啥效果,视频见这:http://weibo.com/1580904460/EcxQh6em0

至此,这个曾虐遍全球无数人的游戏,就这样在我们手里,利用深度学习自动玩转了!无不体现深度学习的神奇与魅力。

参考文献

  1. 教你从头到尾利用DL学梵高作画:GTX 1070 cuda 8.0 tensorflow gpu版
  2. 5月深度学习班学员小蔡同学写的简易教程:用MAC DQN玩Flappy Bird
  3. https://github.com/yenchenlin/DeepLearningFlappyBird

后记

七月在线开发/市场团队,二零一六年十月十三日。

时间: 2024-10-07 05:31:37

教你从头到尾利用DQN自动玩flappy bird(全程命令提示,纯小白教程)的相关文章

手把手教你搭建caffe及手写数字识别(全程命令提示、纯小白教程)

手把手教你搭建caffe及手写数字识别 作者:七月在线课程助教团队,骁哲.小蔡.李伟.July时间:二零一六年十一月九日交流:深度学习实战交流Q群 472899334,有问题可以加此群共同交流.另探究实验背后原理,请参看此课程:11月深度学习班. 一.前言 在前面的教程中,我们搭建了tensorflow.torch,教程发布后,大家的问题少了非常多.但另一大框架caffe的问题则也不少,加之caffe也是11月深度学习班要讲的三大框架之一,因此,我们再把caffe的搭建完整走一遍,手把手且全程命

用Tensorflow基于Deep Q Learning DQN 玩Flappy Bird

前言 2013年DeepMind 在NIPS上发表Playing Atari with Deep Reinforcement Learning 一文,提出了DQN(Deep Q Network)算法,实现端到端学习玩Atari游戏,即只有像素输入,看着屏幕玩游戏.Deep Mind就凭借这个应用以6亿美元被Google收购.由于DQN的开源,在github上涌现了大量各种版本的DQN程序.但大多是复现Atari的游戏,代码量很大,也不好理解. Flappy Bird是个极其简单又困难的游戏,风靡

cocos2d-x3.9利用cocos引擎一键打包Android平台APK(C++小白教程)

链接地址:http://www.cocoachina.com/bbs/read.php?tid=333937 cocos2d-x3.9利用cocos引擎一键打包Android平台APK(C++小白教程) 此教程仅供参考,C++小白系列,从新建工程到打包apk,大神们可在评论多给留言建议,若有不详或错误请予指点.OK,我们直入主题 本教程开发环境详情如下开发系统:win764位开发工具:cocos引擎v2.3.3,VS2013cocos2dx版本:3.9 步骤一:windows下各类工具安装(ja

【机器学习PAI实战】—— 玩转人工智能之利用GAN自动生成二次元头像

前言 深度学习作为人工智能的重要手段,迎来了爆发,在NLP.CV.物联网.无人机等多个领域都发挥了非常重要的作用.最近几年,各种深度学习算法层出不穷, Generative Adverarial Network(GAN)自2014年提出以来,引起广泛关注,身为深度学习三巨头之一的Yan Lecun对GAN的评价颇高,认为GAN是近年来在深度学习上最大的突破,是近十年来机器学习上最有意思的工作.围绕GAN的论文数量也迅速增多,各种版本的GAN出现,主要在CV领域带来了一些贡献,如下图所示. 我们可

教你如何利用分布式的思想处理集群的参数配置信息——spring的configurer妙用

引言 最近LZ的技术博文数量直线下降,实在是非常抱歉,之前LZ曾信誓旦旦的说一定要把<深入理解计算机系统>写完,现在看来,LZ似乎是在打自己脸了.尽管LZ内心一直没放弃,但从现状来看,需要等LZ的PM做的比较稳定,时间慢慢空闲出来的时候才有机会看了.短时间内,还是要以解决实际问题为主,而不是增加自己其它方面的实力. 因此,本着解决实际问题的目的,LZ就研究出一种解决当下问题的方案,可能文章的标题看起来挺牛B的,其实LZ就是简单的利用了一下分布式的思想,以及spring框架的特性,解决了当下的参

利用EXCEL自动统计实验结果的准确率

我们在做的实验的时候,通常都需要计算实验结果的准确率.当时数据量较大时,依靠人工来计算是不现实的,不仅十分慢而极易出错.如果我们事先将实验结果文件进行合理的格式化,则可以利用EXCEL自动进行统计,不仅效率高,也不担心出错了.简单地,利用EXCEL中的自动筛选或分类汇总功能也可实现一些统计,但是当数据量特别大时,分类汇总很卡,易导致崩溃,而且功能单一,不能灵活组合:而自动筛选则需要不停地滚来滚去或不断地切换表,也十分不方便.所以我考虑自己写程序来实现统计,这样便于对统计数据进行任意操作,比如移动

利用rman自动备份转储spfile

[情景简介] 生产环境丢失了服务器的参数文件,rman已开启自动备份设置. [操作过程简述] ----启动rman $rman target / ----检查rman设置 RMAN> show all; ----配置一遍rman自动备份控制文件,模拟初次设置rman自动备份控制文件 RMAN>CONFIGURE CONTROLFILEAUTOBACKUP ON; RMAN>CONFIGURE CONTROLFILEAUTOBACKUP FORMAT FOR DEVICE TYPE DIS

利用PhantomJS 自动截图Kibana ,phpmailer发送网站运营日报

如题,先来张最终效果运营日报 下面介绍下实现过程 [前期准备] kibana配置视图,并做好条件过滤视图,这里就是做介绍,可以参考博文, 视图做好后生成一个短链接,这里我们生成的是 http://10.0.0.110:5601/goto/4d641c075d7cbf2c7d70a82b16436769 1.安装配置PhantomJS # yum -y install gcc gcc-c++ make flex bison gperf ruby   openssl-devel freetype-d

七色花基本权限系统(5)- 实体配置的使用和利用T4自动生成实体配置

在前面的章节里,用户表的结构非常简单,没有控制如何映射到数据库.通常,需要对字段的长度.是否可为空甚至特定数据类型进行设置,因为EntityFramework的默认映射规则相对而言比较简单和通用.在这篇日志里,将演示如何对数据实体进行映射配置,并利用T4模板自动创建映射配置类文件. 配置方式 EntityFramework的实体映射配置有2种. 第一种是直接在实体类中以特性的方式进行控制,这些特性有部分是EF实现的,也有部分是非EF实现的.也就是说,在数据实体层不引用EF的情况下,只能使用不全的