tf.data.experimental.bucket_by_sequence_length
| Просмотреть исходный код на GitHub |
Преобразование, которое группирует элементы в Dataset по длине.
tf.data.experimental.bucket_by_sequence_length(
element_length_func, bucket_boundaries, bucket_batch_sizes, padded_shapes=None,
padding_values=None, pad_to_bucket_boundary=False, no_padding=False,
drop_remainder=False
)
Элементы Dataset группируются по длине, а затем заполняются и объединяются в пакеты.
Это полезно для задач с последовательностями, в которых элементы имеют переменную длину. Группирование элементов с похожими длинами уменьшает общую долю заполнения в пакете, что повышает эффективность шага обучения.
| Аргументы | |
|---|---|
element_length_func | функция, преобразующая элемент в Dataset в tf.int32, определяющая длину элемента, которая определяет, в какой пакет он попадает. |
bucket_boundaries | верхние границы длин пакетов. |
bucket_batch_sizes | размер пакета на пакет. Длина должна быть len(bucket_boundaries) + 1. |
padded_shapes | Вложенная структура tf.TensorShape для передачи в tf.data.Dataset.padded_batch. Если не указано, будет использоваться dataset.output_shapes, что приведет к тому, что переменные размерности будут заполнены до максимальной длины в каждом пакете. |
padding_values | Значения для заполнения, передаваемые в tf.data.Dataset.padded_batch. По умолчанию заполнение нулями. |
pad_to_bucket_boundary | bool, если False, размерности с неизвестным размером будут заполнены до максимальной длины в пакете. Если True, размерности с неизвестным размером будут заполнены до границы пакета минус 1 (т. е. максимальной длины в каждом пакете), и вызывающий должен убедиться, что исходный Dataset не содержит элементов длиной более max(bucket_boundaries). |
no_padding | указывает, нужно ли заполнять признаки пакета (признаки должны быть типа tf.sparse.SparseTensor или иметь одинаковую форму). |
drop_remainder | (необязательно.) Скалярное tf.bool значение, представляющее собой tf.Tensor, указывающее, нужно ли отбрасывать последний пакет в случае, если он содержит меньше batch_size элементов; по умолчанию меньший пакет не отбрасывается. |
| Возвращаемое значение | |
|---|---|
Функция преобразования Dataset, которую можно передать в tf.data.Dataset.apply. |
| Возможные исключения | |
|---|---|
ValueError | если len(bucket_batch_sizes) != len(bucket_boundaries) + 1. |
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.3/api_docs/python/tf/data/experimental/bucket_by_sequence_length