编程语言
首页 > 编程语言> > python – 烤宽面条/ Theano渐变值

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