Рекуррентные нейронные сети (RNN) с входами различной длины

У меня ввод текста разной длины, от нескольких символов до ста слов, поэтому я решил использовать разные MAX_LENGTH для каждого пакета вместо исправления MAX_LENGTH для всех пакетов (очевидно, короче MAX_LENGTH для меньшего текста).

После поиска в Google я увидел эту ветку на странице Keras github, которая дала следующее решение:

Последовательности должны быть сгруппированы по длине и сегментированы вручную на партии по этой длине перед отправкой в ​​Keras.

Если я воспользуюсь этим трюком, я думаю, что нет способа перемешать данные во время тренировки, и это может привести к переобучению.

Я видел много разногласий в Kaggle, которые используют этот трюк. Я хочу знать, есть ли другое решение для этой проблемы?

1 ответ

Решение

Существует решение дополнить ваши данные фиктивным значением, чтобы все ваши входные последовательности имели одинаковую длину.

Предположим, у вас есть эти две последовательности:

  • [1,2,3,1,2], вы сохраняете его как [1,2,3,1,2]
  • [1,3,2,3], вы дополняете его нулями, пока он не достигнет желаемой длины: [1,3,2,3,0]

Затем вы начинаете свою модель с маскирующего слоя.

Это автоматически игнорирует дополнительную длину в сэмплах.

Другие вопросы по тегам