tf.io.encode_proto
Операция сериализует сообщения protobuf, предоставленные в входных тензорах.
tf.io.encode_proto(
sizes: Annotated[Any, _atypes.Int32],
values,
field_names,
message_type: str,
descriptor_source: str = 'local://',
name=None
) -> Annotated[Any, _atypes.String]
Типы тензоров в 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с тем же битовым шаблоном дополнения до двух (очевидным способом). Беззнаковые значения int32 можно точно представить, указав типDT_INT64или используя дополнение до двух, если вызывающий объект указываетDT_INT32в атрибутеoutput_types.
Атрибут descriptor_source выбирает источник протокольных дескрипторов, к которым обращаться при поиске message_type. Это может быть:
Пустая строка или "local://", в этом случае протокольные дескрипторы создаются для C++ (не Python) определений proto, связанных с бинарником.
Файл, в этом случае протокольные дескрипторы создаются из файла, который ожидается содержать сериализованное
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. Список строк, содержащих имена полей протокола. |
message_type | string. Имя типа протольного сообщения для декодирования. |
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/io/encode_proto