Python 千层面/茶无梯度值

Python 千层面/茶无梯度值,python,theano,lasagne,Python,Theano,Lasagne,我目前正在使用千层面/西亚诺研究递归神经网络 训练时,使用Theano的符号渐变计算更新 grads = theano.grad(loss_or_grads, params) 虽然梯度表达式在总体上是完美的,但为了监控训练,我也对梯度值感兴趣 我现在的问题是,是否有一个内置的方法也可以得到梯度值,这是我目前还没有找到的,或者我必须自己做 提前感谢我不知道有什么千层面函数可以计算梯度,但是你可以用简单的theano函数自己得到 假设我们有以下无变量: 输入=网络输入 目标=网络的目标输出 损耗

我目前正在使用千层面/西亚诺研究递归神经网络

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

grads = theano.grad(loss_or_grads, params)
虽然梯度表达式在总体上是完美的,但为了监控训练,我也对梯度值感兴趣

我现在的问题是,是否有一个内置的方法也可以得到梯度值,这是我目前还没有找到的,或者我必须自己做


提前感谢

我不知道有什么千层面函数可以计算梯度,但是你可以用简单的theano函数自己得到

假设我们有以下无变量:

  • 输入
    =网络输入
  • 目标
    =网络的目标输出
  • 损耗
    =损耗函数的值,定义为网络输出和
    目标的函数
  • l\u 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
即可获得输入和目标的任何值(例如当前的minibatch)
get_grad()
不需要传递权重值,因为它们存储为无共享变量