首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >消失梯度:检查输出梯度

消失梯度:检查输出梯度
EN

Data Science用户
提问于 2022-01-30 06:49:25
回答 1查看 36关注 0票数 0

对于前馈网络或RNN,理论上我们应该检查输出梯度随时间变化的权重,以检查它是否消失为零。在下面的代码中,我不确定是否应该将输入'xtr‘输入到定义在权重上的后端函数中。

代码语言:javascript
复制
weights_vars= model.layers[1].trainable_weights  # weights on 2nd hidden layer
sess= k.get_session()
# Obtain the actual gradients:
grad_fun= k.gradients(model.output, weights_vars[0])  # [0] for weight, [1] for bias
grad_value= sess.run(grad_fun, feed_dict={model.input: xtr})

我看过一些文章,演示如何获得输出wrt \textit{inputs}的梯度,也就是Jacobians。向model.input上定义的函数提供输入肯定是正确的。

代码语言:javascript
复制
grad_fun= k.gradients(model.output, model.input)
grad_value= sess.run(grad_fun, feed_dict={model.input: xtr})

我的问题是:

  • 我能用这些雅可比人来检查渐变的程度,作为相对权重梯度的代理吗?
  • 如何使用定义在权重上的backend.function来获得梯度?我在feed_dict里放了什么?如果有更好的方法来检查输出梯度的权重,请让我知道。提前谢谢。
EN

回答 1

Data Science用户

回答已采纳

发布于 2022-01-30 07:45:54

雅可比人是梯度的代名词。在神经网络中,有时需要找到输入和输出都是向量的函数的偏导数。包含所有这些偏导数的矩阵称为Jacobian矩阵。所以你可以用jacobian矩阵作为graident的代理。

第二个问题已经回答了这里

票数 1
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/107624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档