首页 > 其他 > 详细

Udacity DRL DQN project

时间:2019-02-18 16:46:17      阅读:182      评论:0      收藏:0      [点我收藏+]
  1. 使用namedtuple创建 (s, a, s‘, r)的存储,可以根据名称作为索引。
    (命名元组赋予每个位置一个含义,提供可读性和自文档性。它们可以用于任何普通元组,并添加了通过名字获取值的能力,通过索引值也是可以的。)
    技术分享图片?
    然后在使用batch_SGD训练的时候,可以依次按照名称进行打包,返回batch。(当然在这里用索引也是可以的,但代码可读性稍差)
    技术分享图片?

  2. 创建replay buffer用deque

    • 线程安全:可以同时从deque集合的左边和右边进行操作而不会有影响。技术分享图片?

    • 自动pop out满溢数据:当buffer容量满时,再添加新数据,可以自动pop out列表中最后的数据。

      deque文档

  3. 在backpropagation时,由target net得到的Q值需要固定,不用求导,因此该网络计算出来的tensor可以detach,减少下面使用loss.backward()的memory消耗并且提高运算速度。
    技术分享图片?

  4. 用tensor.gather提取batch中每个state对应的Max Q。
    gather函数提取输入action的Q值,1表示按列操作,因为输入的states是列,所以网络输出的是一个Q table的矩阵形式,因此需要提取每一列的对应的action值(action是index)。
    技术分享图片?

  5. 选择action与环境互动时,由于只是为了用网络得到一个action,不用求导,可以关掉网络的求导功能,加快运算
    技术分享图片?

Udacity DRL DQN project

原文:https://www.cnblogs.com/bourne_lin/p/Udacity-DRL-DQN-project.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!