| @@ -4,6 +4,8 @@ using System.Linq; | |||
| using System.Runtime.InteropServices; | |||
| using System.Text; | |||
| using TF_DataType = Tensorflow.DataType; | |||
| namespace TensorFlowNET.Core | |||
| { | |||
| /// <summary> | |||
| @@ -1,38 +0,0 @@ | |||
| using System; | |||
| using System.Collections.Generic; | |||
| using System.Text; | |||
| namespace TensorFlowNET.Core | |||
| { | |||
| /// <summary> | |||
| /// TF_DataType holds the type for a scalar value. E.g., one slot in a tensor. | |||
| /// The enum values here are identical to corresponding values in types.proto. | |||
| /// </summary> | |||
| public enum TF_DataType | |||
| { | |||
| TF_FLOAT = 1, | |||
| TF_DOUBLE = 2, | |||
| TF_INT32 = 3, // Int32 tensors are always in 'host' memory. | |||
| TF_UINT8 = 4, | |||
| TF_INT16 = 5, | |||
| TF_INT8 = 6, | |||
| TF_STRING = 7, | |||
| TF_COMPLEX64 = 8, // Single-precision complex | |||
| TF_COMPLEX = 8, // Old identifier kept for API backwards compatibility | |||
| TF_INT64 = 9, | |||
| TF_BOOL = 10, | |||
| TF_QINT8 = 11, // Quantized int8 | |||
| TF_QUINT8 = 12, // Quantized uint8 | |||
| TF_QINT32 = 13, // Quantized int32 | |||
| TF_BFLOAT16 = 14, // Float32 truncated to 16 bits. Only for cast ops. | |||
| TF_QINT16 = 15, // Quantized int16 | |||
| TF_QUINT16 = 16, // Quantized uint16 | |||
| TF_UINT16 = 17, | |||
| TF_COMPLEX128 = 18, // Double-precision complex | |||
| TF_HALF = 19, | |||
| TF_RESOURCE = 20, | |||
| TF_VARIANT = 21, | |||
| TF_UINT32 = 22, | |||
| TF_UINT64 = 23, | |||
| } | |||
| } | |||
| @@ -9,6 +9,10 @@ | |||
| <DefineConstants>DEBUG;TRACE</DefineConstants> | |||
| </PropertyGroup> | |||
| <ItemGroup> | |||
| <PackageReference Include="Google.Protobuf" Version="3.6.1" /> | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <ProjectReference Include="..\..\..\NumSharp\src\NumSharp.Core\NumSharp.Core.csproj" /> | |||
| </ItemGroup> | |||
| @@ -2,6 +2,7 @@ | |||
| using System.Collections.Generic; | |||
| using System.Runtime.InteropServices; | |||
| using System.Text; | |||
| using TF_DataType = Tensorflow.DataType; | |||
| namespace TensorFlowNET.Core | |||
| { | |||
| @@ -12,7 +13,7 @@ namespace TensorFlowNET.Core | |||
| public static unsafe Tensor constant(object value) | |||
| { | |||
| var g = ops.get_default_graph(); | |||
| g.create_op("Const", value, new TF_DataType[] { TF_DataType.TF_DOUBLE }); | |||
| g.create_op("Const", value, new TF_DataType[] { TF_DataType.DtDouble }); | |||
| return new Tensor(); | |||
| } | |||
| @@ -0,0 +1,326 @@ | |||
| // <auto-generated> | |||
| // Generated by the protocol buffer compiler. DO NOT EDIT! | |||
| // source: node_def.proto | |||
| // </auto-generated> | |||
| #pragma warning disable 1591, 0612, 3021 | |||
| #region Designer generated code | |||
| using pb = global::Google.Protobuf; | |||
| using pbc = global::Google.Protobuf.Collections; | |||
| using pbr = global::Google.Protobuf.Reflection; | |||
| using scg = global::System.Collections.Generic; | |||
| namespace Tensorflow { | |||
| /// <summary>Holder for reflection information generated from node_def.proto</summary> | |||
| public static partial class NodeDefReflection { | |||
| #region Descriptor | |||
| /// <summary>File descriptor for node_def.proto</summary> | |||
| public static pbr::FileDescriptor Descriptor { | |||
| get { return descriptor; } | |||
| } | |||
| private static pbr::FileDescriptor descriptor; | |||
| static NodeDefReflection() { | |||
| byte[] descriptorData = global::System.Convert.FromBase64String( | |||
| string.Concat( | |||
| "Cg5ub2RlX2RlZi5wcm90bxIKdGVuc29yZmxvdxoQYXR0cl92YWx1ZS5wcm90", | |||
| "byKzAQoHTm9kZURlZhIMCgRuYW1lGAEgASgJEgoKAm9wGAIgASgJEg0KBWlu", | |||
| "cHV0GAMgAygJEg4KBmRldmljZRgEIAEoCRIrCgRhdHRyGAUgAygLMh0udGVu", | |||
| "c29yZmxvdy5Ob2RlRGVmLkF0dHJFbnRyeRpCCglBdHRyRW50cnkSCwoDa2V5", | |||
| "GAEgASgJEiQKBXZhbHVlGAIgASgLMhUudGVuc29yZmxvdy5BdHRyVmFsdWU6", | |||
| "AjgBQmkKGG9yZy50ZW5zb3JmbG93LmZyYW1ld29ya0IJTm9kZVByb3RvUAFa", | |||
| "PWdpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3JmbG93L3RlbnNvcmZsb3cv", | |||
| "Z28vY29yZS9mcmFtZXdvcmv4AQFiBnByb3RvMw==")); | |||
| descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, | |||
| new pbr::FileDescriptor[] { global::Tensorflow.AttrValueReflection.Descriptor, }, | |||
| new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] { | |||
| new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.NodeDef), global::Tensorflow.NodeDef.Parser, new[]{ "Name", "Op", "Input", "Device", "Attr" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }) | |||
| })); | |||
| } | |||
| #endregion | |||
| } | |||
| #region Messages | |||
| public sealed partial class NodeDef : pb::IMessage<NodeDef> { | |||
| private static readonly pb::MessageParser<NodeDef> _parser = new pb::MessageParser<NodeDef>(() => new NodeDef()); | |||
| private pb::UnknownFieldSet _unknownFields; | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public static pb::MessageParser<NodeDef> Parser { get { return _parser; } } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public static pbr::MessageDescriptor Descriptor { | |||
| get { return global::Tensorflow.NodeDefReflection.Descriptor.MessageTypes[0]; } | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| pbr::MessageDescriptor pb::IMessage.Descriptor { | |||
| get { return Descriptor; } | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public NodeDef() { | |||
| OnConstruction(); | |||
| } | |||
| partial void OnConstruction(); | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public NodeDef(NodeDef other) : this() { | |||
| name_ = other.name_; | |||
| op_ = other.op_; | |||
| input_ = other.input_.Clone(); | |||
| device_ = other.device_; | |||
| attr_ = other.attr_.Clone(); | |||
| _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public NodeDef Clone() { | |||
| return new NodeDef(this); | |||
| } | |||
| /// <summary>Field number for the "name" field.</summary> | |||
| public const int NameFieldNumber = 1; | |||
| private string name_ = ""; | |||
| /// <summary> | |||
| /// The name given to this operator. Used for naming inputs, | |||
| /// logging, visualization, etc. Unique within a single GraphDef. | |||
| /// Must match the regexp "[A-Za-z0-9.][A-Za-z0-9_./]*". | |||
| /// </summary> | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public string Name { | |||
| get { return name_; } | |||
| set { | |||
| name_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); | |||
| } | |||
| } | |||
| /// <summary>Field number for the "op" field.</summary> | |||
| public const int OpFieldNumber = 2; | |||
| private string op_ = ""; | |||
| /// <summary> | |||
| /// The operation name. There may be custom parameters in attrs. | |||
| /// Op names starting with an underscore are reserved for internal use. | |||
| /// </summary> | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public string Op { | |||
| get { return op_; } | |||
| set { | |||
| op_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); | |||
| } | |||
| } | |||
| /// <summary>Field number for the "input" field.</summary> | |||
| public const int InputFieldNumber = 3; | |||
| private static readonly pb::FieldCodec<string> _repeated_input_codec | |||
| = pb::FieldCodec.ForString(26); | |||
| private readonly pbc::RepeatedField<string> input_ = new pbc::RepeatedField<string>(); | |||
| /// <summary> | |||
| /// Each input is "node:src_output" with "node" being a string name and | |||
| /// "src_output" indicating which output tensor to use from "node". If | |||
| /// "src_output" is 0 the ":0" suffix can be omitted. Regular inputs | |||
| /// may optionally be followed by control inputs that have the format | |||
| /// "^node". | |||
| /// </summary> | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public pbc::RepeatedField<string> Input { | |||
| get { return input_; } | |||
| } | |||
| /// <summary>Field number for the "device" field.</summary> | |||
| public const int DeviceFieldNumber = 4; | |||
| private string device_ = ""; | |||
| /// <summary> | |||
| /// A (possibly partial) specification for the device on which this | |||
| /// node should be placed. | |||
| /// The expected syntax for this string is as follows: | |||
| /// | |||
| /// DEVICE_SPEC ::= PARTIAL_SPEC | |||
| /// | |||
| /// PARTIAL_SPEC ::= ("/" CONSTRAINT) * | |||
| /// CONSTRAINT ::= ("job:" JOB_NAME) | |||
| /// | ("replica:" [1-9][0-9]*) | |||
| /// | ("task:" [1-9][0-9]*) | |||
| /// | ("device:" [A-Za-z]* ":" ([1-9][0-9]* | "*") ) | |||
| /// | |||
| /// Valid values for this string include: | |||
| /// * "/job:worker/replica:0/task:1/device:GPU:3" (full specification) | |||
| /// * "/job:worker/device:GPU:3" (partial specification) | |||
| /// * "" (no specification) | |||
| /// | |||
| /// If the constraints do not resolve to a single device (or if this | |||
| /// field is empty or not present), the runtime will attempt to | |||
| /// choose a device automatically. | |||
| /// </summary> | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public string Device { | |||
| get { return device_; } | |||
| set { | |||
| device_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); | |||
| } | |||
| } | |||
| /// <summary>Field number for the "attr" field.</summary> | |||
| public const int AttrFieldNumber = 5; | |||
| private static readonly pbc::MapField<string, global::Tensorflow.AttrValue>.Codec _map_attr_codec | |||
| = new pbc::MapField<string, global::Tensorflow.AttrValue>.Codec(pb::FieldCodec.ForString(10), pb::FieldCodec.ForMessage(18, global::Tensorflow.AttrValue.Parser), 42); | |||
| private readonly pbc::MapField<string, global::Tensorflow.AttrValue> attr_ = new pbc::MapField<string, global::Tensorflow.AttrValue>(); | |||
| /// <summary> | |||
| /// Operation-specific graph-construction-time configuration. | |||
| /// Note that this should include all attrs defined in the | |||
| /// corresponding OpDef, including those with a value matching | |||
| /// the default -- this allows the default to change and makes | |||
| /// NodeDefs easier to interpret on their own. However, if | |||
| /// an attr with a default is not specified in this list, the | |||
| /// default will be used. | |||
| /// The "names" (keys) must match the regexp "[a-z][a-z0-9_]+" (and | |||
| /// one of the names from the corresponding OpDef's attr field). | |||
| /// The values must have a type matching the corresponding OpDef | |||
| /// attr's type field. | |||
| /// TODO(josh11b): Add some examples here showing best practices. | |||
| /// </summary> | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public pbc::MapField<string, global::Tensorflow.AttrValue> Attr { | |||
| get { return attr_; } | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public override bool Equals(object other) { | |||
| return Equals(other as NodeDef); | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public bool Equals(NodeDef other) { | |||
| if (ReferenceEquals(other, null)) { | |||
| return false; | |||
| } | |||
| if (ReferenceEquals(other, this)) { | |||
| return true; | |||
| } | |||
| if (Name != other.Name) return false; | |||
| if (Op != other.Op) return false; | |||
| if(!input_.Equals(other.input_)) return false; | |||
| if (Device != other.Device) return false; | |||
| if (!Attr.Equals(other.Attr)) return false; | |||
| return Equals(_unknownFields, other._unknownFields); | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public override int GetHashCode() { | |||
| int hash = 1; | |||
| if (Name.Length != 0) hash ^= Name.GetHashCode(); | |||
| if (Op.Length != 0) hash ^= Op.GetHashCode(); | |||
| hash ^= input_.GetHashCode(); | |||
| if (Device.Length != 0) hash ^= Device.GetHashCode(); | |||
| hash ^= Attr.GetHashCode(); | |||
| if (_unknownFields != null) { | |||
| hash ^= _unknownFields.GetHashCode(); | |||
| } | |||
| return hash; | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public override string ToString() { | |||
| return pb::JsonFormatter.ToDiagnosticString(this); | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public void WriteTo(pb::CodedOutputStream output) { | |||
| if (Name.Length != 0) { | |||
| output.WriteRawTag(10); | |||
| output.WriteString(Name); | |||
| } | |||
| if (Op.Length != 0) { | |||
| output.WriteRawTag(18); | |||
| output.WriteString(Op); | |||
| } | |||
| input_.WriteTo(output, _repeated_input_codec); | |||
| if (Device.Length != 0) { | |||
| output.WriteRawTag(34); | |||
| output.WriteString(Device); | |||
| } | |||
| attr_.WriteTo(output, _map_attr_codec); | |||
| if (_unknownFields != null) { | |||
| _unknownFields.WriteTo(output); | |||
| } | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public int CalculateSize() { | |||
| int size = 0; | |||
| if (Name.Length != 0) { | |||
| size += 1 + pb::CodedOutputStream.ComputeStringSize(Name); | |||
| } | |||
| if (Op.Length != 0) { | |||
| size += 1 + pb::CodedOutputStream.ComputeStringSize(Op); | |||
| } | |||
| size += input_.CalculateSize(_repeated_input_codec); | |||
| if (Device.Length != 0) { | |||
| size += 1 + pb::CodedOutputStream.ComputeStringSize(Device); | |||
| } | |||
| size += attr_.CalculateSize(_map_attr_codec); | |||
| if (_unknownFields != null) { | |||
| size += _unknownFields.CalculateSize(); | |||
| } | |||
| return size; | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public void MergeFrom(NodeDef other) { | |||
| if (other == null) { | |||
| return; | |||
| } | |||
| if (other.Name.Length != 0) { | |||
| Name = other.Name; | |||
| } | |||
| if (other.Op.Length != 0) { | |||
| Op = other.Op; | |||
| } | |||
| input_.Add(other.input_); | |||
| if (other.Device.Length != 0) { | |||
| Device = other.Device; | |||
| } | |||
| attr_.Add(other.attr_); | |||
| _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public void MergeFrom(pb::CodedInputStream input) { | |||
| uint tag; | |||
| while ((tag = input.ReadTag()) != 0) { | |||
| switch(tag) { | |||
| default: | |||
| _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); | |||
| break; | |||
| case 10: { | |||
| Name = input.ReadString(); | |||
| break; | |||
| } | |||
| case 18: { | |||
| Op = input.ReadString(); | |||
| break; | |||
| } | |||
| case 26: { | |||
| input_.AddEntriesFrom(input, _repeated_input_codec); | |||
| break; | |||
| } | |||
| case 34: { | |||
| Device = input.ReadString(); | |||
| break; | |||
| } | |||
| case 42: { | |||
| attr_.AddEntriesFrom(input, _map_attr_codec); | |||
| break; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| #endregion | |||
| } | |||
| #endregion Designer generated code | |||
| @@ -0,0 +1,12 @@ | |||
| ### Download compiler from https://github.com/protocolbuffers/protobuf/releases | |||
| ```shell | |||
| set SRC_DIR=D:\Projects\tensorflow\tensorflow\core\framework | |||
| set DST_DIR=D:\Projects\TensorFlow.NET\src\TensorFlowNET.Core\Tensorflow | |||
| .\protoc -I=%SRC_DIR% --csharp_out=%DST_DIR% resource_handle.proto | |||
| .\protoc -I=%SRC_DIR% --csharp_out=%DST_DIR% tensor_shape.proto | |||
| .\protoc -I=%SRC_DIR% --csharp_out=%DST_DIR% types.proto | |||
| .\protoc -I=%SRC_DIR% --csharp_out=%DST_DIR% tensor.proto | |||
| .\protoc -I=%SRC_DIR% --csharp_out=%DST_DIR% attr_value.proto | |||
| .\protoc -I=%SRC_DIR% --csharp_out=%DST_DIR% node_def.proto | |||
| ``` | |||
| @@ -0,0 +1,311 @@ | |||
| // <auto-generated> | |||
| // Generated by the protocol buffer compiler. DO NOT EDIT! | |||
| // source: resource_handle.proto | |||
| // </auto-generated> | |||
| #pragma warning disable 1591, 0612, 3021 | |||
| #region Designer generated code | |||
| using pb = global::Google.Protobuf; | |||
| using pbc = global::Google.Protobuf.Collections; | |||
| using pbr = global::Google.Protobuf.Reflection; | |||
| using scg = global::System.Collections.Generic; | |||
| namespace Tensorflow { | |||
| /// <summary>Holder for reflection information generated from resource_handle.proto</summary> | |||
| public static partial class ResourceHandleReflection { | |||
| #region Descriptor | |||
| /// <summary>File descriptor for resource_handle.proto</summary> | |||
| public static pbr::FileDescriptor Descriptor { | |||
| get { return descriptor; } | |||
| } | |||
| private static pbr::FileDescriptor descriptor; | |||
| static ResourceHandleReflection() { | |||
| byte[] descriptorData = global::System.Convert.FromBase64String( | |||
| string.Concat( | |||
| "ChVyZXNvdXJjZV9oYW5kbGUucHJvdG8SCnRlbnNvcmZsb3cicgoTUmVzb3Vy", | |||
| "Y2VIYW5kbGVQcm90bxIOCgZkZXZpY2UYASABKAkSEQoJY29udGFpbmVyGAIg", | |||
| "ASgJEgwKBG5hbWUYAyABKAkSEQoJaGFzaF9jb2RlGAQgASgEEhcKD21heWJl", | |||
| "X3R5cGVfbmFtZRgFIAEoCUJuChhvcmcudGVuc29yZmxvdy5mcmFtZXdvcmtC", | |||
| "DlJlc291cmNlSGFuZGxlUAFaPWdpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5z", | |||
| "b3JmbG93L3RlbnNvcmZsb3cvZ28vY29yZS9mcmFtZXdvcmv4AQFiBnByb3Rv", | |||
| "Mw==")); | |||
| descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, | |||
| new pbr::FileDescriptor[] { }, | |||
| new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] { | |||
| new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.ResourceHandleProto), global::Tensorflow.ResourceHandleProto.Parser, new[]{ "Device", "Container", "Name", "HashCode", "MaybeTypeName" }, null, null, null) | |||
| })); | |||
| } | |||
| #endregion | |||
| } | |||
| #region Messages | |||
| /// <summary> | |||
| /// Protocol buffer representing a handle to a tensorflow resource. Handles are | |||
| /// not valid across executions, but can be serialized back and forth from within | |||
| /// a single run. | |||
| /// </summary> | |||
| public sealed partial class ResourceHandleProto : pb::IMessage<ResourceHandleProto> { | |||
| private static readonly pb::MessageParser<ResourceHandleProto> _parser = new pb::MessageParser<ResourceHandleProto>(() => new ResourceHandleProto()); | |||
| private pb::UnknownFieldSet _unknownFields; | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public static pb::MessageParser<ResourceHandleProto> Parser { get { return _parser; } } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public static pbr::MessageDescriptor Descriptor { | |||
| get { return global::Tensorflow.ResourceHandleReflection.Descriptor.MessageTypes[0]; } | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| pbr::MessageDescriptor pb::IMessage.Descriptor { | |||
| get { return Descriptor; } | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public ResourceHandleProto() { | |||
| OnConstruction(); | |||
| } | |||
| partial void OnConstruction(); | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public ResourceHandleProto(ResourceHandleProto other) : this() { | |||
| device_ = other.device_; | |||
| container_ = other.container_; | |||
| name_ = other.name_; | |||
| hashCode_ = other.hashCode_; | |||
| maybeTypeName_ = other.maybeTypeName_; | |||
| _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public ResourceHandleProto Clone() { | |||
| return new ResourceHandleProto(this); | |||
| } | |||
| /// <summary>Field number for the "device" field.</summary> | |||
| public const int DeviceFieldNumber = 1; | |||
| private string device_ = ""; | |||
| /// <summary> | |||
| /// Unique name for the device containing the resource. | |||
| /// </summary> | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public string Device { | |||
| get { return device_; } | |||
| set { | |||
| device_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); | |||
| } | |||
| } | |||
| /// <summary>Field number for the "container" field.</summary> | |||
| public const int ContainerFieldNumber = 2; | |||
| private string container_ = ""; | |||
| /// <summary> | |||
| /// Container in which this resource is placed. | |||
| /// </summary> | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public string Container { | |||
| get { return container_; } | |||
| set { | |||
| container_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); | |||
| } | |||
| } | |||
| /// <summary>Field number for the "name" field.</summary> | |||
| public const int NameFieldNumber = 3; | |||
| private string name_ = ""; | |||
| /// <summary> | |||
| /// Unique name of this resource. | |||
| /// </summary> | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public string Name { | |||
| get { return name_; } | |||
| set { | |||
| name_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); | |||
| } | |||
| } | |||
| /// <summary>Field number for the "hash_code" field.</summary> | |||
| public const int HashCodeFieldNumber = 4; | |||
| private ulong hashCode_; | |||
| /// <summary> | |||
| /// Hash code for the type of the resource. Is only valid in the same device | |||
| /// and in the same execution. | |||
| /// </summary> | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public ulong HashCode { | |||
| get { return hashCode_; } | |||
| set { | |||
| hashCode_ = value; | |||
| } | |||
| } | |||
| /// <summary>Field number for the "maybe_type_name" field.</summary> | |||
| public const int MaybeTypeNameFieldNumber = 5; | |||
| private string maybeTypeName_ = ""; | |||
| /// <summary> | |||
| /// For debug-only, the name of the type pointed to by this handle, if | |||
| /// available. | |||
| /// </summary> | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public string MaybeTypeName { | |||
| get { return maybeTypeName_; } | |||
| set { | |||
| maybeTypeName_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); | |||
| } | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public override bool Equals(object other) { | |||
| return Equals(other as ResourceHandleProto); | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public bool Equals(ResourceHandleProto other) { | |||
| if (ReferenceEquals(other, null)) { | |||
| return false; | |||
| } | |||
| if (ReferenceEquals(other, this)) { | |||
| return true; | |||
| } | |||
| if (Device != other.Device) return false; | |||
| if (Container != other.Container) return false; | |||
| if (Name != other.Name) return false; | |||
| if (HashCode != other.HashCode) return false; | |||
| if (MaybeTypeName != other.MaybeTypeName) return false; | |||
| return Equals(_unknownFields, other._unknownFields); | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public override int GetHashCode() { | |||
| int hash = 1; | |||
| if (Device.Length != 0) hash ^= Device.GetHashCode(); | |||
| if (Container.Length != 0) hash ^= Container.GetHashCode(); | |||
| if (Name.Length != 0) hash ^= Name.GetHashCode(); | |||
| if (HashCode != 0UL) hash ^= HashCode.GetHashCode(); | |||
| if (MaybeTypeName.Length != 0) hash ^= MaybeTypeName.GetHashCode(); | |||
| if (_unknownFields != null) { | |||
| hash ^= _unknownFields.GetHashCode(); | |||
| } | |||
| return hash; | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public override string ToString() { | |||
| return pb::JsonFormatter.ToDiagnosticString(this); | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public void WriteTo(pb::CodedOutputStream output) { | |||
| if (Device.Length != 0) { | |||
| output.WriteRawTag(10); | |||
| output.WriteString(Device); | |||
| } | |||
| if (Container.Length != 0) { | |||
| output.WriteRawTag(18); | |||
| output.WriteString(Container); | |||
| } | |||
| if (Name.Length != 0) { | |||
| output.WriteRawTag(26); | |||
| output.WriteString(Name); | |||
| } | |||
| if (HashCode != 0UL) { | |||
| output.WriteRawTag(32); | |||
| output.WriteUInt64(HashCode); | |||
| } | |||
| if (MaybeTypeName.Length != 0) { | |||
| output.WriteRawTag(42); | |||
| output.WriteString(MaybeTypeName); | |||
| } | |||
| if (_unknownFields != null) { | |||
| _unknownFields.WriteTo(output); | |||
| } | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public int CalculateSize() { | |||
| int size = 0; | |||
| if (Device.Length != 0) { | |||
| size += 1 + pb::CodedOutputStream.ComputeStringSize(Device); | |||
| } | |||
| if (Container.Length != 0) { | |||
| size += 1 + pb::CodedOutputStream.ComputeStringSize(Container); | |||
| } | |||
| if (Name.Length != 0) { | |||
| size += 1 + pb::CodedOutputStream.ComputeStringSize(Name); | |||
| } | |||
| if (HashCode != 0UL) { | |||
| size += 1 + pb::CodedOutputStream.ComputeUInt64Size(HashCode); | |||
| } | |||
| if (MaybeTypeName.Length != 0) { | |||
| size += 1 + pb::CodedOutputStream.ComputeStringSize(MaybeTypeName); | |||
| } | |||
| if (_unknownFields != null) { | |||
| size += _unknownFields.CalculateSize(); | |||
| } | |||
| return size; | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public void MergeFrom(ResourceHandleProto other) { | |||
| if (other == null) { | |||
| return; | |||
| } | |||
| if (other.Device.Length != 0) { | |||
| Device = other.Device; | |||
| } | |||
| if (other.Container.Length != 0) { | |||
| Container = other.Container; | |||
| } | |||
| if (other.Name.Length != 0) { | |||
| Name = other.Name; | |||
| } | |||
| if (other.HashCode != 0UL) { | |||
| HashCode = other.HashCode; | |||
| } | |||
| if (other.MaybeTypeName.Length != 0) { | |||
| MaybeTypeName = other.MaybeTypeName; | |||
| } | |||
| _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public void MergeFrom(pb::CodedInputStream input) { | |||
| uint tag; | |||
| while ((tag = input.ReadTag()) != 0) { | |||
| switch(tag) { | |||
| default: | |||
| _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); | |||
| break; | |||
| case 10: { | |||
| Device = input.ReadString(); | |||
| break; | |||
| } | |||
| case 18: { | |||
| Container = input.ReadString(); | |||
| break; | |||
| } | |||
| case 26: { | |||
| Name = input.ReadString(); | |||
| break; | |||
| } | |||
| case 32: { | |||
| HashCode = input.ReadUInt64(); | |||
| break; | |||
| } | |||
| case 42: { | |||
| MaybeTypeName = input.ReadString(); | |||
| break; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| #endregion | |||
| } | |||
| #endregion Designer generated code | |||
| @@ -0,0 +1,801 @@ | |||
| // <auto-generated> | |||
| // Generated by the protocol buffer compiler. DO NOT EDIT! | |||
| // source: tensor.proto | |||
| // </auto-generated> | |||
| #pragma warning disable 1591, 0612, 3021 | |||
| #region Designer generated code | |||
| using pb = global::Google.Protobuf; | |||
| using pbc = global::Google.Protobuf.Collections; | |||
| using pbr = global::Google.Protobuf.Reflection; | |||
| using scg = global::System.Collections.Generic; | |||
| namespace Tensorflow { | |||
| /// <summary>Holder for reflection information generated from tensor.proto</summary> | |||
| public static partial class TensorReflection { | |||
| #region Descriptor | |||
| /// <summary>File descriptor for tensor.proto</summary> | |||
| public static pbr::FileDescriptor Descriptor { | |||
| get { return descriptor; } | |||
| } | |||
| private static pbr::FileDescriptor descriptor; | |||
| static TensorReflection() { | |||
| byte[] descriptorData = global::System.Convert.FromBase64String( | |||
| string.Concat( | |||
| "Cgx0ZW5zb3IucHJvdG8SCnRlbnNvcmZsb3caFXJlc291cmNlX2hhbmRsZS5w", | |||
| "cm90bxoSdGVuc29yX3NoYXBlLnByb3RvGgt0eXBlcy5wcm90byKMBAoLVGVu", | |||
| "c29yUHJvdG8SIwoFZHR5cGUYASABKA4yFC50ZW5zb3JmbG93LkRhdGFUeXBl", | |||
| "EjIKDHRlbnNvcl9zaGFwZRgCIAEoCzIcLnRlbnNvcmZsb3cuVGVuc29yU2hh", | |||
| "cGVQcm90bxIWCg52ZXJzaW9uX251bWJlchgDIAEoBRIWCg50ZW5zb3JfY29u", | |||
| "dGVudBgEIAEoDBIUCghoYWxmX3ZhbBgNIAMoBUICEAESFQoJZmxvYXRfdmFs", | |||
| "GAUgAygCQgIQARIWCgpkb3VibGVfdmFsGAYgAygBQgIQARITCgdpbnRfdmFs", | |||
| "GAcgAygFQgIQARISCgpzdHJpbmdfdmFsGAggAygMEhgKDHNjb21wbGV4X3Zh", | |||
| "bBgJIAMoAkICEAESFQoJaW50NjRfdmFsGAogAygDQgIQARIUCghib29sX3Zh", | |||
| "bBgLIAMoCEICEAESGAoMZGNvbXBsZXhfdmFsGAwgAygBQgIQARI8ChNyZXNv", | |||
| "dXJjZV9oYW5kbGVfdmFsGA4gAygLMh8udGVuc29yZmxvdy5SZXNvdXJjZUhh", | |||
| "bmRsZVByb3RvEjcKC3ZhcmlhbnRfdmFsGA8gAygLMiIudGVuc29yZmxvdy5W", | |||
| "YXJpYW50VGVuc29yRGF0YVByb3RvEhYKCnVpbnQzMl92YWwYECADKA1CAhAB", | |||
| "EhYKCnVpbnQ2NF92YWwYESADKARCAhABImcKFlZhcmlhbnRUZW5zb3JEYXRh", | |||
| "UHJvdG8SEQoJdHlwZV9uYW1lGAEgASgJEhAKCG1ldGFkYXRhGAIgASgMEigK", | |||
| "B3RlbnNvcnMYAyADKAsyFy50ZW5zb3JmbG93LlRlbnNvclByb3RvQmwKGG9y", | |||
| "Zy50ZW5zb3JmbG93LmZyYW1ld29ya0IMVGVuc29yUHJvdG9zUAFaPWdpdGh1", | |||
| "Yi5jb20vdGVuc29yZmxvdy90ZW5zb3JmbG93L3RlbnNvcmZsb3cvZ28vY29y", | |||
| "ZS9mcmFtZXdvcmv4AQFiBnByb3RvMw==")); | |||
| descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, | |||
| new pbr::FileDescriptor[] { global::Tensorflow.ResourceHandleReflection.Descriptor, global::Tensorflow.TensorShapeReflection.Descriptor, global::Tensorflow.TypesReflection.Descriptor, }, | |||
| new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] { | |||
| new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.TensorProto), global::Tensorflow.TensorProto.Parser, new[]{ "Dtype", "TensorShape", "VersionNumber", "TensorContent", "HalfVal", "FloatVal", "DoubleVal", "IntVal", "StringVal", "ScomplexVal", "Int64Val", "BoolVal", "DcomplexVal", "ResourceHandleVal", "VariantVal", "Uint32Val", "Uint64Val" }, null, null, null), | |||
| new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.VariantTensorDataProto), global::Tensorflow.VariantTensorDataProto.Parser, new[]{ "TypeName", "Metadata", "Tensors" }, null, null, null) | |||
| })); | |||
| } | |||
| #endregion | |||
| } | |||
| #region Messages | |||
| /// <summary> | |||
| /// Protocol buffer representing a tensor. | |||
| /// </summary> | |||
| public sealed partial class TensorProto : pb::IMessage<TensorProto> { | |||
| private static readonly pb::MessageParser<TensorProto> _parser = new pb::MessageParser<TensorProto>(() => new TensorProto()); | |||
| private pb::UnknownFieldSet _unknownFields; | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public static pb::MessageParser<TensorProto> Parser { get { return _parser; } } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public static pbr::MessageDescriptor Descriptor { | |||
| get { return global::Tensorflow.TensorReflection.Descriptor.MessageTypes[0]; } | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| pbr::MessageDescriptor pb::IMessage.Descriptor { | |||
| get { return Descriptor; } | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public TensorProto() { | |||
| OnConstruction(); | |||
| } | |||
| partial void OnConstruction(); | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public TensorProto(TensorProto other) : this() { | |||
| dtype_ = other.dtype_; | |||
| tensorShape_ = other.tensorShape_ != null ? other.tensorShape_.Clone() : null; | |||
| versionNumber_ = other.versionNumber_; | |||
| tensorContent_ = other.tensorContent_; | |||
| halfVal_ = other.halfVal_.Clone(); | |||
| floatVal_ = other.floatVal_.Clone(); | |||
| doubleVal_ = other.doubleVal_.Clone(); | |||
| intVal_ = other.intVal_.Clone(); | |||
| stringVal_ = other.stringVal_.Clone(); | |||
| scomplexVal_ = other.scomplexVal_.Clone(); | |||
| int64Val_ = other.int64Val_.Clone(); | |||
| boolVal_ = other.boolVal_.Clone(); | |||
| dcomplexVal_ = other.dcomplexVal_.Clone(); | |||
| resourceHandleVal_ = other.resourceHandleVal_.Clone(); | |||
| variantVal_ = other.variantVal_.Clone(); | |||
| uint32Val_ = other.uint32Val_.Clone(); | |||
| uint64Val_ = other.uint64Val_.Clone(); | |||
| _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public TensorProto Clone() { | |||
| return new TensorProto(this); | |||
| } | |||
| /// <summary>Field number for the "dtype" field.</summary> | |||
| public const int DtypeFieldNumber = 1; | |||
| private global::Tensorflow.DataType dtype_ = 0; | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public global::Tensorflow.DataType Dtype { | |||
| get { return dtype_; } | |||
| set { | |||
| dtype_ = value; | |||
| } | |||
| } | |||
| /// <summary>Field number for the "tensor_shape" field.</summary> | |||
| public const int TensorShapeFieldNumber = 2; | |||
| private global::Tensorflow.TensorShapeProto tensorShape_; | |||
| /// <summary> | |||
| /// Shape of the tensor. TODO(touts): sort out the 0-rank issues. | |||
| /// </summary> | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public global::Tensorflow.TensorShapeProto TensorShape { | |||
| get { return tensorShape_; } | |||
| set { | |||
| tensorShape_ = value; | |||
| } | |||
| } | |||
| /// <summary>Field number for the "version_number" field.</summary> | |||
| public const int VersionNumberFieldNumber = 3; | |||
| private int versionNumber_; | |||
| /// <summary> | |||
| /// 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. | |||
| /// </summary> | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public int VersionNumber { | |||
| get { return versionNumber_; } | |||
| set { | |||
| versionNumber_ = value; | |||
| } | |||
| } | |||
| /// <summary>Field number for the "tensor_content" field.</summary> | |||
| public const int TensorContentFieldNumber = 4; | |||
| private pb::ByteString tensorContent_ = pb::ByteString.Empty; | |||
| /// <summary> | |||
| /// 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. | |||
| /// </summary> | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public pb::ByteString TensorContent { | |||
| get { return tensorContent_; } | |||
| set { | |||
| tensorContent_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); | |||
| } | |||
| } | |||
| /// <summary>Field number for the "half_val" field.</summary> | |||
| public const int HalfValFieldNumber = 13; | |||
| private static readonly pb::FieldCodec<int> _repeated_halfVal_codec | |||
| = pb::FieldCodec.ForInt32(106); | |||
| private readonly pbc::RepeatedField<int> halfVal_ = new pbc::RepeatedField<int>(); | |||
| /// <summary> | |||
| /// DT_HALF, DT_BFLOAT16. Note that since protobuf has no int16 type, we'll | |||
| /// have some pointless zero padding for each value here. | |||
| /// </summary> | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public pbc::RepeatedField<int> HalfVal { | |||
| get { return halfVal_; } | |||
| } | |||
| /// <summary>Field number for the "float_val" field.</summary> | |||
| public const int FloatValFieldNumber = 5; | |||
| private static readonly pb::FieldCodec<float> _repeated_floatVal_codec | |||
| = pb::FieldCodec.ForFloat(42); | |||
| private readonly pbc::RepeatedField<float> floatVal_ = new pbc::RepeatedField<float>(); | |||
| /// <summary> | |||
| /// DT_FLOAT. | |||
| /// </summary> | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public pbc::RepeatedField<float> FloatVal { | |||
| get { return floatVal_; } | |||
| } | |||
| /// <summary>Field number for the "double_val" field.</summary> | |||
| public const int DoubleValFieldNumber = 6; | |||
| private static readonly pb::FieldCodec<double> _repeated_doubleVal_codec | |||
| = pb::FieldCodec.ForDouble(50); | |||
| private readonly pbc::RepeatedField<double> doubleVal_ = new pbc::RepeatedField<double>(); | |||
| /// <summary> | |||
| /// DT_DOUBLE. | |||
| /// </summary> | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public pbc::RepeatedField<double> DoubleVal { | |||
| get { return doubleVal_; } | |||
| } | |||
| /// <summary>Field number for the "int_val" field.</summary> | |||
| public const int IntValFieldNumber = 7; | |||
| private static readonly pb::FieldCodec<int> _repeated_intVal_codec | |||
| = pb::FieldCodec.ForInt32(58); | |||
| private readonly pbc::RepeatedField<int> intVal_ = new pbc::RepeatedField<int>(); | |||
| /// <summary> | |||
| /// DT_INT32, DT_INT16, DT_INT8, DT_UINT8. | |||
| /// </summary> | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public pbc::RepeatedField<int> IntVal { | |||
| get { return intVal_; } | |||
| } | |||
| /// <summary>Field number for the "string_val" field.</summary> | |||
| public const int StringValFieldNumber = 8; | |||
| private static readonly pb::FieldCodec<pb::ByteString> _repeated_stringVal_codec | |||
| = pb::FieldCodec.ForBytes(66); | |||
| private readonly pbc::RepeatedField<pb::ByteString> stringVal_ = new pbc::RepeatedField<pb::ByteString>(); | |||
| /// <summary> | |||
| /// DT_STRING | |||
| /// </summary> | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public pbc::RepeatedField<pb::ByteString> StringVal { | |||
| get { return stringVal_; } | |||
| } | |||
| /// <summary>Field number for the "scomplex_val" field.</summary> | |||
| public const int ScomplexValFieldNumber = 9; | |||
| private static readonly pb::FieldCodec<float> _repeated_scomplexVal_codec | |||
| = pb::FieldCodec.ForFloat(74); | |||
| private readonly pbc::RepeatedField<float> scomplexVal_ = new pbc::RepeatedField<float>(); | |||
| /// <summary> | |||
| /// DT_COMPLEX64. scomplex_val(2*i) and scomplex_val(2*i+1) are real | |||
| /// and imaginary parts of i-th single precision complex. | |||
| /// </summary> | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public pbc::RepeatedField<float> ScomplexVal { | |||
| get { return scomplexVal_; } | |||
| } | |||
| /// <summary>Field number for the "int64_val" field.</summary> | |||
| public const int Int64ValFieldNumber = 10; | |||
| private static readonly pb::FieldCodec<long> _repeated_int64Val_codec | |||
| = pb::FieldCodec.ForInt64(82); | |||
| private readonly pbc::RepeatedField<long> int64Val_ = new pbc::RepeatedField<long>(); | |||
| /// <summary> | |||
| /// DT_INT64 | |||
| /// </summary> | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public pbc::RepeatedField<long> Int64Val { | |||
| get { return int64Val_; } | |||
| } | |||
| /// <summary>Field number for the "bool_val" field.</summary> | |||
| public const int BoolValFieldNumber = 11; | |||
| private static readonly pb::FieldCodec<bool> _repeated_boolVal_codec | |||
| = pb::FieldCodec.ForBool(90); | |||
| private readonly pbc::RepeatedField<bool> boolVal_ = new pbc::RepeatedField<bool>(); | |||
| /// <summary> | |||
| /// DT_BOOL | |||
| /// </summary> | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public pbc::RepeatedField<bool> BoolVal { | |||
| get { return boolVal_; } | |||
| } | |||
| /// <summary>Field number for the "dcomplex_val" field.</summary> | |||
| public const int DcomplexValFieldNumber = 12; | |||
| private static readonly pb::FieldCodec<double> _repeated_dcomplexVal_codec | |||
| = pb::FieldCodec.ForDouble(98); | |||
| private readonly pbc::RepeatedField<double> dcomplexVal_ = new pbc::RepeatedField<double>(); | |||
| /// <summary> | |||
| /// DT_COMPLEX128. dcomplex_val(2*i) and dcomplex_val(2*i+1) are real | |||
| /// and imaginary parts of i-th double precision complex. | |||
| /// </summary> | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public pbc::RepeatedField<double> DcomplexVal { | |||
| get { return dcomplexVal_; } | |||
| } | |||
| /// <summary>Field number for the "resource_handle_val" field.</summary> | |||
| public const int ResourceHandleValFieldNumber = 14; | |||
| private static readonly pb::FieldCodec<global::Tensorflow.ResourceHandleProto> _repeated_resourceHandleVal_codec | |||
| = pb::FieldCodec.ForMessage(114, global::Tensorflow.ResourceHandleProto.Parser); | |||
| private readonly pbc::RepeatedField<global::Tensorflow.ResourceHandleProto> resourceHandleVal_ = new pbc::RepeatedField<global::Tensorflow.ResourceHandleProto>(); | |||
| /// <summary> | |||
| /// DT_RESOURCE | |||
| /// </summary> | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public pbc::RepeatedField<global::Tensorflow.ResourceHandleProto> ResourceHandleVal { | |||
| get { return resourceHandleVal_; } | |||
| } | |||
| /// <summary>Field number for the "variant_val" field.</summary> | |||
| public const int VariantValFieldNumber = 15; | |||
| private static readonly pb::FieldCodec<global::Tensorflow.VariantTensorDataProto> _repeated_variantVal_codec | |||
| = pb::FieldCodec.ForMessage(122, global::Tensorflow.VariantTensorDataProto.Parser); | |||
| private readonly pbc::RepeatedField<global::Tensorflow.VariantTensorDataProto> variantVal_ = new pbc::RepeatedField<global::Tensorflow.VariantTensorDataProto>(); | |||
| /// <summary> | |||
| /// DT_VARIANT | |||
| /// </summary> | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public pbc::RepeatedField<global::Tensorflow.VariantTensorDataProto> VariantVal { | |||
| get { return variantVal_; } | |||
| } | |||
| /// <summary>Field number for the "uint32_val" field.</summary> | |||
| public const int Uint32ValFieldNumber = 16; | |||
| private static readonly pb::FieldCodec<uint> _repeated_uint32Val_codec | |||
| = pb::FieldCodec.ForUInt32(130); | |||
| private readonly pbc::RepeatedField<uint> uint32Val_ = new pbc::RepeatedField<uint>(); | |||
| /// <summary> | |||
| /// DT_UINT32 | |||
| /// </summary> | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public pbc::RepeatedField<uint> Uint32Val { | |||
| get { return uint32Val_; } | |||
| } | |||
| /// <summary>Field number for the "uint64_val" field.</summary> | |||
| public const int Uint64ValFieldNumber = 17; | |||
| private static readonly pb::FieldCodec<ulong> _repeated_uint64Val_codec | |||
| = pb::FieldCodec.ForUInt64(138); | |||
| private readonly pbc::RepeatedField<ulong> uint64Val_ = new pbc::RepeatedField<ulong>(); | |||
| /// <summary> | |||
| /// DT_UINT64 | |||
| /// </summary> | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public pbc::RepeatedField<ulong> Uint64Val { | |||
| get { return uint64Val_; } | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public override bool Equals(object other) { | |||
| return Equals(other as TensorProto); | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public bool Equals(TensorProto other) { | |||
| if (ReferenceEquals(other, null)) { | |||
| return false; | |||
| } | |||
| if (ReferenceEquals(other, this)) { | |||
| return true; | |||
| } | |||
| if (Dtype != other.Dtype) return false; | |||
| if (!object.Equals(TensorShape, other.TensorShape)) return false; | |||
| if (VersionNumber != other.VersionNumber) return false; | |||
| if (TensorContent != other.TensorContent) return false; | |||
| if(!halfVal_.Equals(other.halfVal_)) return false; | |||
| if(!floatVal_.Equals(other.floatVal_)) return false; | |||
| if(!doubleVal_.Equals(other.doubleVal_)) return false; | |||
| if(!intVal_.Equals(other.intVal_)) return false; | |||
| if(!stringVal_.Equals(other.stringVal_)) return false; | |||
| if(!scomplexVal_.Equals(other.scomplexVal_)) return false; | |||
| if(!int64Val_.Equals(other.int64Val_)) return false; | |||
| if(!boolVal_.Equals(other.boolVal_)) return false; | |||
| if(!dcomplexVal_.Equals(other.dcomplexVal_)) return false; | |||
| if(!resourceHandleVal_.Equals(other.resourceHandleVal_)) return false; | |||
| if(!variantVal_.Equals(other.variantVal_)) return false; | |||
| if(!uint32Val_.Equals(other.uint32Val_)) return false; | |||
| if(!uint64Val_.Equals(other.uint64Val_)) return false; | |||
| return Equals(_unknownFields, other._unknownFields); | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public override int GetHashCode() { | |||
| int hash = 1; | |||
| if (Dtype != 0) hash ^= Dtype.GetHashCode(); | |||
| if (tensorShape_ != null) hash ^= TensorShape.GetHashCode(); | |||
| if (VersionNumber != 0) hash ^= VersionNumber.GetHashCode(); | |||
| if (TensorContent.Length != 0) hash ^= TensorContent.GetHashCode(); | |||
| hash ^= halfVal_.GetHashCode(); | |||
| hash ^= floatVal_.GetHashCode(); | |||
| hash ^= doubleVal_.GetHashCode(); | |||
| hash ^= intVal_.GetHashCode(); | |||
| hash ^= stringVal_.GetHashCode(); | |||
| hash ^= scomplexVal_.GetHashCode(); | |||
| hash ^= int64Val_.GetHashCode(); | |||
| hash ^= boolVal_.GetHashCode(); | |||
| hash ^= dcomplexVal_.GetHashCode(); | |||
| hash ^= resourceHandleVal_.GetHashCode(); | |||
| hash ^= variantVal_.GetHashCode(); | |||
| hash ^= uint32Val_.GetHashCode(); | |||
| hash ^= uint64Val_.GetHashCode(); | |||
| if (_unknownFields != null) { | |||
| hash ^= _unknownFields.GetHashCode(); | |||
| } | |||
| return hash; | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public override string ToString() { | |||
| return pb::JsonFormatter.ToDiagnosticString(this); | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public void WriteTo(pb::CodedOutputStream output) { | |||
| if (Dtype != 0) { | |||
| output.WriteRawTag(8); | |||
| output.WriteEnum((int) Dtype); | |||
| } | |||
| if (tensorShape_ != null) { | |||
| output.WriteRawTag(18); | |||
| output.WriteMessage(TensorShape); | |||
| } | |||
| if (VersionNumber != 0) { | |||
| output.WriteRawTag(24); | |||
| output.WriteInt32(VersionNumber); | |||
| } | |||
| if (TensorContent.Length != 0) { | |||
| output.WriteRawTag(34); | |||
| output.WriteBytes(TensorContent); | |||
| } | |||
| floatVal_.WriteTo(output, _repeated_floatVal_codec); | |||
| doubleVal_.WriteTo(output, _repeated_doubleVal_codec); | |||
| intVal_.WriteTo(output, _repeated_intVal_codec); | |||
| stringVal_.WriteTo(output, _repeated_stringVal_codec); | |||
| scomplexVal_.WriteTo(output, _repeated_scomplexVal_codec); | |||
| int64Val_.WriteTo(output, _repeated_int64Val_codec); | |||
| boolVal_.WriteTo(output, _repeated_boolVal_codec); | |||
| dcomplexVal_.WriteTo(output, _repeated_dcomplexVal_codec); | |||
| halfVal_.WriteTo(output, _repeated_halfVal_codec); | |||
| resourceHandleVal_.WriteTo(output, _repeated_resourceHandleVal_codec); | |||
| variantVal_.WriteTo(output, _repeated_variantVal_codec); | |||
| uint32Val_.WriteTo(output, _repeated_uint32Val_codec); | |||
| uint64Val_.WriteTo(output, _repeated_uint64Val_codec); | |||
| if (_unknownFields != null) { | |||
| _unknownFields.WriteTo(output); | |||
| } | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public int CalculateSize() { | |||
| int size = 0; | |||
| if (Dtype != 0) { | |||
| size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Dtype); | |||
| } | |||
| if (tensorShape_ != null) { | |||
| size += 1 + pb::CodedOutputStream.ComputeMessageSize(TensorShape); | |||
| } | |||
| if (VersionNumber != 0) { | |||
| size += 1 + pb::CodedOutputStream.ComputeInt32Size(VersionNumber); | |||
| } | |||
| if (TensorContent.Length != 0) { | |||
| size += 1 + pb::CodedOutputStream.ComputeBytesSize(TensorContent); | |||
| } | |||
| size += halfVal_.CalculateSize(_repeated_halfVal_codec); | |||
| size += floatVal_.CalculateSize(_repeated_floatVal_codec); | |||
| size += doubleVal_.CalculateSize(_repeated_doubleVal_codec); | |||
| size += intVal_.CalculateSize(_repeated_intVal_codec); | |||
| size += stringVal_.CalculateSize(_repeated_stringVal_codec); | |||
| size += scomplexVal_.CalculateSize(_repeated_scomplexVal_codec); | |||
| size += int64Val_.CalculateSize(_repeated_int64Val_codec); | |||
| size += boolVal_.CalculateSize(_repeated_boolVal_codec); | |||
| size += dcomplexVal_.CalculateSize(_repeated_dcomplexVal_codec); | |||
| size += resourceHandleVal_.CalculateSize(_repeated_resourceHandleVal_codec); | |||
| size += variantVal_.CalculateSize(_repeated_variantVal_codec); | |||
| size += uint32Val_.CalculateSize(_repeated_uint32Val_codec); | |||
| size += uint64Val_.CalculateSize(_repeated_uint64Val_codec); | |||
| if (_unknownFields != null) { | |||
| size += _unknownFields.CalculateSize(); | |||
| } | |||
| return size; | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public void MergeFrom(TensorProto other) { | |||
| if (other == null) { | |||
| return; | |||
| } | |||
| if (other.Dtype != 0) { | |||
| Dtype = other.Dtype; | |||
| } | |||
| if (other.tensorShape_ != null) { | |||
| if (tensorShape_ == null) { | |||
| tensorShape_ = new global::Tensorflow.TensorShapeProto(); | |||
| } | |||
| TensorShape.MergeFrom(other.TensorShape); | |||
| } | |||
| if (other.VersionNumber != 0) { | |||
| VersionNumber = other.VersionNumber; | |||
| } | |||
| if (other.TensorContent.Length != 0) { | |||
| TensorContent = other.TensorContent; | |||
| } | |||
| halfVal_.Add(other.halfVal_); | |||
| floatVal_.Add(other.floatVal_); | |||
| doubleVal_.Add(other.doubleVal_); | |||
| intVal_.Add(other.intVal_); | |||
| stringVal_.Add(other.stringVal_); | |||
| scomplexVal_.Add(other.scomplexVal_); | |||
| int64Val_.Add(other.int64Val_); | |||
| boolVal_.Add(other.boolVal_); | |||
| dcomplexVal_.Add(other.dcomplexVal_); | |||
| resourceHandleVal_.Add(other.resourceHandleVal_); | |||
| variantVal_.Add(other.variantVal_); | |||
| uint32Val_.Add(other.uint32Val_); | |||
| uint64Val_.Add(other.uint64Val_); | |||
| _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public void MergeFrom(pb::CodedInputStream input) { | |||
| uint tag; | |||
| while ((tag = input.ReadTag()) != 0) { | |||
| switch(tag) { | |||
| default: | |||
| _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); | |||
| break; | |||
| case 8: { | |||
| dtype_ = (global::Tensorflow.DataType) input.ReadEnum(); | |||
| break; | |||
| } | |||
| case 18: { | |||
| if (tensorShape_ == null) { | |||
| tensorShape_ = new global::Tensorflow.TensorShapeProto(); | |||
| } | |||
| input.ReadMessage(tensorShape_); | |||
| break; | |||
| } | |||
| case 24: { | |||
| VersionNumber = input.ReadInt32(); | |||
| break; | |||
| } | |||
| case 34: { | |||
| TensorContent = input.ReadBytes(); | |||
| break; | |||
| } | |||
| case 42: | |||
| case 45: { | |||
| floatVal_.AddEntriesFrom(input, _repeated_floatVal_codec); | |||
| break; | |||
| } | |||
| case 50: | |||
| case 49: { | |||
| doubleVal_.AddEntriesFrom(input, _repeated_doubleVal_codec); | |||
| break; | |||
| } | |||
| case 58: | |||
| case 56: { | |||
| intVal_.AddEntriesFrom(input, _repeated_intVal_codec); | |||
| break; | |||
| } | |||
| case 66: { | |||
| stringVal_.AddEntriesFrom(input, _repeated_stringVal_codec); | |||
| break; | |||
| } | |||
| case 74: | |||
| case 77: { | |||
| scomplexVal_.AddEntriesFrom(input, _repeated_scomplexVal_codec); | |||
| break; | |||
| } | |||
| case 82: | |||
| case 80: { | |||
| int64Val_.AddEntriesFrom(input, _repeated_int64Val_codec); | |||
| break; | |||
| } | |||
| case 90: | |||
| case 88: { | |||
| boolVal_.AddEntriesFrom(input, _repeated_boolVal_codec); | |||
| break; | |||
| } | |||
| case 98: | |||
| case 97: { | |||
| dcomplexVal_.AddEntriesFrom(input, _repeated_dcomplexVal_codec); | |||
| break; | |||
| } | |||
| case 106: | |||
| case 104: { | |||
| halfVal_.AddEntriesFrom(input, _repeated_halfVal_codec); | |||
| break; | |||
| } | |||
| case 114: { | |||
| resourceHandleVal_.AddEntriesFrom(input, _repeated_resourceHandleVal_codec); | |||
| break; | |||
| } | |||
| case 122: { | |||
| variantVal_.AddEntriesFrom(input, _repeated_variantVal_codec); | |||
| break; | |||
| } | |||
| case 130: | |||
| case 128: { | |||
| uint32Val_.AddEntriesFrom(input, _repeated_uint32Val_codec); | |||
| break; | |||
| } | |||
| case 138: | |||
| case 136: { | |||
| uint64Val_.AddEntriesFrom(input, _repeated_uint64Val_codec); | |||
| break; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| /// <summary> | |||
| /// Protocol buffer representing the serialization format of DT_VARIANT tensors. | |||
| /// </summary> | |||
| public sealed partial class VariantTensorDataProto : pb::IMessage<VariantTensorDataProto> { | |||
| private static readonly pb::MessageParser<VariantTensorDataProto> _parser = new pb::MessageParser<VariantTensorDataProto>(() => new VariantTensorDataProto()); | |||
| private pb::UnknownFieldSet _unknownFields; | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public static pb::MessageParser<VariantTensorDataProto> Parser { get { return _parser; } } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public static pbr::MessageDescriptor Descriptor { | |||
| get { return global::Tensorflow.TensorReflection.Descriptor.MessageTypes[1]; } | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| pbr::MessageDescriptor pb::IMessage.Descriptor { | |||
| get { return Descriptor; } | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public VariantTensorDataProto() { | |||
| OnConstruction(); | |||
| } | |||
| partial void OnConstruction(); | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public VariantTensorDataProto(VariantTensorDataProto other) : this() { | |||
| typeName_ = other.typeName_; | |||
| metadata_ = other.metadata_; | |||
| tensors_ = other.tensors_.Clone(); | |||
| _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public VariantTensorDataProto Clone() { | |||
| return new VariantTensorDataProto(this); | |||
| } | |||
| /// <summary>Field number for the "type_name" field.</summary> | |||
| public const int TypeNameFieldNumber = 1; | |||
| private string typeName_ = ""; | |||
| /// <summary> | |||
| /// Name of the type of objects being serialized. | |||
| /// </summary> | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public string TypeName { | |||
| get { return typeName_; } | |||
| set { | |||
| typeName_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); | |||
| } | |||
| } | |||
| /// <summary>Field number for the "metadata" field.</summary> | |||
| public const int MetadataFieldNumber = 2; | |||
| private pb::ByteString metadata_ = pb::ByteString.Empty; | |||
| /// <summary> | |||
| /// Portions of the object that are not Tensors. | |||
| /// </summary> | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public pb::ByteString Metadata { | |||
| get { return metadata_; } | |||
| set { | |||
| metadata_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); | |||
| } | |||
| } | |||
| /// <summary>Field number for the "tensors" field.</summary> | |||
| public const int TensorsFieldNumber = 3; | |||
| private static readonly pb::FieldCodec<global::Tensorflow.TensorProto> _repeated_tensors_codec | |||
| = pb::FieldCodec.ForMessage(26, global::Tensorflow.TensorProto.Parser); | |||
| private readonly pbc::RepeatedField<global::Tensorflow.TensorProto> tensors_ = new pbc::RepeatedField<global::Tensorflow.TensorProto>(); | |||
| /// <summary> | |||
| /// Tensors contained within objects being serialized. | |||
| /// </summary> | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public pbc::RepeatedField<global::Tensorflow.TensorProto> Tensors { | |||
| get { return tensors_; } | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public override bool Equals(object other) { | |||
| return Equals(other as VariantTensorDataProto); | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public bool Equals(VariantTensorDataProto other) { | |||
| if (ReferenceEquals(other, null)) { | |||
| return false; | |||
| } | |||
| if (ReferenceEquals(other, this)) { | |||
| return true; | |||
| } | |||
| if (TypeName != other.TypeName) return false; | |||
| if (Metadata != other.Metadata) return false; | |||
| if(!tensors_.Equals(other.tensors_)) return false; | |||
| return Equals(_unknownFields, other._unknownFields); | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public override int GetHashCode() { | |||
| int hash = 1; | |||
| if (TypeName.Length != 0) hash ^= TypeName.GetHashCode(); | |||
| if (Metadata.Length != 0) hash ^= Metadata.GetHashCode(); | |||
| hash ^= tensors_.GetHashCode(); | |||
| if (_unknownFields != null) { | |||
| hash ^= _unknownFields.GetHashCode(); | |||
| } | |||
| return hash; | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public override string ToString() { | |||
| return pb::JsonFormatter.ToDiagnosticString(this); | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public void WriteTo(pb::CodedOutputStream output) { | |||
| if (TypeName.Length != 0) { | |||
| output.WriteRawTag(10); | |||
| output.WriteString(TypeName); | |||
| } | |||
| if (Metadata.Length != 0) { | |||
| output.WriteRawTag(18); | |||
| output.WriteBytes(Metadata); | |||
| } | |||
| tensors_.WriteTo(output, _repeated_tensors_codec); | |||
| if (_unknownFields != null) { | |||
| _unknownFields.WriteTo(output); | |||
| } | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public int CalculateSize() { | |||
| int size = 0; | |||
| if (TypeName.Length != 0) { | |||
| size += 1 + pb::CodedOutputStream.ComputeStringSize(TypeName); | |||
| } | |||
| if (Metadata.Length != 0) { | |||
| size += 1 + pb::CodedOutputStream.ComputeBytesSize(Metadata); | |||
| } | |||
| size += tensors_.CalculateSize(_repeated_tensors_codec); | |||
| if (_unknownFields != null) { | |||
| size += _unknownFields.CalculateSize(); | |||
| } | |||
| return size; | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public void MergeFrom(VariantTensorDataProto other) { | |||
| if (other == null) { | |||
| return; | |||
| } | |||
| if (other.TypeName.Length != 0) { | |||
| TypeName = other.TypeName; | |||
| } | |||
| if (other.Metadata.Length != 0) { | |||
| Metadata = other.Metadata; | |||
| } | |||
| tensors_.Add(other.tensors_); | |||
| _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public void MergeFrom(pb::CodedInputStream input) { | |||
| uint tag; | |||
| while ((tag = input.ReadTag()) != 0) { | |||
| switch(tag) { | |||
| default: | |||
| _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); | |||
| break; | |||
| case 10: { | |||
| TypeName = input.ReadString(); | |||
| break; | |||
| } | |||
| case 18: { | |||
| Metadata = input.ReadBytes(); | |||
| break; | |||
| } | |||
| case 26: { | |||
| tensors_.AddEntriesFrom(input, _repeated_tensors_codec); | |||
| break; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| #endregion | |||
| } | |||
| #endregion Designer generated code | |||
| @@ -0,0 +1,397 @@ | |||
| // <auto-generated> | |||
| // Generated by the protocol buffer compiler. DO NOT EDIT! | |||
| // source: tensor_shape.proto | |||
| // </auto-generated> | |||
| #pragma warning disable 1591, 0612, 3021 | |||
| #region Designer generated code | |||
| using pb = global::Google.Protobuf; | |||
| using pbc = global::Google.Protobuf.Collections; | |||
| using pbr = global::Google.Protobuf.Reflection; | |||
| using scg = global::System.Collections.Generic; | |||
| namespace Tensorflow { | |||
| /// <summary>Holder for reflection information generated from tensor_shape.proto</summary> | |||
| public static partial class TensorShapeReflection { | |||
| #region Descriptor | |||
| /// <summary>File descriptor for tensor_shape.proto</summary> | |||
| public static pbr::FileDescriptor Descriptor { | |||
| get { return descriptor; } | |||
| } | |||
| private static pbr::FileDescriptor descriptor; | |||
| static TensorShapeReflection() { | |||
| byte[] descriptorData = global::System.Convert.FromBase64String( | |||
| string.Concat( | |||
| "ChJ0ZW5zb3Jfc2hhcGUucHJvdG8SCnRlbnNvcmZsb3ciegoQVGVuc29yU2hh", | |||
| "cGVQcm90bxItCgNkaW0YAiADKAsyIC50ZW5zb3JmbG93LlRlbnNvclNoYXBl", | |||
| "UHJvdG8uRGltEhQKDHVua25vd25fcmFuaxgDIAEoCBohCgNEaW0SDAoEc2l6", | |||
| "ZRgBIAEoAxIMCgRuYW1lGAIgASgJQnEKGG9yZy50ZW5zb3JmbG93LmZyYW1l", | |||
| "d29ya0IRVGVuc29yU2hhcGVQcm90b3NQAVo9Z2l0aHViLmNvbS90ZW5zb3Jm", | |||
| "bG93L3RlbnNvcmZsb3cvdGVuc29yZmxvdy9nby9jb3JlL2ZyYW1ld29ya/gB", | |||
| "AWIGcHJvdG8z")); | |||
| descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, | |||
| new pbr::FileDescriptor[] { }, | |||
| new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] { | |||
| new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.TensorShapeProto), global::Tensorflow.TensorShapeProto.Parser, new[]{ "Dim", "UnknownRank" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.TensorShapeProto.Types.Dim), global::Tensorflow.TensorShapeProto.Types.Dim.Parser, new[]{ "Size", "Name" }, null, null, null)}) | |||
| })); | |||
| } | |||
| #endregion | |||
| } | |||
| #region Messages | |||
| /// <summary> | |||
| /// Dimensions of a tensor. | |||
| /// </summary> | |||
| public sealed partial class TensorShapeProto : pb::IMessage<TensorShapeProto> { | |||
| private static readonly pb::MessageParser<TensorShapeProto> _parser = new pb::MessageParser<TensorShapeProto>(() => new TensorShapeProto()); | |||
| private pb::UnknownFieldSet _unknownFields; | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public static pb::MessageParser<TensorShapeProto> Parser { get { return _parser; } } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public static pbr::MessageDescriptor Descriptor { | |||
| get { return global::Tensorflow.TensorShapeReflection.Descriptor.MessageTypes[0]; } | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| pbr::MessageDescriptor pb::IMessage.Descriptor { | |||
| get { return Descriptor; } | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public TensorShapeProto() { | |||
| OnConstruction(); | |||
| } | |||
| partial void OnConstruction(); | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public TensorShapeProto(TensorShapeProto other) : this() { | |||
| dim_ = other.dim_.Clone(); | |||
| unknownRank_ = other.unknownRank_; | |||
| _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public TensorShapeProto Clone() { | |||
| return new TensorShapeProto(this); | |||
| } | |||
| /// <summary>Field number for the "dim" field.</summary> | |||
| public const int DimFieldNumber = 2; | |||
| private static readonly pb::FieldCodec<global::Tensorflow.TensorShapeProto.Types.Dim> _repeated_dim_codec | |||
| = pb::FieldCodec.ForMessage(18, global::Tensorflow.TensorShapeProto.Types.Dim.Parser); | |||
| private readonly pbc::RepeatedField<global::Tensorflow.TensorShapeProto.Types.Dim> dim_ = new pbc::RepeatedField<global::Tensorflow.TensorShapeProto.Types.Dim>(); | |||
| /// <summary> | |||
| /// Dimensions of the tensor, such as {"input", 30}, {"output", 40} | |||
| /// for a 30 x 40 2D tensor. If an entry has size -1, this | |||
| /// corresponds to a dimension of unknown size. The names are | |||
| /// optional. | |||
| /// | |||
| /// The order of entries in "dim" matters: It indicates the layout of the | |||
| /// values in the tensor in-memory representation. | |||
| /// | |||
| /// The first entry in "dim" is the outermost dimension used to layout the | |||
| /// values, the last entry is the innermost dimension. This matches the | |||
| /// in-memory layout of RowMajor Eigen tensors. | |||
| /// | |||
| /// If "dim.size()" > 0, "unknown_rank" must be false. | |||
| /// </summary> | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public pbc::RepeatedField<global::Tensorflow.TensorShapeProto.Types.Dim> Dim { | |||
| get { return dim_; } | |||
| } | |||
| /// <summary>Field number for the "unknown_rank" field.</summary> | |||
| public const int UnknownRankFieldNumber = 3; | |||
| private bool unknownRank_; | |||
| /// <summary> | |||
| /// If true, the number of dimensions in the shape is unknown. | |||
| /// | |||
| /// If true, "dim.size()" must be 0. | |||
| /// </summary> | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public bool UnknownRank { | |||
| get { return unknownRank_; } | |||
| set { | |||
| unknownRank_ = value; | |||
| } | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public override bool Equals(object other) { | |||
| return Equals(other as TensorShapeProto); | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public bool Equals(TensorShapeProto other) { | |||
| if (ReferenceEquals(other, null)) { | |||
| return false; | |||
| } | |||
| if (ReferenceEquals(other, this)) { | |||
| return true; | |||
| } | |||
| if(!dim_.Equals(other.dim_)) return false; | |||
| if (UnknownRank != other.UnknownRank) return false; | |||
| return Equals(_unknownFields, other._unknownFields); | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public override int GetHashCode() { | |||
| int hash = 1; | |||
| hash ^= dim_.GetHashCode(); | |||
| if (UnknownRank != false) hash ^= UnknownRank.GetHashCode(); | |||
| if (_unknownFields != null) { | |||
| hash ^= _unknownFields.GetHashCode(); | |||
| } | |||
| return hash; | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public override string ToString() { | |||
| return pb::JsonFormatter.ToDiagnosticString(this); | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public void WriteTo(pb::CodedOutputStream output) { | |||
| dim_.WriteTo(output, _repeated_dim_codec); | |||
| if (UnknownRank != false) { | |||
| output.WriteRawTag(24); | |||
| output.WriteBool(UnknownRank); | |||
| } | |||
| if (_unknownFields != null) { | |||
| _unknownFields.WriteTo(output); | |||
| } | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public int CalculateSize() { | |||
| int size = 0; | |||
| size += dim_.CalculateSize(_repeated_dim_codec); | |||
| if (UnknownRank != false) { | |||
| size += 1 + 1; | |||
| } | |||
| if (_unknownFields != null) { | |||
| size += _unknownFields.CalculateSize(); | |||
| } | |||
| return size; | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public void MergeFrom(TensorShapeProto other) { | |||
| if (other == null) { | |||
| return; | |||
| } | |||
| dim_.Add(other.dim_); | |||
| if (other.UnknownRank != false) { | |||
| UnknownRank = other.UnknownRank; | |||
| } | |||
| _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public void MergeFrom(pb::CodedInputStream input) { | |||
| uint tag; | |||
| while ((tag = input.ReadTag()) != 0) { | |||
| switch(tag) { | |||
| default: | |||
| _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); | |||
| break; | |||
| case 18: { | |||
| dim_.AddEntriesFrom(input, _repeated_dim_codec); | |||
| break; | |||
| } | |||
| case 24: { | |||
| UnknownRank = input.ReadBool(); | |||
| break; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| #region Nested types | |||
| /// <summary>Container for nested types declared in the TensorShapeProto message type.</summary> | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public static partial class Types { | |||
| /// <summary> | |||
| /// One dimension of the tensor. | |||
| /// </summary> | |||
| public sealed partial class Dim : pb::IMessage<Dim> { | |||
| private static readonly pb::MessageParser<Dim> _parser = new pb::MessageParser<Dim>(() => new Dim()); | |||
| private pb::UnknownFieldSet _unknownFields; | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public static pb::MessageParser<Dim> Parser { get { return _parser; } } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public static pbr::MessageDescriptor Descriptor { | |||
| get { return global::Tensorflow.TensorShapeProto.Descriptor.NestedTypes[0]; } | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| pbr::MessageDescriptor pb::IMessage.Descriptor { | |||
| get { return Descriptor; } | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public Dim() { | |||
| OnConstruction(); | |||
| } | |||
| partial void OnConstruction(); | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public Dim(Dim other) : this() { | |||
| size_ = other.size_; | |||
| name_ = other.name_; | |||
| _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public Dim Clone() { | |||
| return new Dim(this); | |||
| } | |||
| /// <summary>Field number for the "size" field.</summary> | |||
| public const int SizeFieldNumber = 1; | |||
| private long size_; | |||
| /// <summary> | |||
| /// Size of the tensor in that dimension. | |||
| /// This value must be >= -1, but values of -1 are reserved for "unknown" | |||
| /// shapes (values of -1 mean "unknown" dimension). Certain wrappers | |||
| /// that work with TensorShapeProto may fail at runtime when deserializing | |||
| /// a TensorShapeProto containing a dim value of -1. | |||
| /// </summary> | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public long Size { | |||
| get { return size_; } | |||
| set { | |||
| size_ = value; | |||
| } | |||
| } | |||
| /// <summary>Field number for the "name" field.</summary> | |||
| public const int NameFieldNumber = 2; | |||
| private string name_ = ""; | |||
| /// <summary> | |||
| /// Optional name of the tensor dimension. | |||
| /// </summary> | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public string Name { | |||
| get { return name_; } | |||
| set { | |||
| name_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); | |||
| } | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public override bool Equals(object other) { | |||
| return Equals(other as Dim); | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public bool Equals(Dim other) { | |||
| if (ReferenceEquals(other, null)) { | |||
| return false; | |||
| } | |||
| if (ReferenceEquals(other, this)) { | |||
| return true; | |||
| } | |||
| if (Size != other.Size) return false; | |||
| if (Name != other.Name) return false; | |||
| return Equals(_unknownFields, other._unknownFields); | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public override int GetHashCode() { | |||
| int hash = 1; | |||
| if (Size != 0L) hash ^= Size.GetHashCode(); | |||
| if (Name.Length != 0) hash ^= Name.GetHashCode(); | |||
| if (_unknownFields != null) { | |||
| hash ^= _unknownFields.GetHashCode(); | |||
| } | |||
| return hash; | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public override string ToString() { | |||
| return pb::JsonFormatter.ToDiagnosticString(this); | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public void WriteTo(pb::CodedOutputStream output) { | |||
| if (Size != 0L) { | |||
| output.WriteRawTag(8); | |||
| output.WriteInt64(Size); | |||
| } | |||
| if (Name.Length != 0) { | |||
| output.WriteRawTag(18); | |||
| output.WriteString(Name); | |||
| } | |||
| if (_unknownFields != null) { | |||
| _unknownFields.WriteTo(output); | |||
| } | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public int CalculateSize() { | |||
| int size = 0; | |||
| if (Size != 0L) { | |||
| size += 1 + pb::CodedOutputStream.ComputeInt64Size(Size); | |||
| } | |||
| if (Name.Length != 0) { | |||
| size += 1 + pb::CodedOutputStream.ComputeStringSize(Name); | |||
| } | |||
| if (_unknownFields != null) { | |||
| size += _unknownFields.CalculateSize(); | |||
| } | |||
| return size; | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public void MergeFrom(Dim other) { | |||
| if (other == null) { | |||
| return; | |||
| } | |||
| if (other.Size != 0L) { | |||
| Size = other.Size; | |||
| } | |||
| if (other.Name.Length != 0) { | |||
| Name = other.Name; | |||
| } | |||
| _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); | |||
| } | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute] | |||
| public void MergeFrom(pb::CodedInputStream input) { | |||
| uint tag; | |||
| while ((tag = input.ReadTag()) != 0) { | |||
| switch(tag) { | |||
| default: | |||
| _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); | |||
| break; | |||
| case 8: { | |||
| Size = input.ReadInt64(); | |||
| break; | |||
| } | |||
| case 18: { | |||
| Name = input.ReadString(); | |||
| break; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| #endregion | |||
| } | |||
| #endregion | |||
| } | |||
| #endregion Designer generated code | |||
| @@ -0,0 +1,153 @@ | |||
| // <auto-generated> | |||
| // Generated by the protocol buffer compiler. DO NOT EDIT! | |||
| // source: types.proto | |||
| // </auto-generated> | |||
| #pragma warning disable 1591, 0612, 3021 | |||
| #region Designer generated code | |||
| using pb = global::Google.Protobuf; | |||
| using pbc = global::Google.Protobuf.Collections; | |||
| using pbr = global::Google.Protobuf.Reflection; | |||
| using scg = global::System.Collections.Generic; | |||
| namespace Tensorflow { | |||
| /// <summary>Holder for reflection information generated from types.proto</summary> | |||
| public static partial class TypesReflection { | |||
| #region Descriptor | |||
| /// <summary>File descriptor for types.proto</summary> | |||
| public static pbr::FileDescriptor Descriptor { | |||
| get { return descriptor; } | |||
| } | |||
| private static pbr::FileDescriptor descriptor; | |||
| static TypesReflection() { | |||
| byte[] descriptorData = global::System.Convert.FromBase64String( | |||
| string.Concat( | |||
| "Cgt0eXBlcy5wcm90bxIKdGVuc29yZmxvdyqqBgoIRGF0YVR5cGUSDgoKRFRf", | |||
| "SU5WQUxJRBAAEgwKCERUX0ZMT0FUEAESDQoJRFRfRE9VQkxFEAISDAoIRFRf", | |||
| "SU5UMzIQAxIMCghEVF9VSU5UOBAEEgwKCERUX0lOVDE2EAUSCwoHRFRfSU5U", | |||
| "OBAGEg0KCURUX1NUUklORxAHEhAKDERUX0NPTVBMRVg2NBAIEgwKCERUX0lO", | |||
| "VDY0EAkSCwoHRFRfQk9PTBAKEgwKCERUX1FJTlQ4EAsSDQoJRFRfUVVJTlQ4", | |||
| "EAwSDQoJRFRfUUlOVDMyEA0SDwoLRFRfQkZMT0FUMTYQDhINCglEVF9RSU5U", | |||
| "MTYQDxIOCgpEVF9RVUlOVDE2EBASDQoJRFRfVUlOVDE2EBESEQoNRFRfQ09N", | |||
| "UExFWDEyOBASEgsKB0RUX0hBTEYQExIPCgtEVF9SRVNPVVJDRRAUEg4KCkRU", | |||
| "X1ZBUklBTlQQFRINCglEVF9VSU5UMzIQFhINCglEVF9VSU5UNjQQFxIQCgxE", | |||
| "VF9GTE9BVF9SRUYQZRIRCg1EVF9ET1VCTEVfUkVGEGYSEAoMRFRfSU5UMzJf", | |||
| "UkVGEGcSEAoMRFRfVUlOVDhfUkVGEGgSEAoMRFRfSU5UMTZfUkVGEGkSDwoL", | |||
| "RFRfSU5UOF9SRUYQahIRCg1EVF9TVFJJTkdfUkVGEGsSFAoQRFRfQ09NUExF", | |||
| "WDY0X1JFRhBsEhAKDERUX0lOVDY0X1JFRhBtEg8KC0RUX0JPT0xfUkVGEG4S", | |||
| "EAoMRFRfUUlOVDhfUkVGEG8SEQoNRFRfUVVJTlQ4X1JFRhBwEhEKDURUX1FJ", | |||
| "TlQzMl9SRUYQcRITCg9EVF9CRkxPQVQxNl9SRUYQchIRCg1EVF9RSU5UMTZf", | |||
| "UkVGEHMSEgoORFRfUVVJTlQxNl9SRUYQdBIRCg1EVF9VSU5UMTZfUkVGEHUS", | |||
| "FQoRRFRfQ09NUExFWDEyOF9SRUYQdhIPCgtEVF9IQUxGX1JFRhB3EhMKD0RU", | |||
| "X1JFU09VUkNFX1JFRhB4EhIKDkRUX1ZBUklBTlRfUkVGEHkSEQoNRFRfVUlO", | |||
| "VDMyX1JFRhB6EhEKDURUX1VJTlQ2NF9SRUYQe0JrChhvcmcudGVuc29yZmxv", | |||
| "dy5mcmFtZXdvcmtCC1R5cGVzUHJvdG9zUAFaPWdpdGh1Yi5jb20vdGVuc29y", | |||
| "Zmxvdy90ZW5zb3JmbG93L3RlbnNvcmZsb3cvZ28vY29yZS9mcmFtZXdvcmv4", | |||
| "AQFiBnByb3RvMw==")); | |||
| descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, | |||
| new pbr::FileDescriptor[] { }, | |||
| new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Tensorflow.DataType), }, null)); | |||
| } | |||
| #endregion | |||
| } | |||
| #region Enums | |||
| /// <summary> | |||
| /// LINT.IfChange | |||
| /// </summary> | |||
| public enum DataType { | |||
| /// <summary> | |||
| /// Not a legal value for DataType. Used to indicate a DataType field | |||
| /// has not been set. | |||
| /// </summary> | |||
| [pbr::OriginalName("DT_INVALID")] DtInvalid = 0, | |||
| /// <summary> | |||
| /// Data types that all computation devices are expected to be | |||
| /// capable to support. | |||
| /// </summary> | |||
| [pbr::OriginalName("DT_FLOAT")] DtFloat = 1, | |||
| [pbr::OriginalName("DT_DOUBLE")] DtDouble = 2, | |||
| [pbr::OriginalName("DT_INT32")] DtInt32 = 3, | |||
| [pbr::OriginalName("DT_UINT8")] DtUint8 = 4, | |||
| [pbr::OriginalName("DT_INT16")] DtInt16 = 5, | |||
| [pbr::OriginalName("DT_INT8")] DtInt8 = 6, | |||
| [pbr::OriginalName("DT_STRING")] DtString = 7, | |||
| /// <summary> | |||
| /// Single-precision complex | |||
| /// </summary> | |||
| [pbr::OriginalName("DT_COMPLEX64")] DtComplex64 = 8, | |||
| [pbr::OriginalName("DT_INT64")] DtInt64 = 9, | |||
| [pbr::OriginalName("DT_BOOL")] DtBool = 10, | |||
| /// <summary> | |||
| /// Quantized int8 | |||
| /// </summary> | |||
| [pbr::OriginalName("DT_QINT8")] DtQint8 = 11, | |||
| /// <summary> | |||
| /// Quantized uint8 | |||
| /// </summary> | |||
| [pbr::OriginalName("DT_QUINT8")] DtQuint8 = 12, | |||
| /// <summary> | |||
| /// Quantized int32 | |||
| /// </summary> | |||
| [pbr::OriginalName("DT_QINT32")] DtQint32 = 13, | |||
| /// <summary> | |||
| /// Float32 truncated to 16 bits. Only for cast ops. | |||
| /// </summary> | |||
| [pbr::OriginalName("DT_BFLOAT16")] DtBfloat16 = 14, | |||
| /// <summary> | |||
| /// Quantized int16 | |||
| /// </summary> | |||
| [pbr::OriginalName("DT_QINT16")] DtQint16 = 15, | |||
| /// <summary> | |||
| /// Quantized uint16 | |||
| /// </summary> | |||
| [pbr::OriginalName("DT_QUINT16")] DtQuint16 = 16, | |||
| [pbr::OriginalName("DT_UINT16")] DtUint16 = 17, | |||
| /// <summary> | |||
| /// Double-precision complex | |||
| /// </summary> | |||
| [pbr::OriginalName("DT_COMPLEX128")] DtComplex128 = 18, | |||
| [pbr::OriginalName("DT_HALF")] DtHalf = 19, | |||
| [pbr::OriginalName("DT_RESOURCE")] DtResource = 20, | |||
| /// <summary> | |||
| /// Arbitrary C++ data types | |||
| /// </summary> | |||
| [pbr::OriginalName("DT_VARIANT")] DtVariant = 21, | |||
| [pbr::OriginalName("DT_UINT32")] DtUint32 = 22, | |||
| [pbr::OriginalName("DT_UINT64")] DtUint64 = 23, | |||
| /// <summary> | |||
| /// Do not use! These are only for parameters. Every enum above | |||
| /// should have a corresponding value below (verified by types_test). | |||
| /// </summary> | |||
| [pbr::OriginalName("DT_FLOAT_REF")] DtFloatRef = 101, | |||
| [pbr::OriginalName("DT_DOUBLE_REF")] DtDoubleRef = 102, | |||
| [pbr::OriginalName("DT_INT32_REF")] DtInt32Ref = 103, | |||
| [pbr::OriginalName("DT_UINT8_REF")] DtUint8Ref = 104, | |||
| [pbr::OriginalName("DT_INT16_REF")] DtInt16Ref = 105, | |||
| [pbr::OriginalName("DT_INT8_REF")] DtInt8Ref = 106, | |||
| [pbr::OriginalName("DT_STRING_REF")] DtStringRef = 107, | |||
| [pbr::OriginalName("DT_COMPLEX64_REF")] DtComplex64Ref = 108, | |||
| [pbr::OriginalName("DT_INT64_REF")] DtInt64Ref = 109, | |||
| [pbr::OriginalName("DT_BOOL_REF")] DtBoolRef = 110, | |||
| [pbr::OriginalName("DT_QINT8_REF")] DtQint8Ref = 111, | |||
| [pbr::OriginalName("DT_QUINT8_REF")] DtQuint8Ref = 112, | |||
| [pbr::OriginalName("DT_QINT32_REF")] DtQint32Ref = 113, | |||
| [pbr::OriginalName("DT_BFLOAT16_REF")] DtBfloat16Ref = 114, | |||
| [pbr::OriginalName("DT_QINT16_REF")] DtQint16Ref = 115, | |||
| [pbr::OriginalName("DT_QUINT16_REF")] DtQuint16Ref = 116, | |||
| [pbr::OriginalName("DT_UINT16_REF")] DtUint16Ref = 117, | |||
| [pbr::OriginalName("DT_COMPLEX128_REF")] DtComplex128Ref = 118, | |||
| [pbr::OriginalName("DT_HALF_REF")] DtHalfRef = 119, | |||
| [pbr::OriginalName("DT_RESOURCE_REF")] DtResourceRef = 120, | |||
| [pbr::OriginalName("DT_VARIANT_REF")] DtVariantRef = 121, | |||
| [pbr::OriginalName("DT_UINT32_REF")] DtUint32Ref = 122, | |||
| [pbr::OriginalName("DT_UINT64_REF")] DtUint64Ref = 123, | |||
| } | |||
| #endregion | |||
| } | |||
| #endregion Designer generated code | |||
| @@ -10,6 +10,8 @@ using TF_Operation = System.IntPtr; | |||
| using TF_Status = System.IntPtr; | |||
| using TF_Tensor = System.IntPtr; | |||
| using TF_DataType = Tensorflow.DataType; | |||
| using static TensorFlowNET.Core.Tensorflow; | |||
| namespace TensorFlowNET.Core | |||
| @@ -4,6 +4,7 @@ using System.Runtime.InteropServices; | |||
| using System.Text; | |||
| using System.Threading; | |||
| using tf = TensorFlowNET.Core.Tensorflow; | |||
| using TF_DataType = Tensorflow.DataType; | |||
| namespace TensorFlowNET.Core | |||
| { | |||
| @@ -26,8 +27,8 @@ namespace TensorFlowNET.Core | |||
| case double value: | |||
| var v = (double*)Marshal.AllocHGlobal(sizeof(double)); | |||
| *v = value; | |||
| tensor = c_api.TF_NewTensor(TF_DataType.TF_DOUBLE, 0, 0, data: (IntPtr)v, len: (UIntPtr)sizeof(double), deallocator: Tensorflow.FreeTensorDataDelegate, deallocator_arg: IntPtr.Zero); | |||
| c_api.TF_SetAttrType(op_desc, "dtype", TF_DataType.TF_DOUBLE); | |||
| tensor = c_api.TF_NewTensor(TF_DataType.DtDouble, 0, 0, data: (IntPtr)v, len: (UIntPtr)sizeof(double), deallocator: Tensorflow.FreeTensorDataDelegate, deallocator_arg: IntPtr.Zero); | |||
| c_api.TF_SetAttrType(op_desc, "dtype", TF_DataType.DtDouble); | |||
| break; | |||
| } | |||