| syntax = "proto3"; |
| |
| package tensorflow; |
| option cc_enable_arenas = true; |
| option java_outer_classname = "TensorProtos"; |
| option java_multiple_files = true; |
| option java_package = "org.tensorflow.framework"; |
| option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework"; |
| import "tensorflow/core/framework/resource_handle.proto"; |
| import "tensorflow/core/framework/tensor_shape.proto"; |
| import "tensorflow/core/framework/types.proto"; |
| |
| // Protocol buffer representing a tensor. |
| message TensorProto { |
| DataType dtype = 1; |
| |
| // Shape of the tensor. TODO(touts): sort out the 0-rank issues. |
| TensorShapeProto tensor_shape = 2; |
| |
| // Only one of the representations below is set, one of "tensor_contents" and |
| // the "xxx_val" attributes. We are not using oneof because as oneofs cannot |
| // contain repeated fields it would require another extra set of messages. |
| |
| // Version number. |
| // |
| // In version 0, if the "repeated xxx" representations contain only one |
| // element, that element is repeated to fill the shape. This makes it easy |
| // to represent a constant Tensor with a single value. |
| int32 version_number = 3; |
| |
| // Serialized raw tensor content from either Tensor::AsProtoTensorContent or |
| // memcpy in tensorflow::grpc::EncodeTensorToByteBuffer. This representation |
| // can be used for all tensor types. The purpose of this representation is to |
| // reduce serialization overhead during RPC call by avoiding serialization of |
| // many repeated small items. |
| bytes tensor_content = 4; |
| |
| // Type specific representations that make it easy to create tensor protos in |
| // all languages. Only the representation corresponding to "dtype" can |
| // be set. The values hold the flattened representation of the tensor in |
| // row major order. |
| |
| // DT_HALF, DT_BFLOAT16. Note that since protobuf has no int16 type, we'll |
| // have some pointless zero padding for each value here. |
| repeated int32 half_val = 13 [packed = true]; |
| |
| // DT_FLOAT. |
| repeated float float_val = 5 [packed = true]; |
| |
| // DT_DOUBLE. |
| repeated double double_val = 6 [packed = true]; |
| |
| // DT_INT32, DT_INT16, DT_INT8, DT_UINT8. |
| repeated int32 int_val = 7 [packed = true]; |
| |
| // DT_STRING |
| repeated bytes string_val = 8; |
| |
| // DT_COMPLEX64. scomplex_val(2*i) and scomplex_val(2*i+1) are real |
| // and imaginary parts of i-th single precision complex. |
| repeated float scomplex_val = 9 [packed = true]; |
| |
| // DT_INT64 |
| repeated int64 int64_val = 10 [packed = true]; |
| |
| // DT_BOOL |
| repeated bool bool_val = 11 [packed = true]; |
| |
| // DT_COMPLEX128. dcomplex_val(2*i) and dcomplex_val(2*i+1) are real |
| // and imaginary parts of i-th double precision complex. |
| repeated double dcomplex_val = 12 [packed = true]; |
| |
| // DT_RESOURCE |
| repeated ResourceHandleProto resource_handle_val = 14; |
| |
| // DT_VARIANT |
| repeated VariantTensorDataProto variant_val = 15; |
| |
| // DT_UINT32 |
| repeated uint32 uint32_val = 16 [packed = true]; |
| |
| // DT_UINT64 |
| repeated uint64 uint64_val = 17 [packed = true]; |
| }; |
| |
| // Protocol buffer representing the serialization format of DT_VARIANT tensors. |
| message VariantTensorDataProto { |
| // Name of the type of objects being serialized. |
| string type_name = 1; |
| // Portions of the object that are not Tensors. |
| bytes metadata = 2; |
| // Tensors contained within objects being serialized. |
| repeated TensorProto tensors = 3; |
| } |