Spec-Zone.ru › TensorFlow 2.4

tf.io.decode_proto

Операция извлекает поля из сериализованного сообщения протобуффера в тензоры.

Просмотр псевдонимов

Псевдонимы для миграции

Дополнительные сведения см. в руководстве по миграции.

tf.compat.v1.io.decode_proto

tf.io.decode_proto(
    bytes, message_type, field_names, output_types,
    descriptor_source='local://', message_format='binary',
    sanitize=False, name=None
)

Операция decode_proto извлекает поля из сериализованного сообщения протобуффера в тензоры. Поля в field_names декодируются и преобразуются в соответствующие output_types, если это возможно.

Необходимо указать имя message_type, чтобы задать контекст для имен полей. Фактическое описание сообщения можно найти либо в подключенном пуле описаний, либо в файле, указанном вызывающей стороной с помощью атрибута descriptor_source.

Каждый выходной тензор — это плотный тензор. Это означает, что он дополняется до наибольшего числа повторяющихся элементов, встречающихся в входной мини-пачке. (Размерность также дополняется на единицу, чтобы предотвратить нулевые размеры). Фактическое количество повторений для каждого примера в мини-пачке можно найти в выходном sizes. Во многих случаях выход decode_proto сразу передается в tf.squeeze, если пропущенные значения не вызывают опасений. При использовании tf.squeeze всегда явно передавайте размерность squeeze, чтобы избежать неожиданностей.

В большинстве случаев сопоставление между типами полей прото и типами данных TensorFlow прямолинейно. Однако есть несколько особых случаев:

  • Поле прото, содержащее подсообщение или группу, может быть преобразовано только в DT_STRING (сериализованное подсообщение). Это сделано для уменьшения сложности API. Полученная строка может быть использована в качестве входных данных для другой операции decode_proto.

  • В TensorFlow нет поддержки беззнаковых целых чисел. Операции представляют типы uint64 в виде DT_INT64 с той же битовой моделью дополнительного кода (очевидный способ). Беззнаковые значения int32 можно точно представить, указав тип DT_INT64, или с помощью дополнительного кода, если вызывающая сторона указывает DT_INT32 в атрибуте output_types.

Поддерживается сериализация протобуфферов в бинарном и текстовом форматах, выбор можно осуществить с помощью атрибута format.

Атрибут descriptor_source выбирает источник описаний протоколов для поиска message_type. Это может быть:

  • Пустая строка или «local://», в этом случае описания протоколов создаются для определений протоколов C++ (а не Python), связанных с двоичным файлом.

  • Файл, в этом случае описания протоколов создаются из файла, который, как ожидается, содержит сериализованный FileDescriptorSet в виде строки. ПРИМЕЧАНИЕ: Вы можете создать файл descriptor_source с помощью опций --descriptor_set_out и --include_imports компилятора протоколов protoc.

  • «bytes://», в этом случае описания протоколов создаются из <bytes>, которая, как ожидается, является сериализованным FileDescriptorSet в виде строки.

Аргументы
bytes A Tensor типа string. Тензор сериализованных прото с формой batch_shape.
message_type A string. Имя типа сообщения прото, которое необходимо декодировать.
field_names Список strings. Список строк, содержащих имена полей прото. Поле расширения можно декодировать, используя его полное имя, например EXT_PACKAGE.EXT_FIELD_NAME.
output_types Список tf.DTypes. Список типов TF, которые следует использовать для соответствующего поля в field_names.
descriptor_source Необязательный string. По умолчанию "local://". Либо специальное значение local://, либо путь к файлу, содержащему сериализованный FileDescriptorSet.
message_format Необязательный string. По умолчанию "binary". Либо binary, либо text.
sanitize Необязательный bool. По умолчанию False. Нужно ли очищать результат.
name Имя операции (необязательно).
Возвращаемые значения
Кортеж объектов Tensor (размеры, значения).
sizes A Tensor типа int32.
values Список объектов Tensor типа output_types.

© 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.4/api_docs/python/tf/io/decode_proto

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API