使用keras和DDPG玩赛车游戏
原文见链接
https://www.jianshu.com/p/a3432c0e1ef2
在整个安装运行过程中遇到了很多问题,所以记录下问题和解决方法。安装最好还是按照原文所述,遇到问题可以根据我的解决办法试试。
很多错误都是由于版本不一致导致的,环境版本如下:
- Ubuntu16.04,python3
- keras 1.1.0
- tensorflow 0.11.0
原程序TensorFlow的版本是0.10.0,亲测0.11.0也可以使用,再高的版本就不行了,卸载高版本时务必将一些相关的辅助库一起卸载掉。
问题汇总
from keras.engine.training import collect_trainable_weights
ImportError: cannot import name collect_trainable_weights
这个应该是因为keras版本太高导致的,可以注释掉解决,但还有别的问题,建议安装匹配的版本
File "/root/gym_torcs/ActorNetwork.py", line 52, in create_actor_network
Steering = Dense(1,activation='tanh',init=lambda shape, name: normal(shape, scale=1e-4, name=name))(h1)
TypeError: <lambda>() missing 1 required positional argument: 'name'
查了很久以为是lambda函数的问题,后来发现通过修改TensorFlow版本可以解决
xrange报错
python3 里range的实现方式也改为了2.x里xrange的实现方式,所以修改为range就可以
代码解释
- 游戏中使用F1-F6调整视角,F2是主视角
- 原文中运行snakeoil3_gym可以看到运行示例,这个文件里的drive_example应该是训练好的一个方法,可以直接看到车辆已经学会了怎么开车
- ddpg文件中,想要进行训练,需要将train_indicator设置为1,0只是简单运行。
- 原文件展训练片段数(轮数)为2000,每轮最多100000步,训练过程中,开始的几个episode(片段)比较慢,大概一个片段需要两个小时左右,可以看到车辆遇到边界后几乎不动,或者很缓慢的移动,之后速度会增加,大约到四百多片段的时候可以看到车辆能够通过两个弯了