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 tf.Tensor, задающий количество последовательных элементов этого набора данных, которые нужно объединить в один пакет. |
drop_remainder | (Необязательно.) Скалярный tf.bool tf.Tensor, указывающий, следует ли отбрасывать последний пакет, если в нём меньше batch_size элементов; по умолчанию пакет меньшего размера не отбрасывается. |
row_splits_dtype | Тип данных, который следует использовать для row_splits любых новых тензоров с неоднородной формой. Тип данных row_splits существующих элементов tf.RaggedTensor не изменяется. |
| Возвращаемое значение | |
|---|---|
Dataset | Объект типа Dataset. |
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/data/experimental/dense_to_ragged_batch