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.
По умолчанию возвращается плоский кортеж всех Tensors, CompositeTensors и ExtensionTypes из обхода 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/versions/r2.9/api_docs/python/tf/experimental/ExtensionTypeBatchEncoder