python - Lasagne/Theano 梯度值

标签 python theano lasagne

我目前正在使用 Lasagne/Theano 研究循环神经网络。

训练时,使用 Theano 的符号梯度计算更新。

grads = theano.grad(loss_or_grads, params)

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

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

提前致谢

最佳答案

我不知道有任何 lasagne 函数可以评估梯度,但您可以使用简单的 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 - Lasagne/Theano 梯度值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37250985/

相关文章:

theano - 安装 pylearn2 - ImportError : No module named six. 移动

machine-learning - 如何在tensorflow中实现优化功能?

python - 简单的 MLP 时间序列训练产生意想不到的平均线结果

python - 如何在 nolearn、lasagne 中定义成本函数?

php - 在linux命令行上使用python(未运行)编译字符串

python - 使用 TimedRotatingFileHandler,如何按照与轮换相同的约定命名第一个日志文件?

python - 访问 keras 模型输出相对于输入的梯度值

python - 在 self._compute_kernel(X) 中引发 ValueError ("X.shape[0] should be equal to X.shape[1]")

python - 使用 buildroot 在 rootfs 中复制 Python 脚本

theano - 卷积神经网络 - 权重可视化