我面临一个非常奇怪的问题,我使用张量流构建 RNN 模型,然后在完成训练后使用 tf.Saver 存储模型变量(全部)。
在测试过程中,我只是再次构建推理部分并将变量恢复到图表中。修复部分没有给出任何错误。
但是当我开始测试评估测试时,我总是从推理中得到相同的输出,即对于所有测试输入,我得到相同的输出。
我在训练期间打印了输出,我确实看到不同训练样本的输出是不同的,并且成本也在下降。 但是当我进行测试时,无论输入是什么,它总是给出相同的输出。
有人可以帮助我理解为什么会发生这种情况吗?我想发布一些最小的示例,但由于我没有收到任何错误,所以我不确定应该在这里发布什么。如果可以帮助解决问题,我将很乐意分享更多信息。
训练和测试期间的推理图之间的一个区别是 RNN 中的时间步数。在训练期间,我在更新梯度之前训练一批的 n 个步骤(n = 20 或更多),而在测试过程中,我只使用一个步骤,因为我只想预测该输入。
我已经能够解决这个问题。这似乎是因为我的输入特征之一在其原始值中占据主导地位,因此在一些操作之后所有值都收敛为单个数字。 扩展该功能有助于解决这个问题。
您可以创建一个可重现的小案例并将其作为错误发布到 https://github.com/tensorflow/tensorflow/issues 吗?这将有助于这个问题得到合适的人的关注。