我有不同长度的输入文本,从几个字符到数百个单词,因此我决定对每个批次使用不同的MAX_LENGTH,而不是对所有批次使用固定的MAX_LENGTH(显然,对于较短的文本使用较短的MAX_LENGTH)。
经过搜索后,我在Keras的GitHub页面上看到了这个讨论,提出了以下解决方案:
应该根据长度将序列分组,并在发送到Keras之前手动按该长度分割成批次。
如果我使用这个技巧,我猜在训练时无法打乱数据顺序,这可能会导致过拟合。
我在Kaggle上看到了许多使用这种技巧的讨论。我想知道是否有其他解决这个问题的方案?
回答:
解决方案是使用一个虚拟值来填充你的数据,使所有输入序列具有相同的长度。
假设你有这两个序列:
- [1,2,3,1,2],你保持它为[1,2,3,1,2]
- [1,3,2,3],你用零填充直到达到所需长度:[1,3,2,3,0]
然后你从一个掩码层开始你的模型。
这将自动忽略样本中的额外长度。