# DQN强化学习训练Flappy Bird游戏Python代码 基于TensorFlow和Pygame
<img src="./images/flappy_bird_demp.gif" width="250">
7分钟学会: [DQN for flappy bird](https://www.youtube.com/watch?v=THhUXIhjkCM)
## 介绍
DQN(Deep Q-Network)是一种卷积神经网络,基于Q学习的思想进行训练,其输入是原始像素,输出是估计未来奖励的值函数。
## 安装依赖
* Python
* TensorFlow
* pygame
* OpenCV-Python
## 运行方法
```
python deep_q_network.py
```
## 网络结构
网络的架构如下图所示。第一层使用 8x8x4x32 的卷积核进行输入图像的卷积,步幅为 4。然后通过 2x2 最大池化层。第二层使用 4x4x32x64 的卷积核进行卷积,步幅为 2。然后再次最大池化。第三层使用 3x3x64x64 的卷积核进行卷积,步幅为 1。然后再次最大池化。最后的隐藏层包含 256 个全连接的 ReLU 节点。
<img src="./images/network.png">
最终输出层的维度与游戏中可以执行的有效动作数量相同,其中 0 索引始终对应于不执行任何操作。该输出层中的值表示给定输入状态的每个有效动作的 Q 函数。在每个时间步,网络使用 ϵ 贪婪策略执行对应于最高 Q 值的动作。
## 训练
首先,我使用标准差为 0.01 的正态分布随机初始化所有权重
矩阵,然后将回放内存设置为最大大小为 500,00 个经验。
我开始通过在前 10,000 个时间步内以均匀随机选择动作进行训练,而不更新网络权重。这允许系统在训练开始之前填充回放内存。
请注意,与 [1] 不同,其中初始化 ϵ = 1,我在接下来的 300,000 帧内线性退火 ϵ 从 0.1 降到 0.0001。之所以设置成这样,是因为代理可以每 0.03 秒(FPS=30)选择一个动作,高 ϵ 将使其**不断振动**并最终在游戏屏幕的顶部保持在原地,并最终以笨拙的方式撞到管子。这种情况会使 Q 函数相对较慢地收敛,因为它只在 ϵ 低时开始查看其他条件。
然而,在其他游戏中,将 ϵ 初始化为 1 更为合理。
在训练时,每个时间步,网络从回放内存中抽样大小为 32 的小批量进行训练,并使用学习率为 0.000001 的 Adam 优化算法执行上述损失函数的梯度步骤。退火结束后,网络将无限期地继续训练,其中 ϵ 固定为 0.001。
## 重新训练方法
1. 注释掉 `deep_q_network.py` 的108-112行
2. 修改 `deep_q_network.py` 的参数如下:
```python
OBSERVE = 10000
EXPLORE = 3000000
FINAL_EPSILON = 0.0001
INITIAL_EPSILON = 0.1
```
没有合适的资源?快使用搜索试试~ 我知道了~
DQN强化学习训练Flappy Bird游戏Python代码 基于TensorFlow和Pygame
共50个文件
png:18个
wav:5个
ogg:5个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 124 浏览量
2024-02-07
01:48:57
上传
评论
收藏 59.49MB ZIP 举报
温馨提示
# DQN强化学习训练Flappy Bird游戏Python代码 基于TensorFlow和Pygame ## 介绍 DQN(Deep Q-Network)是一种卷积神经网络,基于Q学习的思想进行训练,其输入是原始像素,输出是估计未来奖励的值函数。 ## 安装依赖 * Python * TensorFlow * pygame * OpenCV-Python ## 运行方法 ``` python deep_q_network.py ``` ## 网络结构 网络的架构如下图所示。第一层使用 8x8x4x32 的卷积核进行输入图像的卷积,步幅为 4。然后通过 2x2 最大池化层。第二层使用 4x4x32x64 的卷积核进行卷积,步幅为 2。然后再次最大池化。第三层使用 3x3x64x64 的卷积核进行卷积,步幅为 1。然后再次最大池化。最后的隐藏层包含 256 个全连接的 ReLU 节点。
资源推荐
资源详情
资源评论
收起资源包目录
DQN强化学习训练Flappy Bird游戏Python代码 基于TensorFlow和Pygame.zip (50个子文件)
flappy_bird_dqn
saved_networks
pretrained_model
bird-dqn-policy 10.29MB
checkpoint 277B
bird-dqn-2900000.meta 64KB
bird-dqn-2890000 10.29MB
bird-dqn-2880000 10.29MB
bird-dqn-2900000 10.29MB
bird-dqn-2910000.meta 64KB
bird-dqn-2890000.meta 64KB
bird-dqn-2880000.meta 64KB
bird-dqn-2910000 10.29MB
bird-dqn-2920000.meta 64KB
bird-dqn-2920000 10.29MB
game
wrapped_flappy_bird.py 8KB
flappy_bird_utils.py 3KB
__pycache__
flappy_bird_utils.cpython-310.pyc 2KB
wrapped_flappy_bird.cpython-310.pyc 5KB
assets
audio
wing.wav 29KB
die.wav 190KB
wing.ogg 8KB
swoosh.wav 346KB
swoosh.ogg 13KB
point.ogg 13KB
point.wav 173KB
hit.wav 94KB
die.ogg 17KB
hit.ogg 15KB
sprites
redbird-midflap.png 3KB
redbird-downflap.png 3KB
9.png 3KB
3.png 3KB
0.png 3KB
pipe-green.png 5KB
base.png 664B
background-black.png 4KB
1.png 3KB
6.png 3KB
5.png 3KB
4.png 3KB
8.png 3KB
redbird-upflap.png 3KB
7.png 3KB
2.png 3KB
LICENSE 1KB
logs_bird
hidden.txt 0B
readout.txt 0B
images
preprocess.png 218KB
flappy_bird_demp.gif 4.65MB
network.png 154KB
deep_q_network.py 7KB
README.md 3KB
共 50 条
- 1
资源评论
两只程序猿
- 粉丝: 338
- 资源: 158
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功