Недавно я начал использовать torchtext для замены связующего кода и столкнулся с проблемой, когда хотел бы использовать уровень внимания в своей архитектуре. Для этого мне нужно знать максимальную длину последовательности моих обучающих данных.
Проблема в том, что torchtext.data.BucketIterator
выполняет заполнение для каждой партии:
# All 4 examples in the batch will be padded to maxlen in the batch
train_iter = torchtext.data.BucketIterator(dataset=train, batch_size=4)
Есть ли способ гарантировать, что все обучающие примеры дополняется до одинаковой длины; т. е. макслен на тренировке?
да. Пакет будет определять max_length
в пакете.
При создании экземпляра torchtext.data.Field
есть необязательный аргумент ключевого слова, называемый fix_length
, который, если он установлен, определяет длину, до которой все сэмплы будут дополнены; по умолчанию он не установлен, что предполагает гибкое заполнение.
Связанный вопрос: если вы используете
BucketIterator
сsort_within_batch=True
, вам все еще нужно вызыватьpack_padded_sequence
?