当前位置:   article > 正文

google deepMind DQN 源码解读(1)_googledqn

googledqn

google DQN 源码解读(1)

首先train_agent.lua文件进入,执行第一行代码:

if not dqn then
    require "initenv"
end
  • 1
  • 2
  • 3

由于没有dqn这个变量,之后会跳转initenv.lua文件,对环境进行配置

进入这个文件之后,瞬间可以得到一个table: dqn = {}
之后require一些文件,其中torch,nn,nngraph是torch自带文件,分别是
1. torch的数据结构以及一些常用函数
2. 网络模块
3. 网络显示模块

然后你可以看到代码: require 'nnutils'
此后,自然进入nnutils.lua文件


文件源码如下:
2016-06-07-164116_599x418_scrot.png-37.8kB
2016-06-07-164123_423x64_scrot.png-5.3kB
2016-06-07-164132_376x58_scrot.png-5.6kB
2016-06-07-164140_639x258_scrot.png-40.4kB

主要是这5个函数:递归映射, 绝对值平均, 最大的绝对值, 得到weight的归一化值,以及得到梯度的归一化值


解读这个文件的代码,应该从最后两个函数开始,注意这两个函数是一样的,所以就以get_weight_norms(module)作为范例
首先看注释: 在给定的网络中,构建一个平均绝对权重值的字符串给所要使用的模块
也就是说这个函数是用来得到一个字符串的,这个字符串表达的内容是平均权重值,那么,他是如何实现的呢,注意到代码都是调用了函数recursive_map,并且将一个函数对象作为参数传入了该函数,因此我们要回到recursive_map来理解这里是如何实现的


第一行代码是定义了一个空字符串

之后判断传入的模块里面有没有field或者moudle.moudules这两个对象,注意对于get_weight_norms这个函数调用来说,就是判断有没有moudle[‘weight’]或

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号