RNN损失计算在下一次迭代中传递 - Tensorflow

时间:2018-02-12 22:28:34

标签: python tensorflow

我需要通过大量的数学计算来评估我的神经网络损失和准确性,其中大部分由于复杂的索引挑战,我不知道如何在张量流中执行。我的神经网络由一个RNN组成;由于RNN的性质,如果我选择传递我在tensorflow之外计算的最后一次迭代的损失/准确性并将其用作损失指标而不是当前迭代并且完成所有计算,性能会降低相反,常规python中的tensorflow?

我怀疑我没事,因为RNN意味着使用过去的数据来影响未来的决定,但是我将要传递的损失与神经网络在决策中所做的决定没有直接关系。当下。因此,当做出正确的现有决定时,我可能会遭受巨大的损失......无论如何,这可能会发生,但如果我选择朝这个方向发展,它会放大它的可能性。

赞成?缺点?选择这样做?

1 个答案:

答案 0 :(得分:0)

我一直意识到这个想法永远不会适用于普通的DNN网络(从概念上说,它可能无法以这种方式工作),但我认为它可能适用于RNN网络,因为我&#39 ;根据现在的30-60次迭代计算我的损失。

在我测试了所有内容并将它们全部组合之后,我现在认为我理解为什么我无法计算张量流之外的损失...... GradientDescentOptimizer使用损失结构来改变权重,因为我直接根据最后一次迭代计算插入损失,它不知道损失如何连接以改变变量的权重。

我得到的错误是:

ValueError: No gradients provided for any variable, check your graph for ops that do not support gradients, between variables

这意味着我已经定义的任何tf.Variable对象和我试图最小化的损失张量之间没有路径,这是因为我直接插入了损失。我是故意这样做的,但显然张量流量根本不允许这样做。