如何在theano' scan'中不仅可以获得k步骤截断BPTT分数的展开,还可以获得该分数的每个(第1到第k)分量?

时间:2015-09-13 18:55:15

标签: python machine-learning neural-network theano

如果我使用带有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中被问到 - 还没有得到任何回应

0 个答案:

没有答案