tf.data.experimental.dense_to_ragged_batch
Преобразование, которое объединяет разрозненные элементы в tf.RaggedTensor.
tf.data.experimental.dense_to_ragged_batch(
batch_size, drop_remainder=False, row_splits_dtype=tf.dtypes.int64
)
Это преобразование объединяет несколько последовательных элементов входного набора данных в один элемент.
Как и tf.data.Dataset.batch, компоненты результирующего элемента будут иметь дополнительное внешнее измерение, которое будет batch_size (или N % batch_size для последнего элемента, если batch_size не делит число входных элементов N равномерно и drop_remainder равно False). Если ваша программа зависит от того, что у партий одинаковое внешнее измерение, вы должны установить аргумент drop_remainder в значение True, чтобы предотвратить создание меньшей партии.
В отличие от tf.data.Dataset.batch, входные элементы, которые будут объединены в пакеты, могут иметь разные формы:
- Если входной элемент является
tf.Tensor, чья статическаяtf.TensorShapeполностью определена, то он объединяется в пакет как обычно. - Если входной элемент является
tf.Tensor, чья статическаяtf.TensorShapeсодержит одну или несколько осей с неизвестным размером (т.е.,shape[i]=None), то вывод будет содержатьtf.RaggedTensor, который разрознен до любого из таких измерений. - Если входной элемент является
tf.RaggedTensorили любого другого типа, то он объединяется в пакет как обычно.
Пример:
dataset = tf.data.Dataset.from_tensor_slices(np.arange(6))
dataset = dataset.map(lambda x: tf.range(x))
dataset.element_spec.shape
TensorShape([None])
dataset = dataset.apply(
tf.data.experimental.dense_to_ragged_batch(batch_size=2))
for batch in dataset:
print(batch)
<tf.RaggedTensor [[], [0]]>
<tf.RaggedTensor [[0, 1], [0, 1, 2]]>
<tf.RaggedTensor [[0, 1, 2, 3], [0, 1, 2, 3, 4]]>
| Аргументы | |
|---|---|
batch_size | Скалярное значение tf.int64, представляющее число последовательных элементов данного набора данных, которые должны быть объединены в один пакет. |
drop_remainder | (Необязательно.) Скалярное значение tf.bool, представляющее, следует ли отбрасывать последнюю партию в случае, если она содержит меньше, чем batch_size элементов; по умолчанию меньшая партия не отбрасывается. |
row_splits_dtype | Тип данных, который следует использовать для row_splits любых новых разрозненных тензоров. Существующие элементы tf.RaggedTensor не изменяют свой тип данных row_splits. |
| Возвращаемое значение | |
|---|---|
Dataset | Dataset. |
© 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/dense_to_ragged_batch