2016-11-10 73 views
0

我想要做的是模拟在一台机器上的不同机器上的反向传播过程,我从第3层d(layer3_output)/d(layer2_output)获得梯度作为numpy数组,我如何能够有效地得到d(layer3_output)/d(layer1_output)给定我接收并通过的梯度到前一层?我可以应用张量计算中的梯度吗?

回答

1

当您创建您的网络并附加一些损失时,您可以在优化器上调用最小化,该优化器(引擎盖下)调用“apply_gradients”。此函数为您的图形添加渐变计算操作。您现在要做的就是请求负责您的偏导数的操作员并通过feed_dict选项传递预先计算的偏导数。使用张量板来显示图形并调查您感兴趣的渐变名称。默认情况下,它们将位于“渐变”名称范围中,并且每个操作的命名将类似于您的操作,因此gradient/output_op:0等行中的内容等等。

+0

我知道如何在单台机器上运行时调用优化器。然而在我目前的情况下,我使用不同的机器来存储不同的图层,因为我想通过合成渐变异步地训练这些图层,因此我想管理一种应用计算的渐变(以numpy数组)来更新图层的方法。 – xxx222

+0

实施DNI?然后你需要通过“apply_gradients”函数,因为它使你能够应用任意的op,就好像它是实际的渐变。 – lejlot

+0

谢谢!我甚至可以在顶层的梯度上传播几层的梯度? – xxx222

相关问题