tf.raw_ops.EncodeProto
Операция сериализует сообщения protobuf, переданные во входных тензорах.
tf.raw_ops.EncodeProto(
sizes,
values,
field_names,
message_type,
descriptor_source='local://',
name=None
)
Типы тензоров в values должны соответствовать схеме полей, указанных в field_names. Все тензоры в values должны иметь общий префикс формы, batch_shape.
Тензор sizes задает количество повторений для каждого поля. Количество повторений (последнее измерение) каждого тензора в values должно быть не меньше соответствующего количества повторений в sizes.
Для задания контекста имен полей необходимо указать имя message_type. Фактический дескриптор сообщения можно найти либо в подключенном пуле дескрипторов, либо в файле, указанном вызывающим кодом с помощью атрибута descriptor_source.
В большинстве случаев соответствие между типами полей Proto и типами данных TensorFlow очевидно. Однако есть несколько особых случаев:
Поле proto, содержащее вложенное сообщение или группу, можно преобразовать только в
DT_STRING(сериализованное вложенное сообщение). Это упрощает API. Полученную строку можно использовать в качестве входных данных для другого экземпляра операции decode_proto.TensorFlow не поддерживает беззнаковые целые числа. Операции представляют типы uint64 как
DT_INT64с тем же битовым шаблоном дополнительного кода (очевидный способ). Значения uint32 можно точно представить, указав типDT_INT64или используя дополнительный код, если вызывающий код укажетDT_INT32в атрибутеoutput_types.
Атрибут descriptor_source выбирает источник дескрипторов протокола, используемый для поиска message_type. Это может быть:
Пустая строка или "local://"; в этом случае дескрипторы протокола создаются для определений proto на C++ (но не на Python), связанных с бинарным файлом.
Файл; в этом случае дескрипторы протокола создаются из файла, который, как предполагается, содержит
FileDescriptorSet, сериализованный в виде строки. ПРИМЕЧАНИЕ. Файлdescriptor_sourceможно создать с помощью параметров--descriptor_set_outи--include_importsкомпилятора протоколовprotoc."bytes://
", в этом случае дескрипторы протокола создаются из <bytes>, которое, как предполагается, представляет собойFileDescriptorSet, сериализованный в виде строки.
| Аргументы | |
|---|---|
sizes | Tensor типа int32. Тензор int32 с формой [batch_shape, len(field_names)]. |
values | Список объектов Tensor. Список тензоров, содержащих значения соответствующего поля. |
field_names | Список strings. Список строк с именами полей proto. |
message_type | string. Имя типа сообщения proto для декодирования. |
descriptor_source | Необязательный string. По умолчанию используется "local://". |
name | Имя операции (необязательно). |
| Возвращаемое значение | |
|---|---|
Tensor типа string. |
© 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/raw_ops/EncodeProto