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.Tensors, пригодных для пакетной обработки tf.CompositeTensors или tf.ExtensionTypes. Объединение, разбиение на части или конкатенация этих закодированных значений, а затем декодирование результата должны быть эквивалентны объединению, разбиению на части или конкатенации исходных значений. |
encoding_specs
encoding_specs(
spec
)
Возвращает список TensorSpec(ов), описывающий кодирование для spec.
См. encode для описания кодирования по умолчанию. Подклассы могут переопределить это значение по умолчанию при необходимости.
| Аргументы | |
|---|---|
spec | TypeSpec, кодирование которого должно быть описано. |
| Возвращает | |
|---|---|
Вложенный набор (как определено в tf.nest) oftf.TypeSpec, describing the values that are returned byself.encode(spec, ...)`. Все TypeSpecs в этом вложенном наборе должны быть пригодны для пакетной обработки. |
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