Метод ragged_batch класса Dataset
Метод ragged_batch применяется к объекту Dataset
и группирует его элементы в пакеты, которые могут иметь
разную длину вдоль одной из осей. В отличие от обычного
метода batch, который требует одинаковой формы всех
элементов, ragged_batch сохраняет неоднородные данные
в виде рваного тензора RaggedTensor.
Первым параметром передаётся размер пакета batch_size.
Вторым необязательным параметром drop_remainder можно
указать, отбрасывать ли последний неполный пакет.
Метод особенно полезен при работе с последовательностями разной длины, например с текстами или временными рядами, где каждый пример имеет свою длину.
Синтаксис
Dataset.ragged_batch(batch_size, drop_remainder=False)
Пример
Давайте создадим набор данных из рваных последовательностей
и сгруппируем их в пакеты по 2 элемента:
import tensorflow as tf
dataset = tf.data.Dataset.from_tensor_slices(
tf.ragged.constant([[1, 2], [3, 4, 5], [6], [7, 8, 9]])
)
dataset = dataset.ragged_batch(2)
for batch in dataset:
print(batch)
Результат выполнения кода:
<tf.RaggedTensor [[1, 2], [3, 4, 5]]>
<tf.RaggedTensor [[6], [7, 8, 9]]>
Пример
Давайте используем параметр drop_remainder, чтобы
отбросить последний неполный пакет из 3 элементов:
import tensorflow as tf
dataset = tf.data.Dataset.from_tensor_slices(
tf.ragged.constant([[1, 2], [3, 4, 5], [6], [7, 8, 9]])
)
dataset = dataset.ragged_batch(3, drop_remainder=True)
for batch in dataset:
print(batch)
Результат выполнения кода:
<tf.RaggedTensor [[1, 2], [3, 4, 5], [6]]>
Пример
Давайте применим ragged_batch к набору данных из
строк разной длины и выведем форму каждого пакета:
import tensorflow as tf
dataset = tf.data.Dataset.from_tensor_slices(
tf.ragged.constant([list('abcde'), list('ab'), list('abc')])
)
dataset = dataset.ragged_batch(2)
for batch in dataset:
print(batch)
print(batch.shape)
Результат выполнения кода:
<tf.RaggedTensor [[b'a', b'b', b'c', b'd', b'e'], [b'a', b'b']]>
(2, None)
<tf.RaggedTensor [[b'a', b'b', b'c']]>
(1, None)
Смотрите также
-
метод
batch,
который группирует элементы в пакеты одинаковой формы -
метод
padded_batch,
который дополняет элементы до одинаковой формы -
класс
Dataset,
который представляет набор данных в TensorFlow -
метод
from_tensor_slices,
который создает набор данных из срезов тензора