烤宽面条/ Theano渐变值

时间:2016-05-16 09:46:24

标签: python theano lasagne

我目前正在使用Lasagne / Theano处理复发神经网络。

在训练时,使用Theano的符号渐变计算更新。

grads = theano.grad(loss_or_grads, params)

虽然渐变表达式一般来说非常好,但我也对渐变感兴趣,以便监控训练。

我现在的问题是,是否有内置方法来获取渐变值,到目前为止我还没有找到,或者我是否必须自己完成。

提前致谢

1 个答案:

答案 0 :(得分:5)

我不知道任何测试渐变的千层面功能,但您可以通过简单的theano功能自行获取。

假设我们有以下theano变量:

  • inputs =输入网络
  • targets =网络的目标输出
  • loss =损失函数的值,定义为网络输出的函数和targets
  • 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_gradget_grad()不需要传递权重值,因为它们会被存储为theano共享变量。