tf.io.encode_proto
The op serializes protobuf messages provided in the input tensors.
tf.io.encode_proto(
sizes, values, field_names, message_type,
descriptor_source='local://', name=None
)
The types of the tensors in values must match the schema for the fields specified in field_names. All the tensors in values must have a common shape prefix, batch_shape.
The sizes tensor specifies repeat counts for each field. The repeat count (last dimension) of a each tensor in values must be greater than or equal to corresponding repeat count in sizes.
A message_type name must be provided to give context for the field names. The actual message descriptor can be looked up either in the linked-in descriptor pool or a filename provided by the caller using the descriptor_source attribute.
For the most part, the mapping between Proto field types and TensorFlow dtypes is straightforward. However, there are a few special cases:
A proto field that contains a submessage or group can only be converted to
DT_STRING(the serialized submessage). This is to reduce the complexity of the API. The resulting string can be used as input to another instance of the decode_proto op.TensorFlow lacks support for unsigned integers. The ops represent uint64 types as a
DT_INT64with the same twos-complement bit pattern (the obvious way). Unsigned int32 values can be represented exactly by specifying typeDT_INT64, or using twos-complement if the caller specifiesDT_INT32in theoutput_typesattribute.
The descriptor_source attribute selects the source of protocol descriptors to consult when looking up message_type. This may be:
An empty string or "local://", in which case protocol descriptors are created for C++ (not Python) proto definitions linked to the binary.
A file, in which case protocol descriptors are created from the file, which is expected to contain a
FileDescriptorSetserialized as a string. NOTE: You can build adescriptor_sourcefile using the--descriptor_set_outand--include_importsoptions to the protocol compilerprotoc.A "bytes://
", in which protocol descriptors are created from <bytes>, which is expected to be aFileDescriptorSetserialized as a string.
| Args | |
|---|---|
sizes | A Tensor of type int32. Tensor of int32 with shape [batch_shape, len(field_names)]. |
values | A list of Tensor objects. List of tensors containing values for the corresponding field. |
field_names | A list of strings. List of strings containing proto field names. |
message_type | A string. Name of the proto message type to decode. |
descriptor_source | An optional string. Defaults to "local://". |
name | A name for the operation (optional). |
| Returns | |
|---|---|
A Tensor of type string. |
© 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/encode_proto