我正在使用tensorflow seq2seq.rnn_decoder标题自动生成项目。如何提高张量流中的单词精度?
我的训练集是一套很大的标题,每个标题都是相互独立的,并且不相关。
我曾尝试两个数据格式进行训练:
F1. Use the fixed seq length in batch, and replace ‘\n’ to ‘<eos>’, and ‘<eos>’ index is 1, which training batch is like: [2,3,4,5,8,9,1,2,3,4], [88,99,11,90,1,5,6,7,8,10]
F2. Use Variable seq length in batch, and add PAD 0 to keep the fixed length, which training batch is like: [2,3,4,5,8,9,0,0,0,0], [2,3,4,88,99,90,11,0,0,0]
然后我做了测试的一小部分,其拥有10000个冠军,但结果让我感到困惑。
F1是做一个很好的预测在一个字,就像这样:
iphone predict 6
samsung predict galaxy
case predict cover
F2是使一个长句子的良好预测,如果输入的是从句子的第一个字开始,预测多次几乎等于原来的句子。
但是,如果起始词来自句子的中间(或近端),则F2的预测非常糟糕,就像随机结果一样。
这种情况与隐藏状态有关吗?
在训练阶段,我重置隐藏状态为0时,一个新的时代开始,因此,所有批次的时代将使用相同的隐藏状态,我怀疑这是不是一个好的做法,因为每一个句子实际上是独立的,它是否可以在训练中分享相同的隐藏状态?
在推断阶段,初始化隐藏状态为0,&在输入单词时更新。 (当清除输入时复位为0)
所以我的问题是为什么F2的预测是坏的,当开始词是从句子的中间(或近端)?在我的项目中更新隐藏状态的正确方法是什么?
我同意你的看法,但从句子中间预测是最常见的要求,而且每个标题都是独立的也很重要。 我该如何改进这个模型? 谢谢。 –