1. 运行环境介绍
- NVIDIA GTX 1070
- Ubuntu 16.04 x64
- CUDA 8.0.61
- cuDNN 5.1
- Python 3.4
- TensorFlow 1.2.0
- Keras 2.2.4(Keras-2.2.4-py2.py3-none-any.whl)
- OpenCV 3.1.0 for Python3.4(opencv-3.1.0-np111py34_1.tar.bz2)
- gym(gym-0.12.0.tar.gz)
2. 准备
S1. 下载源码并解压,地址:https://github.com/keon/deep-q-learning
S2. 若希望从头开始体验training过程,可以删除源码中save
文件夹中的所有weights文件(或者修改成别的文件名也可以)。
3. 运行
S1. 打开源码中的ddqn.py
文件,取消第102行、第116行和第117行的注释。
S2. 新建终端,cd到源码的根目录下,运行如下命令即可:
python ddqn.py
运行过程如下两幅动图所示:
可以发现,迭代次数越多,agent玩游戏的能力越强。
4. 可能出现的问题及解决方法
问题: 源码的ddqn.py
文件第68行进行random的sample
函数调用报错:TypeError: Population must be a sequence or set. For dicts, use list(d).
,具体如下所示:
Traceback (most recent call last):
File "ddqn.py", line 115, in <module>
agent.replay(batch_size)
File "ddqn.py", line 68, in replay
minibatch = random.sample(self.memory, batch_size)
File "/home/dodge/anaconda3/envs/py34_for_tf120/lib/python3.4/random.py", line 311, in sample
raise TypeError("Population must be a sequence or set. For dicts, use list(d).")
TypeError: Population must be a sequence or set. For dicts, use list(d).
解决: 定位到第68行代码,将其修改为如下即可解决此问题:
minibatch = random.sample(list(self.memory), batch_size)
版权声明:本文为discoverer100原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。