tf.experimental.ExtensionTypeBatchEncoder
Класс для кодирования и декодирования значений типов расширений при пакетировании.
Чтобы API, такие как tf.data.Dataset, tf.keras и tf.map_fn, могли пакетировать и распаковывать значения типов расширений, эти значения необходимо кодировать в виде списка tf.Tensor. При этом пакетирование, распаковывание или объединение этих закодированных тензоров, а затем декодирование результата должны быть эквивалентны пакетированию, распаковыванию или объединению исходных значений. За реализацию такого кодирования отвечают ExtensionTypeBatchEncoder.
Кодировщик по умолчанию ExtensionTypeBatchEncoder, используемый в BatchableExtensionType, предполагает, что значения типов расширений можно пакетировать, распаковывать или объединять, просто пакетируя, распаковывая или объединяя каждое вложенное поле Tensor, ExtensionType, CompositeTensor и TensorShape.
Для типов расширений, для которых это условие не выполняется, потребуется переопределить __batch_encoder__, предоставив пользовательский кодировщик, переопределяющий методы batch, unbatch, encode и decode. Например:
class CustomBatchEncoder(ExtensionTypeBatchEncoder): pass # Override batch(), unbatch(), encode(), and decode().
class CustomType(BatchableExtensionType): x: tf.Tensor y: tf.Tensor shape: tf.TensorShape __batch_encoder__ = CustomBatchEncoder()
Например, tf.RaggedTensor и tf.SparseTensor используют пользовательское кодирование пакетов, в котором определены операции для «упаковки» и «распаковки» отдельных значений в тензоры tf.variant.
Методы
batch
batch(
spec, batch_size
)
Возвращает TypeSpec, представляющий пакет значений, описанных с помощью spec.
По умолчанию возвращается TypeSpec, равный spec, за исключением того, что к каждому вложенному полю TypeSpec и TensorShape добавляется внешняя ось размера batch_size. При необходимости подклассы могут переопределить это определение по умолчанию.
| Аргументы | |
|---|---|
spec | TypeSpec для отдельного значения. |
batch_size | int, указывающий количество объединяемых в пакет значений, или None, если размер пакета неизвестен. |
| Возвращает | |
|---|---|
TypeSpec для пакета значений. |
decode
decode(
spec, encoded_value
)
Декодирует value из пакетируемого тензорного представления.
Описание кодирования по умолчанию см. в encode. При необходимости подклассы могут переопределить это определение по умолчанию.
| Аргументы | |
|---|---|
spec | TypeSpec результирующего значения. Если закодированные значения со спецификацией s были объединены в пакет, то spec должно быть s.batch(batch_size); если же закодированные значения со спецификацией s были распакованы, то spec должно быть s.unbatch(). |
encoded_value | Вложенная структура значений, возвращённая encode; либо вложенная структура значений, полученная пакетированием, распаковыванием или объединением соответствующих элементов значений, возвращённых encode. |
| Возвращает | |
|---|---|
Значение, совместимое с type_spec. |
encode
encode(
spec, value, minimum_rank=0
)
Кодирует value как вложенную структуру пакетируемых тензоров или CompositeTensors.
По умолчанию возвращается плоский кортеж из всех Tensor, CompositeTensor и ExtensionType, полученных при обходе полей value в глубину. При необходимости подклассы могут переопределить это определение по умолчанию.
| Аргументы | |
|---|---|
spec | TypeSpec значения, которое нужно закодировать. |
value | Значение, совместимое с spec. |
minimum_rank | Минимальный ранг возвращаемых тензоров, CompositeTensors и значений ExtensionType. Это позволяет гарантировать, что закодированные значения можно распаковать указанное число раз. Если minimum_rank>0, то t.shape[:minimum_rank] должен быть совместим для всех значений t, возвращённых encode. |
| Возвращает | |
|---|---|
Вложенную структуру (в определении tf.nest) из tf.Tensor, пакетируемых tf.CompositeTensor или tf.ExtensionType. Пакетирование, распаковывание или объединение этих закодированных значений, а затем декодирование результата должны быть эквивалентны пакетированию, распаковыванию или объединению исходных значений. |
encoding_specs
encoding_specs(
spec
)
Возвращает список TensorSpec(ов), описывающих кодирование для spec.
Описание кодирования по умолчанию см. в encode. При необходимости подклассы могут переопределить это определение по умолчанию.
| Аргументы | |
|---|---|
spec | TypeSpec, кодирование которого нужно описать. |
| Возвращает | |
|---|---|
Вложенную структуру (в определении tf.nest) oftf.TypeSpec, describing the values that are returned byself.encode(spec, ...)`). Все TypeSpec в этой структуре должны поддерживать пакетирование. |
unbatch
unbatch(
spec
)
Возвращает TypeSpec для одного элемента без пакета в spec.
По умолчанию возвращается TypeSpec, равный spec, за исключением того, что крайняя внешняя ось удаляется из каждого вложенного поля TypeSpec и TensorShape. При необходимости подклассы могут переопределить это определение по умолчанию.
| Аргументы | |
|---|---|
spec | TypeSpec для пакета значений. |
| Возвращает | |
|---|---|
TypeSpec для отдельного значения. |
© 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/experimental/ExtensionTypeBatchEncoder