用keras搭建DQN

本文记录了作者尝试使用keras而非tensorflow来搭建DQN网络的过程。作者参照了莫烦的教程,尽管keras的Sequential模型不适用,但通过函数式API成功实现了DQN。文章详细介绍了DQN的构建,包括网络结构和目标网络的更新,并指出在实际应用中,网络收敛性能不如原tensorflow版本,增加memory size后有所改善。作者希望通过这种方式加深对DQN的理解,并期望未来能写出更深入的技术文章。
摘要由CSDN通过智能技术生成

title: 用keras搭建DQN
date: 2018-09-14 20:25:30
tags: reinforecementLearning
categories: 日志

dqn总结:
最近时间虽然一直看这个dqn代码,虽然看懂了,但是思路却一直不明确,无法自己复写出自己的代码,所以就想写一篇博客来整理一下思路。如果这篇文章写完了,应该思路就清晰了。

本文主要是看了莫烦的教学视频,在视频中,老师(尊称一声老师O(∩_∩)O哈哈~)是用tensoflow1.2来搭建框架的。本人在看懂了代码后,认为DQN中采用了两个模型,此时用tensorflow来完成这些网络的灵活搭建时当让是最好的选择,但是在我看来,似乎keras中的函数式模型似乎也可以做到啊(Sequential模型肯定是不能完成这件事的),所以我就想用keras来重写这个代码,以此来验证自己是不是真的把DQN的实现过程搞懂了。(突然发现代码粘贴错了,github上代码上传的也是错的。。。。。一个多月才发现,还有人浏览这篇文章,尴尬极了)

#首先我们要构建一个DQN类
class DQN:
	#之后我们需要构建网络
    def _build_net(self):
    	pass
	#学习需要经验池,这个学习是off-learning
    def store_transition(self,s,a,r,s_):
    	pass
	#进行学习
    def learn(self):
        pass
    #动作决策
    def choose_action(self,observation):
        pass

以上就是我们要完成的东西了,按四个部分一次完成就可以实现DQN类了

但是我们还要重写类方法中__init__方法:

def __init__(
    self,
    n_actions,
    n_features,
    learning_rate=0.01,
    reward_decay=0.9,
    e_greedy=0.9,
    replace_target_iter=300,
    memory_size=500,
    batch_size=32,
    e_greedy_increment=None,
    output_graph=False,
):
    self.
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值