如果我使用带有truncate_gradient = k(int> 0)的theano.scan,我可以获得一个用于递归神经网络的截断BPTT梯度。并且将针对在时间RNN(其变为k层前馈神经网络FFNN)中向后展开k个步骤来计算该梯度。 基本上(根据理论),RNN的截断梯度(通过将RNN展开到k步骤及时向后计算)应该包括所有k层展开的FFNN的梯度之和(从展开的RNN到k步后退)。
基本上,我正在寻找如何在theano获得该总和的每个组成部分...... 在我看来,你可以很容易地得到一个RNN的结果截断的渐变(用扫描操作用truncate_gradient = k表示)(这个功能开箱即用),但是它非常棘手。获取扫描op / RNN的截断梯度的展开总和的每个分量。
我已尝试过的内容:
我通过theano扫描操作内部进行了查看,特别是通过了#grad;'方法......它的代码非常复杂。
此外,我尝试打印结果渐变的图形 - 我尝试使用truncate_gradients = 1和truncate_gradients = 10(使用theano.printing.pydotprint)打印相同RNN的图形 - 这些图形相同:(
然后我使用了theano.printing.pydotprint和scan_graphs = True 那必须打印扫描的内部。但是我没有遇到这样的例外:
属性错误:'扫描'对象没有属性' fn'。
我也搜索了这些问题 - 没有。 在theano-users中被问到 - 还没有得到任何回应