具有不同序列长度输入的递归神经网络 (RNN)
Recurrent Neural Networks (RNN) with different sequences length inputs
我有不同长度的输入文本,从几个字符到一百个字,所以我决定对每个批次使用不同的 MAX_LENGTH 而不是修复 MAX_LENGTH 用于所有批次(对于较小的文本显然较短 MAX_LENGTH)。
谷歌搜索后,我在 Keras github 页面中看到 this 线程,它给出了以下解决方案:
Sequences should be grouped together by length, and segmented manually
into batches by that length before being sent to Keras.
如果我使用这个技巧,我猜想在训练时无法打乱数据,这可能会导致过度拟合。
我在 Kaggle 中看到很多使用这个技巧的讨论。我想知道这个问题还有其他解决方案吗?
有一个解决方案填充你的数据有一个虚拟值,所以你所有的输入序列都有相同的长度。
假设你有这两个序列:
- [1,2,3,1,2],你保持为[1,2,3,1,2]
- [1,3,2,3],你用零填充它直到它达到所需的长度:[1,3,2,3,0]
然后你用 Masking 层开始你的模型。
这将自动忽略示例中的额外长度。
我有不同长度的输入文本,从几个字符到一百个字,所以我决定对每个批次使用不同的 MAX_LENGTH 而不是修复 MAX_LENGTH 用于所有批次(对于较小的文本显然较短 MAX_LENGTH)。
谷歌搜索后,我在 Keras github 页面中看到 this 线程,它给出了以下解决方案:
Sequences should be grouped together by length, and segmented manually into batches by that length before being sent to Keras.
如果我使用这个技巧,我猜想在训练时无法打乱数据,这可能会导致过度拟合。
我在 Kaggle 中看到很多使用这个技巧的讨论。我想知道这个问题还有其他解决方案吗?
有一个解决方案填充你的数据有一个虚拟值,所以你所有的输入序列都有相同的长度。
假设你有这两个序列:
- [1,2,3,1,2],你保持为[1,2,3,1,2]
- [1,3,2,3],你用零填充它直到它达到所需的长度:[1,3,2,3,0]
然后你用 Masking 层开始你的模型。
这将自动忽略示例中的额外长度。