如何在 theano 的'scan'中获取k步截断-BPTT梯度,并且还包括每个组件(从第1个到第k个)的梯度?

2024-09-26 18:04:51 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我使用扫描当截短梯度=k(int>;0)时,我可以得到递归神经网络的截尾BPTT梯度。该梯度将被计算为在时间RNN中向后展开k步(即成为k层前馈神经网络FFNN)。 基本上(根据理论),RNN的截断梯度(通过向后展开RNN到k步计算)应该包括展开的FFNN的所有k层的梯度总和(从向后展开RNN到k步)。在

基本上,我在研究如何得到这些和的每一个组成部分。。。 在我看来,你可以很容易地得到RNN的截断梯度(它由一个scan op和truncate_gradient=k表示)(这个功能是现成的),但是要获得scan op/RNN截断梯度的展开和的每个分量是相当困难的。在

我已经尝试过的:

我仔细检查了扫描的内部结构,特别是通过梯度法。。。它的代码相当复杂。在

此外,我还尝试打印结果渐变的图形-我尝试打印相同RNN的图形,truncate_gradients=1,truncate_gradients=10(使用theano.printing.pydotprint)-这些图表是相同的:(

然后我用theano.printing.pydotprint扫描图=真 必须打印扫描的内部结构。但我失败了,只有这样一个例外:

AttributeError:“Scan”对象没有属性“fn”。在

我也在谷歌上搜索这些问题-什么也没有。 有网友问到-还没有任何回应


Tags: gt图形scan神经网络theanoint梯度op

热门问题