赞
踩
首先train_agent.lua文件进入,执行第一行代码:
if not dqn then
require "initenv"
end
由于没有dqn这个变量,之后会跳转initenv.lua文件,对环境进行配置
进入这个文件之后,瞬间可以得到一个table: dqn = {}
之后require一些文件,其中torch,nn,nngraph是torch自带文件,分别是
1. torch的数据结构以及一些常用函数
2. 网络模块
3. 网络显示模块
然后你可以看到代码: require 'nnutils'
此后,自然进入nnutils.lua文件
文件源码如下:
主要是这5个函数:递归映射, 绝对值平均, 最大的绝对值, 得到weight的归一化值,以及得到梯度的归一化值
解读这个文件的代码,应该从最后两个函数开始,注意这两个函数是一样的,所以就以get_weight_norms(module)作为范例
首先看注释: 在给定的网络中,构建一个平均绝对权重值的字符串给所要使用的模块
也就是说这个函数是用来得到一个字符串的,这个字符串表达的内容是平均权重值,那么,他是如何实现的呢,注意到代码都是调用了函数recursive_map,并且将一个函数对象作为参数传入了该函数,因此我们要回到recursive_map来理解这里是如何实现的
第一行代码是定义了一个空字符串
之后判断传入的模块里面有没有field或者moudle.moudules这两个对象,注意对于get_weight_norms这个函数调用来说,就是判断有没有moudle[‘weight’]或
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。