tf.raw_ops.DecodeProtoV2
Операция извлекает поля из сериализованного сообщения протобуфера в тензоры.
tf.raw_ops.DecodeProtoV2(
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 всегда явно передавайте размер сжатия, чтобы избежать неожиданных результатов.
В большинстве случаев сопоставление между типами полей протобуфера и типами данных 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 | Tensor типа string. Тензор сериализованных протобуферов с формой batch_shape. |
message_type | 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 | 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.3/api_docs/python/tf/raw_ops/DecodeProtoV2