Почему Tensoflow seq2seq дополняет все последовательности до одинаковой фиксированной длины?

Я пытаюсь реализовать чат-бот, используя Tensorflow и его реализацию seq2seq.

После прочтения различных руководств (Чат-боты с Seq2Seq, учебное пособие по нейронному машинному переводу (seq2seq), Неконтролируемое глубокое обучение для вертикальных диалоговых чат-ботов ) и исходный документ Sequence to Sequence Learning with Neural Networks, я не смог найти объяснения, почему реализация Tensorflow seq2seq дополняет все последовательности (как входные, так и выходные) до одной и той же фиксированной длины.

Пример:

Входные данные состоят из последовательностей целых чисел:

x = [[5, 7, 8], [6, 3], [3], [1]]

RNN нуждаются в другом макете. Последовательности короче самой длинной дополняются нулями ближе к концу. Этот макет называется time-major.

x теперь array([[5, 6, 3, 1], [7, 3, 0, 0], [8, 0, 0, 0]])

Зачем нужна эта прокладка?

Источник этого руководства.

Если я что-то упустил, пожалуйста, дайте мне знать.


person mjeshtri    schedule 19.01.2018    source источник
comment
Краткий ответ: для пакетной обработки   -  person Maxim    schedule 19.01.2018
comment
Благодарю за ваш ответ. Не могли бы вы уточнить немного больше?   -  person mjeshtri    schedule 19.01.2018


Ответы (1)


Вам нужно дополнить последовательность (с некоторым идентификатором, в вашем случае 0) до максимальной длины последовательности. Причина, по которой вы хотите сделать это, заключается в том, чтобы последовательности могли помещаться в объект массива (тензор) и обрабатываться на одном шаге.

person michaelt    schedule 31.05.2018