python – 烤宽面条/ Theano渐变值
作者:互联网
我目前正在研究使用Lasagne / Theano的复发神经网络.
在训练时,使用Theano的符号渐变计算更新.
grads = theano.grad(loss_or_grads, params)
虽然渐变表达式总的来说非常精细,但我也对渐变值感兴趣以便监控训练.
我现在的问题是,是否有一个内置的方法来获取渐变值,到目前为止我还没有找到,或者我是否必须自己做.
提前致谢
解决方法:
我不知道任何测试渐变的千层面功能,但您可以通过简单的theano功能自行获得.
假设我们有以下theano变量:
> inputs =网络输入
> targets =网络的目标输出
> loss =损失函数的值,定义为网络输出和目标的函数
> l_hid =网络的循环层,输入lasagne.layers.RecurrentLayer
假设我们对损失函数的梯度感兴趣w.r.t.经常性重量:
grad = theano.grad(loss, l_hid.W_hid_to_hid)
定义theano函数以获取渐变的数值
get_grad = theano.function([inputs, targets], grad)
现在,只需为输入和目标的任何值(例如当前的小批量)调用get_grad. get_grad()不需要传递权重值,因为它们存储为theano共享变量.
标签:python,theano,lasagne 来源: https://codeday.me/bug/20190829/1758323.html