我正在为我的项目调整Tensorflow tutorial for sequence to sequence modeling。具体来说,我的代码基于translate.py。
本教程计算每n个训练步骤对开发集的困惑。我反而想在开发集上计算BLEU得分。
我面临的问题是,在创建模型时,您可以指定它是否仅向前。通过代码看,似乎如果它(在训练时发生),在每个步骤,网络将不计算输入序列的最终输出,但将计算梯度。当它不仅仅是前向时(如在教程后面的解码函数中),它应用循环函数,该函数将输出反馈到RNN的输入,这允许生成输出序列。但是,它不计算渐变。因此,据我了解,您可以为训练(即渐变)或测试(即对其进行完全推断)构建模型。
由于我想计算BLEU分数,我需要一些模型产生的序列,它对应于开发集中的输入序列。由于模型的构造方式,我需要两种类型的模型(仅向前而不向前)。但是,尝试这样做(即使使用新的会话和新的变量范围),我似乎无法加载模型进行推理,同时我还有一个为训练创建的模型。如果没有新的会话/变量范围,我会收到有关重复变量的错误。如果有一种方法可以将模型从非前向切换到仅前向,那将是很好的。
在这种情况下,有没有办法进行推理(运行完整的RNN),而我也在训练范围内?