From 07c7835a036d4963a5a5b33aca94f29adb4b7a7d Mon Sep 17 00:00:00 2001 From: Oceania2018 Date: Sun, 9 May 2021 15:52:39 -0500 Subject: [PATCH] Update protobuf align with tf 2.5.0. --- src/TensorFlowNET.Core/Protobuf/Cluster.cs | 9 +- src/TensorFlowNET.Core/Protobuf/Config.cs | 204 ++++-- .../Protobuf/ControlFlow.cs | 8 +- .../Protobuf/CppShapeInference.cs | 58 +- src/TensorFlowNET.Core/Protobuf/Debug.cs | 8 +- src/TensorFlowNET.Core/Protobuf/Event.cs | 72 +- src/TensorFlowNET.Core/Protobuf/Gen.bat | 4 + src/TensorFlowNET.Core/Protobuf/Graph.cs | 2 - src/TensorFlowNET.Core/Protobuf/MetaGraph.cs | 14 +- src/TensorFlowNET.Core/Protobuf/OpDef.cs | 73 +- .../Protobuf/RewriterConfig.cs | 253 +++++-- src/TensorFlowNET.Core/Protobuf/SavedModel.cs | 8 +- .../Protobuf/SavedObjectGraph.cs | 202 +++++- src/TensorFlowNET.Core/Protobuf/Saver.cs | 8 +- src/TensorFlowNET.Core/Protobuf/Struct.cs | 10 +- src/TensorFlowNET.Core/Protobuf/Summary.cs | 3 +- .../Protobuf/TrackableObjectGraph.cs | 5 +- src/TensorFlowNET.Core/Protobuf/Types.cs | 32 +- .../Protobuf/VerifierConfig.cs | 9 +- .../Protobuf/ProjectorConfig.cs | 669 ++++++++++++++++++ .../Protobuf/SavedMetadata.cs | 447 ++++++++++++ src/TensorFlowNET.Keras/Protobuf/Versions.cs | 248 +++++++ 22 files changed, 2114 insertions(+), 232 deletions(-) create mode 100644 src/TensorFlowNET.Keras/Protobuf/ProjectorConfig.cs create mode 100644 src/TensorFlowNET.Keras/Protobuf/SavedMetadata.cs create mode 100644 src/TensorFlowNET.Keras/Protobuf/Versions.cs diff --git a/src/TensorFlowNET.Core/Protobuf/Cluster.cs b/src/TensorFlowNET.Core/Protobuf/Cluster.cs index e75123c0..ca645ec1 100644 --- a/src/TensorFlowNET.Core/Protobuf/Cluster.cs +++ b/src/TensorFlowNET.Core/Protobuf/Cluster.cs @@ -28,10 +28,11 @@ namespace Tensorflow { "c29yZmxvdyJyCgZKb2JEZWYSDAoEbmFtZRgBIAEoCRIsCgV0YXNrcxgCIAMo", "CzIdLnRlbnNvcmZsb3cuSm9iRGVmLlRhc2tzRW50cnkaLAoKVGFza3NFbnRy", "eRILCgNrZXkYASABKAUSDQoFdmFsdWUYAiABKAk6AjgBIi0KCkNsdXN0ZXJE", - "ZWYSHwoDam9iGAEgAygLMhIudGVuc29yZmxvdy5Kb2JEZWZCegoab3JnLnRl", - "bnNvcmZsb3cuZGlzdHJ1bnRpbWVCDUNsdXN0ZXJQcm90b3NQAVpIZ2l0aHVi", - "LmNvbS90ZW5zb3JmbG93L3RlbnNvcmZsb3cvdGVuc29yZmxvdy9nby9jb3Jl", - "L2NvcmVfcHJvdG9zX2dvX3Byb3Rv+AEBYgZwcm90bzM=")); + "ZWYSHwoDam9iGAEgAygLMhIudGVuc29yZmxvdy5Kb2JEZWZChwEKGm9yZy50", + "ZW5zb3JmbG93LmRpc3RydW50aW1lQg1DbHVzdGVyUHJvdG9zUAFaVWdpdGh1", + "Yi5jb20vdGVuc29yZmxvdy90ZW5zb3JmbG93L3RlbnNvcmZsb3cvZ28vY29y", + "ZS9wcm90b2J1Zi9mb3JfY29yZV9wcm90b3NfZ29fcHJvdG/4AQFiBnByb3Rv", + "Mw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { diff --git a/src/TensorFlowNET.Core/Protobuf/Config.cs b/src/TensorFlowNET.Core/Protobuf/Config.cs index d4d348f5..af7391d3 100644 --- a/src/TensorFlowNET.Core/Protobuf/Config.cs +++ b/src/TensorFlowNET.Core/Protobuf/Config.cs @@ -70,7 +70,7 @@ namespace Tensorflow { "EWNvbXByZXNzaW9uX2xldmVsGAMgASgFEhoKEmNhY2hlX3JwY19yZXNwb25z", "ZRgEIAEoCBIqCiJkaXNhYmxlX3Nlc3Npb25fY29ubmVjdGlvbl9zaGFyaW5n", "GAUgASgIIjAKD1Nlc3Npb25NZXRhZGF0YRIMCgRuYW1lGAEgASgJEg8KB3Zl", - "cnNpb24YAiABKAMiyAoKC0NvbmZpZ1Byb3RvEj4KDGRldmljZV9jb3VudBgB", + "cnNpb24YAiABKAMijA0KC0NvbmZpZ1Byb3RvEj4KDGRldmljZV9jb3VudBgB", "IAMoCzIoLnRlbnNvcmZsb3cuQ29uZmlnUHJvdG8uRGV2aWNlQ291bnRFbnRy", "eRIkChxpbnRyYV9vcF9wYXJhbGxlbGlzbV90aHJlYWRzGAIgASgFEiQKHGlu", "dGVyX29wX3BhcmFsbGVsaXNtX3RocmVhZHMYBSABKAUSHwoXdXNlX3Blcl9z", @@ -87,7 +87,7 @@ namespace Tensorflow { "CBIoCiBzaGFyZV9jbHVzdGVyX2RldmljZXNfaW5fc2Vzc2lvbhgRIAEoCBI6", "CgxleHBlcmltZW50YWwYECABKAsyJC50ZW5zb3JmbG93LkNvbmZpZ1Byb3Rv", "LkV4cGVyaW1lbnRhbBoyChBEZXZpY2VDb3VudEVudHJ5EgsKA2tleRgBIAEo", - "CRINCgV2YWx1ZRgCIAEoBToCOAEawgQKDEV4cGVyaW1lbnRhbBIfChdjb2xs", + "CRINCgV2YWx1ZRgCIAEoBToCOAEahgcKDEV4cGVyaW1lbnRhbBIfChdjb2xs", "ZWN0aXZlX2dyb3VwX2xlYWRlchgBIAEoCRIVCg1leGVjdXRvcl90eXBlGAMg", "ASgJEhoKEnJlY3ZfYnVmX21heF9jaHVuaxgEIAEoBRIZChF1c2VfbnVtYV9h", "ZmZpbml0eRgFIAEoCBI1Ci1jb2xsZWN0aXZlX2RldGVybWluaXN0aWNfc2Vx", @@ -97,46 +97,54 @@ namespace Tensorflow { "KAgSKAogc2hhcmVfY2x1c3Rlcl9kZXZpY2VzX2luX3Nlc3Npb24YCiABKAgS", "NQoQc2Vzc2lvbl9tZXRhZGF0YRgLIAEoCzIbLnRlbnNvcmZsb3cuU2Vzc2lv", "bk1ldGFkYXRhEiEKGW9wdGltaXplX2Zvcl9zdGF0aWNfZ3JhcGgYDCABKAgS", - "GgoSZW5hYmxlX21saXJfYnJpZGdlGA0gASgIEiYKHmVuYWJsZV9tbGlyX2dy", - "YXBoX29wdGltaXphdGlvbhgQIAEoCBInCh9kaXNhYmxlX291dHB1dF9wYXJ0", - "aXRpb25fZ3JhcGhzGA4gASgIEiMKG3hsYV9mdXNpb25fYXV0b3R1bmVyX3Ro", - "cmVzaBgPIAEoA0oECAIQAyLhBAoKUnVuT3B0aW9ucxI2Cgt0cmFjZV9sZXZl", - "bBgBIAEoDjIhLnRlbnNvcmZsb3cuUnVuT3B0aW9ucy5UcmFjZUxldmVsEhUK", - "DXRpbWVvdXRfaW5fbXMYAiABKAMSHAoUaW50ZXJfb3BfdGhyZWFkX3Bvb2wY", - "AyABKAUSHwoXb3V0cHV0X3BhcnRpdGlvbl9ncmFwaHMYBSABKAgSLwoNZGVi", - "dWdfb3B0aW9ucxgGIAEoCzIYLnRlbnNvcmZsb3cuRGVidWdPcHRpb25zEioK", - "InJlcG9ydF90ZW5zb3JfYWxsb2NhdGlvbnNfdXBvbl9vb20YByABKAgSOQoM", - "ZXhwZXJpbWVudGFsGAggASgLMiMudGVuc29yZmxvdy5SdW5PcHRpb25zLkV4", - "cGVyaW1lbnRhbBrSAQoMRXhwZXJpbWVudGFsEhwKFGNvbGxlY3RpdmVfZ3Jh", - "cGhfa2V5GAEgASgDEhwKFHVzZV9ydW5faGFuZGxlcl9wb29sGAIgASgIElsK", - "GHJ1bl9oYW5kbGVyX3Bvb2xfb3B0aW9ucxgDIAEoCzI5LnRlbnNvcmZsb3cu", - "UnVuT3B0aW9ucy5FeHBlcmltZW50YWwuUnVuSGFuZGxlclBvb2xPcHRpb25z", - "GikKFVJ1bkhhbmRsZXJQb29sT3B0aW9ucxIQCghwcmlvcml0eRgBIAEoAyJS", - "CgpUcmFjZUxldmVsEgwKCE5PX1RSQUNFEAASEgoOU09GVFdBUkVfVFJBQ0UQ", - "ARISCg5IQVJEV0FSRV9UUkFDRRACEg4KCkZVTExfVFJBQ0UQA0oECAQQBSKH", - "AwoLUnVuTWV0YWRhdGESKQoKc3RlcF9zdGF0cxgBIAEoCzIVLnRlbnNvcmZs", - "b3cuU3RlcFN0YXRzEiwKCmNvc3RfZ3JhcGgYAiABKAsyGC50ZW5zb3JmbG93", - "LkNvc3RHcmFwaERlZhIuChBwYXJ0aXRpb25fZ3JhcGhzGAMgAygLMhQudGVu", - "c29yZmxvdy5HcmFwaERlZhI/Cg9mdW5jdGlvbl9ncmFwaHMYBCADKAsyJi50", - "ZW5zb3JmbG93LlJ1bk1ldGFkYXRhLkZ1bmN0aW9uR3JhcGhzGq0BCg5GdW5j", - "dGlvbkdyYXBocxIuChBwYXJ0aXRpb25fZ3JhcGhzGAEgAygLMhQudGVuc29y", - "Zmxvdy5HcmFwaERlZhI0ChZwcmVfb3B0aW1pemF0aW9uX2dyYXBoGAIgASgL", - "MhQudGVuc29yZmxvdy5HcmFwaERlZhI1Chdwb3N0X29wdGltaXphdGlvbl9n", - "cmFwaBgDIAEoCzIULnRlbnNvcmZsb3cuR3JhcGhEZWYiOgoQVGVuc29yQ29u", - "bmVjdGlvbhITCgtmcm9tX3RlbnNvchgBIAEoCRIRCgl0b190ZW5zb3IYAiAB", - "KAkisAMKD0NhbGxhYmxlT3B0aW9ucxIMCgRmZWVkGAEgAygJEg0KBWZldGNo", - "GAIgAygJEg4KBnRhcmdldBgDIAMoCRIrCgtydW5fb3B0aW9ucxgEIAEoCzIW", - "LnRlbnNvcmZsb3cuUnVuT3B0aW9ucxI3ChF0ZW5zb3JfY29ubmVjdGlvbhgF", - "IAMoCzIcLnRlbnNvcmZsb3cuVGVuc29yQ29ubmVjdGlvbhJCCgxmZWVkX2Rl", - "dmljZXMYBiADKAsyLC50ZW5zb3JmbG93LkNhbGxhYmxlT3B0aW9ucy5GZWVk", - "RGV2aWNlc0VudHJ5EkQKDWZldGNoX2RldmljZXMYByADKAsyLS50ZW5zb3Jm", - "bG93LkNhbGxhYmxlT3B0aW9ucy5GZXRjaERldmljZXNFbnRyeRIXCg9mZXRj", - "aF9za2lwX3N5bmMYCCABKAgaMgoQRmVlZERldmljZXNFbnRyeRILCgNrZXkY", - "ASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGjMKEUZldGNoRGV2aWNlc0VudHJ5", - "EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCdwoYb3JnLnRlbnNv", - "cmZsb3cuZnJhbWV3b3JrQgxDb25maWdQcm90b3NQAVpIZ2l0aHViLmNvbS90", - "ZW5zb3JmbG93L3RlbnNvcmZsb3cvdGVuc29yZmxvdy9nby9jb3JlL2NvcmVf", - "cHJvdG9zX2dvX3Byb3Rv+AEBYgZwcm90bzM=")); + "GgoSZW5hYmxlX21saXJfYnJpZGdlGA0gASgIElMKE21saXJfYnJpZGdlX3Jv", + "bGxvdXQYESABKA4yNi50ZW5zb3JmbG93LkNvbmZpZ1Byb3RvLkV4cGVyaW1l", + "bnRhbC5NbGlyQnJpZGdlUm9sbG91dBImCh5lbmFibGVfbWxpcl9ncmFwaF9v", + "cHRpbWl6YXRpb24YECABKAgSJwofZGlzYWJsZV9vdXRwdXRfcGFydGl0aW9u", + "X2dyYXBocxgOIAEoCBIjCht4bGFfZnVzaW9uX2F1dG90dW5lcl90aHJlc2gY", + "DyABKAMSEAoIdXNlX3RmcnQYEiABKAgi2gEKEU1saXJCcmlkZ2VSb2xsb3V0", + "EiMKH01MSVJfQlJJREdFX1JPTExPVVRfVU5TUEVDSUZJRUQQABIfChtNTElS", + "X0JSSURHRV9ST0xMT1VUX0VOQUJMRUQQARIgChxNTElSX0JSSURHRV9ST0xM", + "T1VUX0RJU0FCTEVEEAISKQolTUxJUl9CUklER0VfUk9MTE9VVF9TQUZFX01P", + "REVfRU5BQkxFRBADEjIKLk1MSVJfQlJJREdFX1JPTExPVVRfU0FGRV9NT0RF", + "X0ZBTExCQUNLX0VOQUJMRUQQBEoECAIQAyLhBAoKUnVuT3B0aW9ucxI2Cgt0", + "cmFjZV9sZXZlbBgBIAEoDjIhLnRlbnNvcmZsb3cuUnVuT3B0aW9ucy5UcmFj", + "ZUxldmVsEhUKDXRpbWVvdXRfaW5fbXMYAiABKAMSHAoUaW50ZXJfb3BfdGhy", + "ZWFkX3Bvb2wYAyABKAUSHwoXb3V0cHV0X3BhcnRpdGlvbl9ncmFwaHMYBSAB", + "KAgSLwoNZGVidWdfb3B0aW9ucxgGIAEoCzIYLnRlbnNvcmZsb3cuRGVidWdP", + "cHRpb25zEioKInJlcG9ydF90ZW5zb3JfYWxsb2NhdGlvbnNfdXBvbl9vb20Y", + "ByABKAgSOQoMZXhwZXJpbWVudGFsGAggASgLMiMudGVuc29yZmxvdy5SdW5P", + "cHRpb25zLkV4cGVyaW1lbnRhbBrSAQoMRXhwZXJpbWVudGFsEhwKFGNvbGxl", + "Y3RpdmVfZ3JhcGhfa2V5GAEgASgDEhwKFHVzZV9ydW5faGFuZGxlcl9wb29s", + "GAIgASgIElsKGHJ1bl9oYW5kbGVyX3Bvb2xfb3B0aW9ucxgDIAEoCzI5LnRl", + "bnNvcmZsb3cuUnVuT3B0aW9ucy5FeHBlcmltZW50YWwuUnVuSGFuZGxlclBv", + "b2xPcHRpb25zGikKFVJ1bkhhbmRsZXJQb29sT3B0aW9ucxIQCghwcmlvcml0", + "eRgBIAEoAyJSCgpUcmFjZUxldmVsEgwKCE5PX1RSQUNFEAASEgoOU09GVFdB", + "UkVfVFJBQ0UQARISCg5IQVJEV0FSRV9UUkFDRRACEg4KCkZVTExfVFJBQ0UQ", + "A0oECAQQBSKHAwoLUnVuTWV0YWRhdGESKQoKc3RlcF9zdGF0cxgBIAEoCzIV", + "LnRlbnNvcmZsb3cuU3RlcFN0YXRzEiwKCmNvc3RfZ3JhcGgYAiABKAsyGC50", + "ZW5zb3JmbG93LkNvc3RHcmFwaERlZhIuChBwYXJ0aXRpb25fZ3JhcGhzGAMg", + "AygLMhQudGVuc29yZmxvdy5HcmFwaERlZhI/Cg9mdW5jdGlvbl9ncmFwaHMY", + "BCADKAsyJi50ZW5zb3JmbG93LlJ1bk1ldGFkYXRhLkZ1bmN0aW9uR3JhcGhz", + "Gq0BCg5GdW5jdGlvbkdyYXBocxIuChBwYXJ0aXRpb25fZ3JhcGhzGAEgAygL", + "MhQudGVuc29yZmxvdy5HcmFwaERlZhI0ChZwcmVfb3B0aW1pemF0aW9uX2dy", + "YXBoGAIgASgLMhQudGVuc29yZmxvdy5HcmFwaERlZhI1Chdwb3N0X29wdGlt", + "aXphdGlvbl9ncmFwaBgDIAEoCzIULnRlbnNvcmZsb3cuR3JhcGhEZWYiOgoQ", + "VGVuc29yQ29ubmVjdGlvbhITCgtmcm9tX3RlbnNvchgBIAEoCRIRCgl0b190", + "ZW5zb3IYAiABKAkisAMKD0NhbGxhYmxlT3B0aW9ucxIMCgRmZWVkGAEgAygJ", + "Eg0KBWZldGNoGAIgAygJEg4KBnRhcmdldBgDIAMoCRIrCgtydW5fb3B0aW9u", + "cxgEIAEoCzIWLnRlbnNvcmZsb3cuUnVuT3B0aW9ucxI3ChF0ZW5zb3JfY29u", + "bmVjdGlvbhgFIAMoCzIcLnRlbnNvcmZsb3cuVGVuc29yQ29ubmVjdGlvbhJC", + "CgxmZWVkX2RldmljZXMYBiADKAsyLC50ZW5zb3JmbG93LkNhbGxhYmxlT3B0", + "aW9ucy5GZWVkRGV2aWNlc0VudHJ5EkQKDWZldGNoX2RldmljZXMYByADKAsy", + "LS50ZW5zb3JmbG93LkNhbGxhYmxlT3B0aW9ucy5GZXRjaERldmljZXNFbnRy", + "eRIXCg9mZXRjaF9za2lwX3N5bmMYCCABKAgaMgoQRmVlZERldmljZXNFbnRy", + "eRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGjMKEUZldGNoRGV2", + "aWNlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFChAEK", + "GG9yZy50ZW5zb3JmbG93LmZyYW1ld29ya0IMQ29uZmlnUHJvdG9zUAFaVWdp", + "dGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3JmbG93L3RlbnNvcmZsb3cvZ28v", + "Y29yZS9wcm90b2J1Zi9mb3JfY29yZV9wcm90b3NfZ29fcHJvdG/4AQFiBnBy", + "b3RvMw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Tensorflow.CostGraphReflection.Descriptor, global::Tensorflow.GraphReflection.Descriptor, global::Tensorflow.StepStatsReflection.Descriptor, global::Tensorflow.ClusterReflection.Descriptor, global::Tensorflow.DebugReflection.Descriptor, global::Tensorflow.RewriterConfigReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { @@ -146,7 +154,7 @@ namespace Tensorflow { new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.ThreadPoolOptionProto), global::Tensorflow.ThreadPoolOptionProto.Parser, new[]{ "NumThreads", "GlobalName" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.RPCOptions), global::Tensorflow.RPCOptions.Parser, new[]{ "UseRpcForInprocessMaster", "CompressionAlgorithm", "CompressionLevel", "CacheRpcResponse", "DisableSessionConnectionSharing" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.SessionMetadata), global::Tensorflow.SessionMetadata.Parser, new[]{ "Name", "Version" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.ConfigProto), global::Tensorflow.ConfigProto.Parser, new[]{ "DeviceCount", "IntraOpParallelismThreads", "InterOpParallelismThreads", "UsePerSessionThreads", "SessionInterOpThreadPool", "PlacementPeriod", "DeviceFilters", "GpuOptions", "AllowSoftPlacement", "LogDevicePlacement", "GraphOptions", "OperationTimeoutInMs", "RpcOptions", "ClusterDef", "IsolateSessionState", "ShareClusterDevicesInSession", "Experimental" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.ConfigProto.Types.Experimental), global::Tensorflow.ConfigProto.Types.Experimental.Parser, new[]{ "CollectiveGroupLeader", "ExecutorType", "RecvBufMaxChunk", "UseNumaAffinity", "CollectiveDeterministicSequentialExecution", "CollectiveNccl", "ShareSessionStateInClusterspecPropagation", "DisableThreadSpinning", "ShareClusterDevicesInSession", "SessionMetadata", "OptimizeForStaticGraph", "EnableMlirBridge", "EnableMlirGraphOptimization", "DisableOutputPartitionGraphs", "XlaFusionAutotunerThresh" }, null, null, null, null)}), + new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.ConfigProto), global::Tensorflow.ConfigProto.Parser, new[]{ "DeviceCount", "IntraOpParallelismThreads", "InterOpParallelismThreads", "UsePerSessionThreads", "SessionInterOpThreadPool", "PlacementPeriod", "DeviceFilters", "GpuOptions", "AllowSoftPlacement", "LogDevicePlacement", "GraphOptions", "OperationTimeoutInMs", "RpcOptions", "ClusterDef", "IsolateSessionState", "ShareClusterDevicesInSession", "Experimental" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.ConfigProto.Types.Experimental), global::Tensorflow.ConfigProto.Types.Experimental.Parser, new[]{ "CollectiveGroupLeader", "ExecutorType", "RecvBufMaxChunk", "UseNumaAffinity", "CollectiveDeterministicSequentialExecution", "CollectiveNccl", "ShareSessionStateInClusterspecPropagation", "DisableThreadSpinning", "ShareClusterDevicesInSession", "SessionMetadata", "OptimizeForStaticGraph", "EnableMlirBridge", "MlirBridgeRollout", "EnableMlirGraphOptimization", "DisableOutputPartitionGraphs", "XlaFusionAutotunerThresh", "UseTfrt" }, null, new[]{ typeof(global::Tensorflow.ConfigProto.Types.Experimental.Types.MlirBridgeRollout) }, null, null)}), new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.RunOptions), global::Tensorflow.RunOptions.Parser, new[]{ "TraceLevel", "TimeoutInMs", "InterOpThreadPool", "OutputPartitionGraphs", "DebugOptions", "ReportTensorAllocationsUponOom", "Experimental" }, null, new[]{ typeof(global::Tensorflow.RunOptions.Types.TraceLevel) }, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.RunOptions.Types.Experimental), global::Tensorflow.RunOptions.Types.Experimental.Parser, new[]{ "CollectiveGraphKey", "UseRunHandlerPool", "RunHandlerPoolOptions" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.RunOptions.Types.Experimental.Types.RunHandlerPoolOptions), global::Tensorflow.RunOptions.Types.Experimental.Types.RunHandlerPoolOptions.Parser, new[]{ "Priority" }, null, null, null, null)})}), new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.RunMetadata), global::Tensorflow.RunMetadata.Parser, new[]{ "StepStats", "CostGraph", "PartitionGraphs", "FunctionGraphs" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.RunMetadata.Types.FunctionGraphs), global::Tensorflow.RunMetadata.Types.FunctionGraphs.Parser, new[]{ "PartitionGraphs", "PreOptimizationGraph", "PostOptimizationGraph" }, null, null, null, null)}), new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.TensorConnection), global::Tensorflow.TensorConnection.Parser, new[]{ "FromTensor", "ToTensor" }, null, null, null, null), @@ -3279,9 +3287,11 @@ namespace Tensorflow { sessionMetadata_ = other.sessionMetadata_ != null ? other.sessionMetadata_.Clone() : null; optimizeForStaticGraph_ = other.optimizeForStaticGraph_; enableMlirBridge_ = other.enableMlirBridge_; + mlirBridgeRollout_ = other.mlirBridgeRollout_; enableMlirGraphOptimization_ = other.enableMlirGraphOptimization_; disableOutputPartitionGraphs_ = other.disableOutputPartitionGraphs_; xlaFusionAutotunerThresh_ = other.xlaFusionAutotunerThresh_; + useTfrt_ = other.useTfrt_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } @@ -3488,6 +3498,9 @@ namespace Tensorflow { public const int EnableMlirBridgeFieldNumber = 13; private bool enableMlirBridge_; /// + /// This field will eventually be deprecated and replaced by + /// mlir_bridge_rollout (b/166038521). + /// /// Whether to enable the MLIR-based TF->XLA bridge. /// /// This is a replacement to the existing bridge, and not ready for @@ -3508,6 +3521,23 @@ namespace Tensorflow { } } + /// Field number for the "mlir_bridge_rollout" field. + public const int MlirBridgeRolloutFieldNumber = 17; + private global::Tensorflow.ConfigProto.Types.Experimental.Types.MlirBridgeRollout mlirBridgeRollout_ = global::Tensorflow.ConfigProto.Types.Experimental.Types.MlirBridgeRollout.Unspecified; + /// + /// This field is underdevelopment, for now use enable_mlir_bridge + /// (b/166038521). + /// + /// Whether to enable the MLIR-based TF->XLA bridge. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public global::Tensorflow.ConfigProto.Types.Experimental.Types.MlirBridgeRollout MlirBridgeRollout { + get { return mlirBridgeRollout_; } + set { + mlirBridgeRollout_ = value; + } + } + /// Field number for the "enable_mlir_graph_optimization" field. public const int EnableMlirGraphOptimizationFieldNumber = 16; private bool enableMlirGraphOptimization_; @@ -3562,6 +3592,20 @@ namespace Tensorflow { } } + /// Field number for the "use_tfrt" field. + public const int UseTfrtFieldNumber = 18; + private bool useTfrt_; + /// + /// Whether runtime execution uses TFRT. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool UseTfrt { + get { return useTfrt_; } + set { + useTfrt_ = value; + } + } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override bool Equals(object other) { return Equals(other as Experimental); @@ -3587,9 +3631,11 @@ namespace Tensorflow { if (!object.Equals(SessionMetadata, other.SessionMetadata)) return false; if (OptimizeForStaticGraph != other.OptimizeForStaticGraph) return false; if (EnableMlirBridge != other.EnableMlirBridge) return false; + if (MlirBridgeRollout != other.MlirBridgeRollout) return false; if (EnableMlirGraphOptimization != other.EnableMlirGraphOptimization) return false; if (DisableOutputPartitionGraphs != other.DisableOutputPartitionGraphs) return false; if (XlaFusionAutotunerThresh != other.XlaFusionAutotunerThresh) return false; + if (UseTfrt != other.UseTfrt) return false; return Equals(_unknownFields, other._unknownFields); } @@ -3608,9 +3654,11 @@ namespace Tensorflow { if (sessionMetadata_ != null) hash ^= SessionMetadata.GetHashCode(); if (OptimizeForStaticGraph != false) hash ^= OptimizeForStaticGraph.GetHashCode(); if (EnableMlirBridge != false) hash ^= EnableMlirBridge.GetHashCode(); + if (MlirBridgeRollout != global::Tensorflow.ConfigProto.Types.Experimental.Types.MlirBridgeRollout.Unspecified) hash ^= MlirBridgeRollout.GetHashCode(); if (EnableMlirGraphOptimization != false) hash ^= EnableMlirGraphOptimization.GetHashCode(); if (DisableOutputPartitionGraphs != false) hash ^= DisableOutputPartitionGraphs.GetHashCode(); if (XlaFusionAutotunerThresh != 0L) hash ^= XlaFusionAutotunerThresh.GetHashCode(); + if (UseTfrt != false) hash ^= UseTfrt.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -3684,6 +3732,14 @@ namespace Tensorflow { output.WriteRawTag(128, 1); output.WriteBool(EnableMlirGraphOptimization); } + if (MlirBridgeRollout != global::Tensorflow.ConfigProto.Types.Experimental.Types.MlirBridgeRollout.Unspecified) { + output.WriteRawTag(136, 1); + output.WriteEnum((int) MlirBridgeRollout); + } + if (UseTfrt != false) { + output.WriteRawTag(144, 1); + output.WriteBool(UseTfrt); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -3728,6 +3784,9 @@ namespace Tensorflow { if (EnableMlirBridge != false) { size += 1 + 1; } + if (MlirBridgeRollout != global::Tensorflow.ConfigProto.Types.Experimental.Types.MlirBridgeRollout.Unspecified) { + size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) MlirBridgeRollout); + } if (EnableMlirGraphOptimization != false) { size += 2 + 1; } @@ -3737,6 +3796,9 @@ namespace Tensorflow { if (XlaFusionAutotunerThresh != 0L) { size += 1 + pb::CodedOutputStream.ComputeInt64Size(XlaFusionAutotunerThresh); } + if (UseTfrt != false) { + size += 2 + 1; + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -3787,6 +3849,9 @@ namespace Tensorflow { if (other.EnableMlirBridge != false) { EnableMlirBridge = other.EnableMlirBridge; } + if (other.MlirBridgeRollout != global::Tensorflow.ConfigProto.Types.Experimental.Types.MlirBridgeRollout.Unspecified) { + MlirBridgeRollout = other.MlirBridgeRollout; + } if (other.EnableMlirGraphOptimization != false) { EnableMlirGraphOptimization = other.EnableMlirGraphOptimization; } @@ -3796,6 +3861,9 @@ namespace Tensorflow { if (other.XlaFusionAutotunerThresh != 0L) { XlaFusionAutotunerThresh = other.XlaFusionAutotunerThresh; } + if (other.UseTfrt != false) { + UseTfrt = other.UseTfrt; + } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -3870,10 +3938,60 @@ namespace Tensorflow { EnableMlirGraphOptimization = input.ReadBool(); break; } + case 136: { + MlirBridgeRollout = (global::Tensorflow.ConfigProto.Types.Experimental.Types.MlirBridgeRollout) input.ReadEnum(); + break; + } + case 144: { + UseTfrt = input.ReadBool(); + break; + } } } } + #region Nested types + /// Container for nested types declared in the Experimental message type. + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static partial class Types { + /// + /// An enum that describes the state of the MLIR bridge rollout. + /// + public enum MlirBridgeRollout { + /// + /// If this field is left unspecified, the MLIR bridge may be selectively + /// enabled on a per graph basis. + /// + [pbr::OriginalName("MLIR_BRIDGE_ROLLOUT_UNSPECIFIED")] Unspecified = 0, + /// + /// Enabling the MLIR bridge enables it for all graphs in this session. + /// + [pbr::OriginalName("MLIR_BRIDGE_ROLLOUT_ENABLED")] Enabled = 1, + /// + /// Disabling the MLIR bridge disables it for all graphs in this session. + /// + [pbr::OriginalName("MLIR_BRIDGE_ROLLOUT_DISABLED")] Disabled = 2, + /// + /// Enable the MLIR bridge on a per graph basis based on an analysis of + /// the features used in the graph. If the features used by the graph are + /// supported by the MLIR bridge, the MLIR bridge will be used to run the + /// graph. + /// + [pbr::OriginalName("MLIR_BRIDGE_ROLLOUT_SAFE_MODE_ENABLED")] SafeModeEnabled = 3, + /// + /// Enable the MLIR bridge in a fallback mode on a per graph basis based + /// on an analysis of the features used in the graph. + /// Running the MLIR bridge in the fallback mode means that it is + /// executed and it commits all the changes to the TF graph in case + /// of success. And it does not in case of failures and let the old bridge + /// to process the TF graph. + /// + [pbr::OriginalName("MLIR_BRIDGE_ROLLOUT_SAFE_MODE_FALLBACK_ENABLED")] SafeModeFallbackEnabled = 4, + } + + } + #endregion + } } diff --git a/src/TensorFlowNET.Core/Protobuf/ControlFlow.cs b/src/TensorFlowNET.Core/Protobuf/ControlFlow.cs index 7bf29730..a3ed1eec 100644 --- a/src/TensorFlowNET.Core/Protobuf/ControlFlow.cs +++ b/src/TensorFlowNET.Core/Protobuf/ControlFlow.cs @@ -44,10 +44,10 @@ namespace Tensorflow { "X2VudGVyX25hbWVzGAogAygJEikKCnZhbHVlc19kZWYYCSABKAsyFS50ZW5z", "b3JmbG93LlZhbHVlc0RlZhIfChdtYXhpbXVtX2l0ZXJhdGlvbnNfbmFtZRgL", "IAEoCRI6Cg9uZXN0ZWRfY29udGV4dHMYDCADKAsyIS50ZW5zb3JmbG93LkNv", - "bnRyb2xGbG93Q29udGV4dERlZkJ8ChhvcmcudGVuc29yZmxvdy5mcmFtZXdv", - "cmtCEUNvbnRyb2xGbG93UHJvdG9zUAFaSGdpdGh1Yi5jb20vdGVuc29yZmxv", - "dy90ZW5zb3JmbG93L3RlbnNvcmZsb3cvZ28vY29yZS9jb3JlX3Byb3Rvc19n", - "b19wcm90b/gBAWIGcHJvdG8z")); + "bnRyb2xGbG93Q29udGV4dERlZkKJAQoYb3JnLnRlbnNvcmZsb3cuZnJhbWV3", + "b3JrQhFDb250cm9sRmxvd1Byb3Rvc1ABWlVnaXRodWIuY29tL3RlbnNvcmZs", + "b3cvdGVuc29yZmxvdy90ZW5zb3JmbG93L2dvL2NvcmUvcHJvdG9idWYvZm9y", + "X2NvcmVfcHJvdG9zX2dvX3Byb3Rv+AEBYgZwcm90bzM=")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { diff --git a/src/TensorFlowNET.Core/Protobuf/CppShapeInference.cs b/src/TensorFlowNET.Core/Protobuf/CppShapeInference.cs index a48a8d5e..0503e546 100644 --- a/src/TensorFlowNET.Core/Protobuf/CppShapeInference.cs +++ b/src/TensorFlowNET.Core/Protobuf/CppShapeInference.cs @@ -27,22 +27,25 @@ namespace Tensorflow { "CjV0ZW5zb3JmbG93L3B5dGhvbi9mcmFtZXdvcmsvY3BwX3NoYXBlX2luZmVy", "ZW5jZS5wcm90bxIKdGVuc29yZmxvdxoldGVuc29yZmxvdy9jb3JlL2ZyYW1l", "d29yay90eXBlcy5wcm90bxosdGVuc29yZmxvdy9jb3JlL2ZyYW1ld29yay90", - "ZW5zb3Jfc2hhcGUucHJvdG8i7QIKF0NwcFNoYXBlSW5mZXJlbmNlUmVzdWx0", + "ZW5zb3Jfc2hhcGUucHJvdG8ipQMKF0NwcFNoYXBlSW5mZXJlbmNlUmVzdWx0", "EisKBXNoYXBlGAEgASgLMhwudGVuc29yZmxvdy5UZW5zb3JTaGFwZVByb3Rv", "EkMKC2hhbmRsZV9kYXRhGAQgASgLMi4udGVuc29yZmxvdy5DcHBTaGFwZUlu", - "ZmVyZW5jZVJlc3VsdC5IYW5kbGVEYXRhGmYKEkhhbmRsZVNoYXBlQW5kVHlw", - "ZRIrCgVzaGFwZRgBIAEoCzIcLnRlbnNvcmZsb3cuVGVuc29yU2hhcGVQcm90", - "bxIjCgVkdHlwZRgCIAEoDjIULnRlbnNvcmZsb3cuRGF0YVR5cGUabAoKSGFu", - "ZGxlRGF0YRIOCgZpc19zZXQYASABKAgSTgoOc2hhcGVfYW5kX3R5cGUYAiAD", - "KAsyNi50ZW5zb3JmbG93LkNwcFNoYXBlSW5mZXJlbmNlUmVzdWx0LkhhbmRs", - "ZVNoYXBlQW5kVHlwZUoECAIQA0oECAMQBCJlCh1DcHBTaGFwZUluZmVyZW5j", - "ZUlucHV0c05lZWRlZBIcChRpbnB1dF90ZW5zb3JzX25lZWRlZBgBIAMoBRIm", - "Ch5pbnB1dF90ZW5zb3JzX2FzX3NoYXBlc19uZWVkZWQYAiADKAVCA/gBAWIG", - "cHJvdG8z")); + "ZmVyZW5jZVJlc3VsdC5IYW5kbGVEYXRhGp0BChJIYW5kbGVTaGFwZUFuZFR5", + "cGUSKwoFc2hhcGUYASABKAsyHC50ZW5zb3JmbG93LlRlbnNvclNoYXBlUHJv", + "dG8SIwoFZHR5cGUYAiABKA4yFC50ZW5zb3JmbG93LkRhdGFUeXBlEjUKEHNw", + "ZWNpYWxpemVkX3R5cGUYAyABKA4yGy50ZW5zb3JmbG93LlNwZWNpYWxpemVk", + "VHlwZRpsCgpIYW5kbGVEYXRhEg4KBmlzX3NldBgBIAEoCBJOCg5zaGFwZV9h", + "bmRfdHlwZRgCIAMoCzI2LnRlbnNvcmZsb3cuQ3BwU2hhcGVJbmZlcmVuY2VS", + "ZXN1bHQuSGFuZGxlU2hhcGVBbmRUeXBlSgQIAhADSgQIAxAEImUKHUNwcFNo", + "YXBlSW5mZXJlbmNlSW5wdXRzTmVlZGVkEhwKFGlucHV0X3RlbnNvcnNfbmVl", + "ZGVkGAEgAygFEiYKHmlucHV0X3RlbnNvcnNfYXNfc2hhcGVzX25lZWRlZBgC", + "IAMoBUJhWlxnaXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yZmxvdy90ZW5z", + "b3JmbG93L2dvL3B5dGhvbi9mcmFtZXdvcmsvY3BwX3NoYXBlX2luZmVyZW5j", + "ZV9nb19wcm90b/gBAWIGcHJvdG8z")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Tensorflow.TypesReflection.Descriptor, global::Tensorflow.TensorShapeReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.CppShapeInferenceResult), global::Tensorflow.CppShapeInferenceResult.Parser, new[]{ "Shape", "HandleData" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.CppShapeInferenceResult.Types.HandleShapeAndType), global::Tensorflow.CppShapeInferenceResult.Types.HandleShapeAndType.Parser, new[]{ "Shape", "Dtype" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.CppShapeInferenceResult), global::Tensorflow.CppShapeInferenceResult.Parser, new[]{ "Shape", "HandleData" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.CppShapeInferenceResult.Types.HandleShapeAndType), global::Tensorflow.CppShapeInferenceResult.Types.HandleShapeAndType.Parser, new[]{ "Shape", "Dtype", "SpecializedType" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.CppShapeInferenceResult.Types.HandleData), global::Tensorflow.CppShapeInferenceResult.Types.HandleData.Parser, new[]{ "IsSet", "ShapeAndType" }, null, null, null, null)}), new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.CppShapeInferenceInputsNeeded), global::Tensorflow.CppShapeInferenceInputsNeeded.Parser, new[]{ "InputTensorsNeeded", "InputTensorsAsShapesNeeded" }, null, null, null, null) })); @@ -249,6 +252,7 @@ namespace Tensorflow { public HandleShapeAndType(HandleShapeAndType other) : this() { shape_ = other.shape_ != null ? other.shape_.Clone() : null; dtype_ = other.dtype_; + specializedType_ = other.specializedType_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } @@ -279,6 +283,22 @@ namespace Tensorflow { } } + /// Field number for the "specialized_type" field. + public const int SpecializedTypeFieldNumber = 3; + private global::Tensorflow.SpecializedType specializedType_ = global::Tensorflow.SpecializedType.StInvalid; + /// + /// For dtype==DT_VARIANT, specialized_type may indicate a more specific + /// type. For other dtypes or when the information is unavailable it is set + /// to ST_INVALID. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public global::Tensorflow.SpecializedType SpecializedType { + get { return specializedType_; } + set { + specializedType_ = value; + } + } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override bool Equals(object other) { return Equals(other as HandleShapeAndType); @@ -294,6 +314,7 @@ namespace Tensorflow { } if (!object.Equals(Shape, other.Shape)) return false; if (Dtype != other.Dtype) return false; + if (SpecializedType != other.SpecializedType) return false; return Equals(_unknownFields, other._unknownFields); } @@ -302,6 +323,7 @@ namespace Tensorflow { int hash = 1; if (shape_ != null) hash ^= Shape.GetHashCode(); if (Dtype != global::Tensorflow.DataType.DtInvalid) hash ^= Dtype.GetHashCode(); + if (SpecializedType != global::Tensorflow.SpecializedType.StInvalid) hash ^= SpecializedType.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -323,6 +345,10 @@ namespace Tensorflow { output.WriteRawTag(16); output.WriteEnum((int) Dtype); } + if (SpecializedType != global::Tensorflow.SpecializedType.StInvalid) { + output.WriteRawTag(24); + output.WriteEnum((int) SpecializedType); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -337,6 +363,9 @@ namespace Tensorflow { if (Dtype != global::Tensorflow.DataType.DtInvalid) { size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Dtype); } + if (SpecializedType != global::Tensorflow.SpecializedType.StInvalid) { + size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) SpecializedType); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -357,6 +386,9 @@ namespace Tensorflow { if (other.Dtype != global::Tensorflow.DataType.DtInvalid) { Dtype = other.Dtype; } + if (other.SpecializedType != global::Tensorflow.SpecializedType.StInvalid) { + SpecializedType = other.SpecializedType; + } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -379,6 +411,10 @@ namespace Tensorflow { Dtype = (global::Tensorflow.DataType) input.ReadEnum(); break; } + case 24: { + SpecializedType = (global::Tensorflow.SpecializedType) input.ReadEnum(); + break; + } } } } diff --git a/src/TensorFlowNET.Core/Protobuf/Debug.cs b/src/TensorFlowNET.Core/Protobuf/Debug.cs index cdd11ef5..5ef4662f 100644 --- a/src/TensorFlowNET.Core/Protobuf/Debug.cs +++ b/src/TensorFlowNET.Core/Protobuf/Debug.cs @@ -35,10 +35,10 @@ namespace Tensorflow { "ASgJEhEKCWZpbGVfcGF0aBgCIAEoCRIVCg1sYXN0X21vZGlmaWVkGAMgASgD", "Eg0KBWJ5dGVzGAQgASgDEg0KBWxpbmVzGAUgAygJIksKE0RlYnVnZ2VkU291", "cmNlRmlsZXMSNAoMc291cmNlX2ZpbGVzGAEgAygLMh4udGVuc29yZmxvdy5E", - "ZWJ1Z2dlZFNvdXJjZUZpbGVCdgoYb3JnLnRlbnNvcmZsb3cuZnJhbWV3b3Jr", - "QgtEZWJ1Z1Byb3Rvc1ABWkhnaXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29y", - "Zmxvdy90ZW5zb3JmbG93L2dvL2NvcmUvY29yZV9wcm90b3NfZ29fcHJvdG/4", - "AQFiBnByb3RvMw==")); + "ZWJ1Z2dlZFNvdXJjZUZpbGVCgwEKGG9yZy50ZW5zb3JmbG93LmZyYW1ld29y", + "a0ILRGVidWdQcm90b3NQAVpVZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNv", + "cmZsb3cvdGVuc29yZmxvdy9nby9jb3JlL3Byb3RvYnVmL2Zvcl9jb3JlX3By", + "b3Rvc19nb19wcm90b/gBAWIGcHJvdG8z")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { diff --git a/src/TensorFlowNET.Core/Protobuf/Event.cs b/src/TensorFlowNET.Core/Protobuf/Event.cs index 37b1eece..13186168 100644 --- a/src/TensorFlowNET.Core/Protobuf/Event.cs +++ b/src/TensorFlowNET.Core/Protobuf/Event.cs @@ -25,38 +25,40 @@ namespace Tensorflow { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( "CiB0ZW5zb3JmbG93L2NvcmUvdXRpbC9ldmVudC5wcm90bxIKdGVuc29yZmxv", - "dxondGVuc29yZmxvdy9jb3JlL2ZyYW1ld29yay9zdW1tYXJ5LnByb3RvIrsC", + "dxondGVuc29yZmxvdy9jb3JlL2ZyYW1ld29yay9zdW1tYXJ5LnByb3RvIr8C", "CgVFdmVudBIRCgl3YWxsX3RpbWUYASABKAESDAoEc3RlcBgCIAEoAxIWCgxm", "aWxlX3ZlcnNpb24YAyABKAlIABITCglncmFwaF9kZWYYBCABKAxIABImCgdz", - "dW1tYXJ5GAUgASgLMhMudGVuc29yZmxvdy5TdW1tYXJ5SAASLQoLbG9nX21l", - "c3NhZ2UYBiABKAsyFi50ZW5zb3JmbG93LkxvZ01lc3NhZ2VIABItCgtzZXNz", - "aW9uX2xvZxgHIAEoCzIWLnRlbnNvcmZsb3cuU2Vzc2lvbkxvZ0gAEjwKE3Rh", - "Z2dlZF9ydW5fbWV0YWRhdGEYCCABKAsyHS50ZW5zb3JmbG93LlRhZ2dlZFJ1", - "bk1ldGFkYXRhSAASGAoObWV0YV9ncmFwaF9kZWYYCSABKAxIAEIGCgR3aGF0", - "IpkBCgpMb2dNZXNzYWdlEisKBWxldmVsGAEgASgOMhwudGVuc29yZmxvdy5M", - "b2dNZXNzYWdlLkxldmVsEg8KB21lc3NhZ2UYAiABKAkiTQoFTGV2ZWwSCwoH", - "VU5LTk9XThAAEg0KCURFQlVHR0lORxAKEggKBElORk8QFBIICgRXQVJOEB4S", - "CQoFRVJST1IQKBIJCgVGQVRBTBAyIrYBCgpTZXNzaW9uTG9nEjQKBnN0YXR1", - "cxgBIAEoDjIkLnRlbnNvcmZsb3cuU2Vzc2lvbkxvZy5TZXNzaW9uU3RhdHVz", - "EhcKD2NoZWNrcG9pbnRfcGF0aBgCIAEoCRILCgNtc2cYAyABKAkiTAoNU2Vz", - "c2lvblN0YXR1cxIWChJTVEFUVVNfVU5TUEVDSUZJRUQQABIJCgVTVEFSVBAB", - "EggKBFNUT1AQAhIOCgpDSEVDS1BPSU5UEAMiNgoRVGFnZ2VkUnVuTWV0YWRh", - "dGESCwoDdGFnGAEgASgJEhQKDHJ1bl9tZXRhZGF0YRgCIAEoDCIkCg5XYXRj", - "aGRvZ0NvbmZpZxISCgp0aW1lb3V0X21zGAEgASgDIiYKEVJlcXVlc3RlZEV4", - "aXRDb2RlEhEKCWV4aXRfY29kZRgBIAEoBSK2AQoWV29ya2VySGVhcnRiZWF0", - "UmVxdWVzdBI1Cg1zaHV0ZG93bl9tb2RlGAEgASgOMh4udGVuc29yZmxvdy5X", - "b3JrZXJTaHV0ZG93bk1vZGUSMwoPd2F0Y2hkb2dfY29uZmlnGAIgASgLMhou", - "dGVuc29yZmxvdy5XYXRjaGRvZ0NvbmZpZxIwCglleGl0X2NvZGUYAyABKAsy", - "HS50ZW5zb3JmbG93LlJlcXVlc3RlZEV4aXRDb2RlIoMBChdXb3JrZXJIZWFy", - "dGJlYXRSZXNwb25zZRIvCg1oZWFsdGhfc3RhdHVzGAEgASgOMhgudGVuc29y", - "Zmxvdy5Xb3JrZXJIZWFsdGgSJQoKd29ya2VyX2xvZxgCIAMoCzIRLnRlbnNv", - "cmZsb3cuRXZlbnQSEAoIaG9zdG5hbWUYAyABKAkqWwoMV29ya2VySGVhbHRo", - "EgYKAk9LEAASHAoYUkVDRUlWRURfU0hVVERPV05fU0lHTkFMEAESEgoOSU5U", - "RVJOQUxfRVJST1IQAhIRCg1TSFVUVElOR19ET1dOEAMqawoSV29ya2VyU2h1", - "dGRvd25Nb2RlEgsKB0RFRkFVTFQQABISCg5OT1RfQ09ORklHVVJFRBABEhgK", - "FFdBSVRfRk9SX0NPT1JESU5BVE9SEAISGgoWU0hVVERPV05fQUZURVJfVElN", - "RU9VVBADQicKE29yZy50ZW5zb3JmbG93LnV0aWxCC0V2ZW50UHJvdG9zUAH4", - "AQFiBnByb3RvMw==")); + "dW1tYXJ5GAUgASgLMhMudGVuc29yZmxvdy5TdW1tYXJ5SAASMQoLbG9nX21l", + "c3NhZ2UYBiABKAsyFi50ZW5zb3JmbG93LkxvZ01lc3NhZ2VCAhgBSAASLQoL", + "c2Vzc2lvbl9sb2cYByABKAsyFi50ZW5zb3JmbG93LlNlc3Npb25Mb2dIABI8", + "ChN0YWdnZWRfcnVuX21ldGFkYXRhGAggASgLMh0udGVuc29yZmxvdy5UYWdn", + "ZWRSdW5NZXRhZGF0YUgAEhgKDm1ldGFfZ3JhcGhfZGVmGAkgASgMSABCBgoE", + "d2hhdCKhAQoKTG9nTWVzc2FnZRIrCgVsZXZlbBgBIAEoDjIcLnRlbnNvcmZs", + "b3cuTG9nTWVzc2FnZS5MZXZlbBIPCgdtZXNzYWdlGAIgASgJIlEKBUxldmVs", + "EgsKB1VOS05PV04QABINCglERUJVR0dJTkcQChIICgRJTkZPEBQSCAoEV0FS", + "ThAeEgkKBUVSUk9SECgSCQoFRkFUQUwQMhoCGAE6AhgBIrYBCgpTZXNzaW9u", + "TG9nEjQKBnN0YXR1cxgBIAEoDjIkLnRlbnNvcmZsb3cuU2Vzc2lvbkxvZy5T", + "ZXNzaW9uU3RhdHVzEhcKD2NoZWNrcG9pbnRfcGF0aBgCIAEoCRILCgNtc2cY", + "AyABKAkiTAoNU2Vzc2lvblN0YXR1cxIWChJTVEFUVVNfVU5TUEVDSUZJRUQQ", + "ABIJCgVTVEFSVBABEggKBFNUT1AQAhIOCgpDSEVDS1BPSU5UEAMiNgoRVGFn", + "Z2VkUnVuTWV0YWRhdGESCwoDdGFnGAEgASgJEhQKDHJ1bl9tZXRhZGF0YRgC", + "IAEoDCIkCg5XYXRjaGRvZ0NvbmZpZxISCgp0aW1lb3V0X21zGAEgASgDIiYK", + "EVJlcXVlc3RlZEV4aXRDb2RlEhEKCWV4aXRfY29kZRgBIAEoBSK2AQoWV29y", + "a2VySGVhcnRiZWF0UmVxdWVzdBI1Cg1zaHV0ZG93bl9tb2RlGAEgASgOMh4u", + "dGVuc29yZmxvdy5Xb3JrZXJTaHV0ZG93bk1vZGUSMwoPd2F0Y2hkb2dfY29u", + "ZmlnGAIgASgLMhoudGVuc29yZmxvdy5XYXRjaGRvZ0NvbmZpZxIwCglleGl0", + "X2NvZGUYAyABKAsyHS50ZW5zb3JmbG93LlJlcXVlc3RlZEV4aXRDb2RlIoMB", + "ChdXb3JrZXJIZWFydGJlYXRSZXNwb25zZRIvCg1oZWFsdGhfc3RhdHVzGAEg", + "ASgOMhgudGVuc29yZmxvdy5Xb3JrZXJIZWFsdGgSJQoKd29ya2VyX2xvZxgC", + "IAMoCzIRLnRlbnNvcmZsb3cuRXZlbnQSEAoIaG9zdG5hbWUYAyABKAkqWwoM", + "V29ya2VySGVhbHRoEgYKAk9LEAASHAoYUkVDRUlWRURfU0hVVERPV05fU0lH", + "TkFMEAESEgoOSU5URVJOQUxfRVJST1IQAhIRCg1TSFVUVElOR19ET1dOEAMq", + "awoSV29ya2VyU2h1dGRvd25Nb2RlEgsKB0RFRkFVTFQQABISCg5OT1RfQ09O", + "RklHVVJFRBABEhgKFFdBSVRfRk9SX0NPT1JESU5BVE9SEAISGgoWU0hVVERP", + "V05fQUZURVJfVElNRU9VVBADQnAKE29yZy50ZW5zb3JmbG93LnV0aWxCC0V2", + "ZW50UHJvdG9zUAFaR2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3JmbG93", + "L3RlbnNvcmZsb3cvZ28vY29yZS91dGlsL2V2ZW50X2dvX3Byb3Rv+AEBYgZw", + "cm90bzM=")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Tensorflow.SummaryReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Tensorflow.WorkerHealth), typeof(global::Tensorflow.WorkerShutdownMode), }, null, new pbr::GeneratedClrTypeInfo[] { @@ -243,9 +245,11 @@ namespace Tensorflow { /// Field number for the "log_message" field. public const int LogMessageFieldNumber = 6; /// - /// The user output a log message. Not all messages are logged, only ones - /// generated via the Python tensorboard_logging module. + /// The user output a log message. This was theoretically used by the defunct + /// tensorboard_logging module, which has since been removed; this field is + /// now deprecated and should not be used. /// + [global::System.ObsoleteAttribute] [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public global::Tensorflow.LogMessage LogMessage { get { return whatCase_ == WhatOneofCase.LogMessage ? (global::Tensorflow.LogMessage) what_ : null; } @@ -572,7 +576,11 @@ namespace Tensorflow { /// /// Protocol buffer used for logging messages to the events file. + /// + /// This was theoretically used by the defunct tensorboard_logging module, which + /// has been removed; this message is now deprecated and should not be used. /// + [global::System.ObsoleteAttribute] public sealed partial class LogMessage : pb::IMessage { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new LogMessage()); private pb::UnknownFieldSet _unknownFields; diff --git a/src/TensorFlowNET.Core/Protobuf/Gen.bat b/src/TensorFlowNET.Core/Protobuf/Gen.bat index c6256737..165d8a3a 100644 --- a/src/TensorFlowNET.Core/Protobuf/Gen.bat +++ b/src/TensorFlowNET.Core/Protobuf/Gen.bat @@ -42,4 +42,8 @@ protoc -I=%SRC_DIR% --csharp_out=%DST_DIR% tensorflow/core/util/event.proto protoc -I=%SRC_DIR% --csharp_out=%DST_DIR% tensorflow/python/training/checkpoint_state.proto protoc -I=%SRC_DIR% --csharp_out=%DST_DIR% tensorflow/python/framework/cpp_shape_inference.proto +ECHO protoc -I=%SRC_DIR% --csharp_out=%DST_DIR% tensorflow/python/keras/protobuf/projector_config.proto +ECHO protoc -I=%SRC_DIR% --csharp_out=%DST_DIR% tensorflow/python/keras/protobuf/versions.proto +ECHO protoc -I=%SRC_DIR% --csharp_out=%DST_DIR% tensorflow/python/keras/protobuf/saved_metadata.proto + PAUSE \ No newline at end of file diff --git a/src/TensorFlowNET.Core/Protobuf/Graph.cs b/src/TensorFlowNET.Core/Protobuf/Graph.cs index fb66636b..e5e782cc 100644 --- a/src/TensorFlowNET.Core/Protobuf/Graph.cs +++ b/src/TensorFlowNET.Core/Protobuf/Graph.cs @@ -132,8 +132,6 @@ namespace Tensorflow { public const int LibraryFieldNumber = 2; private global::Tensorflow.FunctionDefLibrary library_; /// - /// EXPERIMENTAL. DO NOT USE OR DEPEND ON THIS YET. - /// /// "library" provides user-defined functions. /// /// Naming: diff --git a/src/TensorFlowNET.Core/Protobuf/MetaGraph.cs b/src/TensorFlowNET.Core/Protobuf/MetaGraph.cs index 6da24408..d6642902 100644 --- a/src/TensorFlowNET.Core/Protobuf/MetaGraph.cs +++ b/src/TensorFlowNET.Core/Protobuf/MetaGraph.cs @@ -82,10 +82,10 @@ namespace Tensorflow { "bmZvOgI4ARpGCgxPdXRwdXRzRW50cnkSCwoDa2V5GAEgASgJEiUKBXZhbHVl", "GAIgASgLMhYudGVuc29yZmxvdy5UZW5zb3JJbmZvOgI4ASJNCgxBc3NldEZp", "bGVEZWYSKwoLdGVuc29yX2luZm8YASABKAsyFi50ZW5zb3JmbG93LlRlbnNv", - "ckluZm8SEAoIZmlsZW5hbWUYAiABKAlCegoYb3JnLnRlbnNvcmZsb3cuZnJh", - "bWV3b3JrQg9NZXRhR3JhcGhQcm90b3NQAVpIZ2l0aHViLmNvbS90ZW5zb3Jm", - "bG93L3RlbnNvcmZsb3cvdGVuc29yZmxvdy9nby9jb3JlL2NvcmVfcHJvdG9z", - "X2dvX3Byb3Rv+AEBYgZwcm90bzM=")); + "ckluZm8SEAoIZmlsZW5hbWUYAiABKAlChwEKGG9yZy50ZW5zb3JmbG93LmZy", + "YW1ld29ya0IPTWV0YUdyYXBoUHJvdG9zUAFaVWdpdGh1Yi5jb20vdGVuc29y", + "Zmxvdy90ZW5zb3JmbG93L3RlbnNvcmZsb3cvZ28vY29yZS9wcm90b2J1Zi9m", + "b3JfY29yZV9wcm90b3NfZ29fcHJvdG/4AQFiBnByb3RvMw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Google.Protobuf.WellKnownTypes.AnyReflection.Descriptor, global::Tensorflow.GraphReflection.Descriptor, global::Tensorflow.OpDefReflection.Descriptor, global::Tensorflow.TensorShapeReflection.Descriptor, global::Tensorflow.TypesReflection.Descriptor, global::Tensorflow.SavedObjectGraphReflection.Descriptor, global::Tensorflow.SaverReflection.Descriptor, global::Tensorflow.StructReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { @@ -2536,7 +2536,7 @@ namespace Tensorflow { /// graph. /// /// For example, a model with two loss computations, sharing a single input, - /// might have the following signature_def map. + /// might have the following signature_def map, in a MetaGraphDef message. /// /// Note that across the two SignatureDefs "loss_A" and "loss_B", the input key, /// output key, and method_name are identical, and will be used by system(s) that @@ -2562,9 +2562,9 @@ namespace Tensorflow { /// tensor_shape: ... /// } /// } + /// method_name: "some/package/compute_loss" /// } /// ... - /// method_name: "some/package/compute_loss" /// } /// signature_def { /// key: "loss_B" @@ -2585,9 +2585,9 @@ namespace Tensorflow { /// tensor_shape: ... /// } /// } + /// method_name: "some/package/compute_loss" /// } /// ... - /// method_name: "some/package/compute_loss" /// } /// public sealed partial class SignatureDef : pb::IMessage { diff --git a/src/TensorFlowNET.Core/Protobuf/OpDef.cs b/src/TensorFlowNET.Core/Protobuf/OpDef.cs index f42dac38..03c093fb 100644 --- a/src/TensorFlowNET.Core/Protobuf/OpDef.cs +++ b/src/TensorFlowNET.Core/Protobuf/OpDef.cs @@ -27,32 +27,34 @@ namespace Tensorflow { "CiZ0ZW5zb3JmbG93L2NvcmUvZnJhbWV3b3JrL29wX2RlZi5wcm90bxIKdGVu", "c29yZmxvdxoqdGVuc29yZmxvdy9jb3JlL2ZyYW1ld29yay9hdHRyX3ZhbHVl", "LnByb3RvGiV0ZW5zb3JmbG93L2NvcmUvZnJhbWV3b3JrL3R5cGVzLnByb3Rv", - "ItAFCgVPcERlZhIMCgRuYW1lGAEgASgJEisKCWlucHV0X2FyZxgCIAMoCzIY", - "LnRlbnNvcmZsb3cuT3BEZWYuQXJnRGVmEiwKCm91dHB1dF9hcmcYAyADKAsy", - "GC50ZW5zb3JmbG93Lk9wRGVmLkFyZ0RlZhIWCg5jb250cm9sX291dHB1dBgU", - "IAMoCRInCgRhdHRyGAQgAygLMhkudGVuc29yZmxvdy5PcERlZi5BdHRyRGVm", - "Ei4KC2RlcHJlY2F0aW9uGAggASgLMhkudGVuc29yZmxvdy5PcERlcHJlY2F0", - "aW9uEg8KB3N1bW1hcnkYBSABKAkSEwoLZGVzY3JpcHRpb24YBiABKAkSFgoO", - "aXNfY29tbXV0YXRpdmUYEiABKAgSFAoMaXNfYWdncmVnYXRlGBAgASgIEhMK", - "C2lzX3N0YXRlZnVsGBEgASgIEiIKGmFsbG93c191bmluaXRpYWxpemVkX2lu", - "cHV0GBMgASgIGp8BCgZBcmdEZWYSDAoEbmFtZRgBIAEoCRITCgtkZXNjcmlw", - "dGlvbhgCIAEoCRIiCgR0eXBlGAMgASgOMhQudGVuc29yZmxvdy5EYXRhVHlw", - "ZRIRCgl0eXBlX2F0dHIYBCABKAkSEwoLbnVtYmVyX2F0dHIYBSABKAkSFgoO", - "dHlwZV9saXN0X2F0dHIYBiABKAkSDgoGaXNfcmVmGBAgASgIGr0BCgdBdHRy", - "RGVmEgwKBG5hbWUYASABKAkSDAoEdHlwZRgCIAEoCRIsCg1kZWZhdWx0X3Zh", - "bHVlGAMgASgLMhUudGVuc29yZmxvdy5BdHRyVmFsdWUSEwoLZGVzY3JpcHRp", - "b24YBCABKAkSEwoLaGFzX21pbmltdW0YBSABKAgSDwoHbWluaW11bRgGIAEo", - "AxItCg5hbGxvd2VkX3ZhbHVlcxgHIAEoCzIVLnRlbnNvcmZsb3cuQXR0clZh", - "bHVlIjUKDU9wRGVwcmVjYXRpb24SDwoHdmVyc2lvbhgBIAEoBRITCgtleHBs", - "YW5hdGlvbhgCIAEoCSInCgZPcExpc3QSHQoCb3AYASADKAsyES50ZW5zb3Jm", - "bG93Lk9wRGVmQnsKGG9yZy50ZW5zb3JmbG93LmZyYW1ld29ya0ILT3BEZWZQ", - "cm90b3NQAVpNZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmZsb3cvdGVu", - "c29yZmxvdy9nby9jb3JlL2ZyYW1ld29yay9vcF9kZWZfZ29fcHJvdG/4AQFi", - "BnByb3RvMw==")); + "Gi90ZW5zb3JmbG93L2NvcmUvZnJhbWV3b3JrL3Jlc291cmNlX2hhbmRsZS5w", + "cm90byKUBgoFT3BEZWYSDAoEbmFtZRgBIAEoCRIrCglpbnB1dF9hcmcYAiAD", + "KAsyGC50ZW5zb3JmbG93Lk9wRGVmLkFyZ0RlZhIsCgpvdXRwdXRfYXJnGAMg", + "AygLMhgudGVuc29yZmxvdy5PcERlZi5BcmdEZWYSFgoOY29udHJvbF9vdXRw", + "dXQYFCADKAkSJwoEYXR0chgEIAMoCzIZLnRlbnNvcmZsb3cuT3BEZWYuQXR0", + "ckRlZhIuCgtkZXByZWNhdGlvbhgIIAEoCzIZLnRlbnNvcmZsb3cuT3BEZXBy", + "ZWNhdGlvbhIPCgdzdW1tYXJ5GAUgASgJEhMKC2Rlc2NyaXB0aW9uGAYgASgJ", + "EhYKDmlzX2NvbW11dGF0aXZlGBIgASgIEhQKDGlzX2FnZ3JlZ2F0ZRgQIAEo", + "CBITCgtpc19zdGF0ZWZ1bBgRIAEoCBIiChphbGxvd3NfdW5pbml0aWFsaXpl", + "ZF9pbnB1dBgTIAEoCBrjAQoGQXJnRGVmEgwKBG5hbWUYASABKAkSEwoLZGVz", + "Y3JpcHRpb24YAiABKAkSIgoEdHlwZRgDIAEoDjIULnRlbnNvcmZsb3cuRGF0", + "YVR5cGUSEQoJdHlwZV9hdHRyGAQgASgJEhMKC251bWJlcl9hdHRyGAUgASgJ", + "EhYKDnR5cGVfbGlzdF9hdHRyGAYgASgJEkIKC2hhbmRsZV9kYXRhGAcgAygL", + "Mi0udGVuc29yZmxvdy5SZXNvdXJjZUhhbmRsZVByb3RvLkR0eXBlQW5kU2hh", + "cGUSDgoGaXNfcmVmGBAgASgIGr0BCgdBdHRyRGVmEgwKBG5hbWUYASABKAkS", + "DAoEdHlwZRgCIAEoCRIsCg1kZWZhdWx0X3ZhbHVlGAMgASgLMhUudGVuc29y", + "Zmxvdy5BdHRyVmFsdWUSEwoLZGVzY3JpcHRpb24YBCABKAkSEwoLaGFzX21p", + "bmltdW0YBSABKAgSDwoHbWluaW11bRgGIAEoAxItCg5hbGxvd2VkX3ZhbHVl", + "cxgHIAEoCzIVLnRlbnNvcmZsb3cuQXR0clZhbHVlIjUKDU9wRGVwcmVjYXRp", + "b24SDwoHdmVyc2lvbhgBIAEoBRITCgtleHBsYW5hdGlvbhgCIAEoCSInCgZP", + "cExpc3QSHQoCb3AYASADKAsyES50ZW5zb3JmbG93Lk9wRGVmQnsKGG9yZy50", + "ZW5zb3JmbG93LmZyYW1ld29ya0ILT3BEZWZQcm90b3NQAVpNZ2l0aHViLmNv", + "bS90ZW5zb3JmbG93L3RlbnNvcmZsb3cvdGVuc29yZmxvdy9nby9jb3JlL2Zy", + "YW1ld29yay9vcF9kZWZfZ29fcHJvdG/4AQFiBnByb3RvMw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { global::Tensorflow.AttrValueReflection.Descriptor, global::Tensorflow.TypesReflection.Descriptor, }, + new pbr::FileDescriptor[] { global::Tensorflow.AttrValueReflection.Descriptor, global::Tensorflow.TypesReflection.Descriptor, global::Tensorflow.ResourceHandleReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.OpDef), global::Tensorflow.OpDef.Parser, new[]{ "Name", "InputArg", "OutputArg", "ControlOutput", "Attr", "Deprecation", "Summary", "Description", "IsCommutative", "IsAggregate", "IsStateful", "AllowsUninitializedInput" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.OpDef.Types.ArgDef), global::Tensorflow.OpDef.Types.ArgDef.Parser, new[]{ "Name", "Description", "Type", "TypeAttr", "NumberAttr", "TypeListAttr", "IsRef" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.OpDef), global::Tensorflow.OpDef.Parser, new[]{ "Name", "InputArg", "OutputArg", "ControlOutput", "Attr", "Deprecation", "Summary", "Description", "IsCommutative", "IsAggregate", "IsStateful", "AllowsUninitializedInput" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.OpDef.Types.ArgDef), global::Tensorflow.OpDef.Types.ArgDef.Parser, new[]{ "Name", "Description", "Type", "TypeAttr", "NumberAttr", "TypeListAttr", "HandleData", "IsRef" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.OpDef.Types.AttrDef), global::Tensorflow.OpDef.Types.AttrDef.Parser, new[]{ "Name", "Type", "DefaultValue", "Description", "HasMinimum", "Minimum", "AllowedValues" }, null, null, null, null)}), new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.OpDeprecation), global::Tensorflow.OpDeprecation.Parser, new[]{ "Version", "Explanation" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.OpList), global::Tensorflow.OpList.Parser, new[]{ "Op" }, null, null, null, null) @@ -569,6 +571,7 @@ namespace Tensorflow { typeAttr_ = other.typeAttr_; numberAttr_ = other.numberAttr_; typeListAttr_ = other.typeListAttr_; + handleData_ = other.handleData_.Clone(); isRef_ = other.isRef_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } @@ -672,6 +675,19 @@ namespace Tensorflow { } } + /// Field number for the "handle_data" field. + public const int HandleDataFieldNumber = 7; + private static readonly pb::FieldCodec _repeated_handleData_codec + = pb::FieldCodec.ForMessage(58, global::Tensorflow.ResourceHandleProto.Types.DtypeAndShape.Parser); + private readonly pbc::RepeatedField handleData_ = new pbc::RepeatedField(); + /// + /// The handle data for resource inputs. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public pbc::RepeatedField HandleData { + get { return handleData_; } + } + /// Field number for the "is_ref" field. public const int IsRefFieldNumber = 16; private bool isRef_; @@ -707,6 +723,7 @@ namespace Tensorflow { if (TypeAttr != other.TypeAttr) return false; if (NumberAttr != other.NumberAttr) return false; if (TypeListAttr != other.TypeListAttr) return false; + if(!handleData_.Equals(other.handleData_)) return false; if (IsRef != other.IsRef) return false; return Equals(_unknownFields, other._unknownFields); } @@ -720,6 +737,7 @@ namespace Tensorflow { if (TypeAttr.Length != 0) hash ^= TypeAttr.GetHashCode(); if (NumberAttr.Length != 0) hash ^= NumberAttr.GetHashCode(); if (TypeListAttr.Length != 0) hash ^= TypeListAttr.GetHashCode(); + hash ^= handleData_.GetHashCode(); if (IsRef != false) hash ^= IsRef.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); @@ -758,6 +776,7 @@ namespace Tensorflow { output.WriteRawTag(50); output.WriteString(TypeListAttr); } + handleData_.WriteTo(output, _repeated_handleData_codec); if (IsRef != false) { output.WriteRawTag(128, 1); output.WriteBool(IsRef); @@ -788,6 +807,7 @@ namespace Tensorflow { if (TypeListAttr.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(TypeListAttr); } + size += handleData_.CalculateSize(_repeated_handleData_codec); if (IsRef != false) { size += 2 + 1; } @@ -820,6 +840,7 @@ namespace Tensorflow { if (other.TypeListAttr.Length != 0) { TypeListAttr = other.TypeListAttr; } + handleData_.Add(other.handleData_); if (other.IsRef != false) { IsRef = other.IsRef; } @@ -858,6 +879,10 @@ namespace Tensorflow { TypeListAttr = input.ReadString(); break; } + case 58: { + handleData_.AddEntriesFrom(input, _repeated_handleData_codec); + break; + } case 128: { IsRef = input.ReadBool(); break; diff --git a/src/TensorFlowNET.Core/Protobuf/RewriterConfig.cs b/src/TensorFlowNET.Core/Protobuf/RewriterConfig.cs index f2f90a12..db8951c5 100644 --- a/src/TensorFlowNET.Core/Protobuf/RewriterConfig.cs +++ b/src/TensorFlowNET.Core/Protobuf/RewriterConfig.cs @@ -29,65 +29,73 @@ namespace Tensorflow { "dHJfdmFsdWUucHJvdG8aLnRlbnNvcmZsb3cvY29yZS9wcm90b2J1Zi92ZXJp", "Zmllcl9jb25maWcucHJvdG8iOwoTQXV0b1BhcmFsbGVsT3B0aW9ucxIOCgZl", "bmFibGUYASABKAgSFAoMbnVtX3JlcGxpY2FzGAIgASgFIisKFlNjb3BlZEFs", - "bG9jYXRvck9wdGlvbnMSEQoJZW5hYmxlX29wGAEgAygJIpURCg5SZXdyaXRl", - "ckNvbmZpZxI7ChBsYXlvdXRfb3B0aW1pemVyGAEgASgOMiEudGVuc29yZmxv", - "dy5SZXdyaXRlckNvbmZpZy5Ub2dnbGUSOwoQY29uc3RhbnRfZm9sZGluZxgD", - "IAEoDjIhLnRlbnNvcmZsb3cuUmV3cml0ZXJDb25maWcuVG9nZ2xlEj0KEnNo", - "YXBlX29wdGltaXphdGlvbhgNIAEoDjIhLnRlbnNvcmZsb3cuUmV3cml0ZXJD", - "b25maWcuVG9nZ2xlEjQKCXJlbWFwcGluZxgOIAEoDjIhLnRlbnNvcmZsb3cu", - "UmV3cml0ZXJDb25maWcuVG9nZ2xlEkYKG2NvbW1vbl9zdWJncmFwaF9lbGlt", - "aW5hdGlvbhgYIAEoDjIhLnRlbnNvcmZsb3cuUmV3cml0ZXJDb25maWcuVG9n", - "Z2xlEkIKF2FyaXRobWV0aWNfb3B0aW1pemF0aW9uGAcgASgOMiEudGVuc29y", - "Zmxvdy5SZXdyaXRlckNvbmZpZy5Ub2dnbGUSQgoXZGVwZW5kZW5jeV9vcHRp", - "bWl6YXRpb24YCCABKA4yIS50ZW5zb3JmbG93LlJld3JpdGVyQ29uZmlnLlRv", - "Z2dsZRI8ChFsb29wX29wdGltaXphdGlvbhgJIAEoDjIhLnRlbnNvcmZsb3cu", - "UmV3cml0ZXJDb25maWcuVG9nZ2xlEkAKFWZ1bmN0aW9uX29wdGltaXphdGlv", - "bhgKIAEoDjIhLnRlbnNvcmZsb3cuUmV3cml0ZXJDb25maWcuVG9nZ2xlEjkK", - "DmRlYnVnX3N0cmlwcGVyGAsgASgOMiEudGVuc29yZmxvdy5SZXdyaXRlckNv", - "bmZpZy5Ub2dnbGUSHQoVZGlzYWJsZV9tb2RlbF9wcnVuaW5nGAIgASgIEkgK", - "HXNjb3BlZF9hbGxvY2F0b3Jfb3B0aW1pemF0aW9uGA8gASgOMiEudGVuc29y", - "Zmxvdy5SZXdyaXRlckNvbmZpZy5Ub2dnbGUSQwoYcGluX3RvX2hvc3Rfb3B0", - "aW1pemF0aW9uGBIgASgOMiEudGVuc29yZmxvdy5SZXdyaXRlckNvbmZpZy5U", - "b2dnbGUSQgoXaW1wbGVtZW50YXRpb25fc2VsZWN0b3IYFiABKA4yIS50ZW5z", - "b3JmbG93LlJld3JpdGVyQ29uZmlnLlRvZ2dsZRI/ChRhdXRvX21peGVkX3By", - "ZWNpc2lvbhgXIAEoDjIhLnRlbnNvcmZsb3cuUmV3cml0ZXJDb25maWcuVG9n", - "Z2xlEkMKGGF1dG9fbWl4ZWRfcHJlY2lzaW9uX21rbBgZIAEoDjIhLnRlbnNv", - "cmZsb3cuUmV3cml0ZXJDb25maWcuVG9nZ2xlEh4KFmRpc2FibGVfbWV0YV9v", - "cHRpbWl6ZXIYEyABKAgSTwoZbWV0YV9vcHRpbWl6ZXJfaXRlcmF0aW9ucxgM", + "bG9jYXRvck9wdGlvbnMSEQoJZW5hYmxlX29wGAEgAygJIuETCg5SZXdyaXRl", + "ckNvbmZpZxJDChVjcHVfbGF5b3V0X2NvbnZlcnNpb24YMiABKA4yJC50ZW5z", + "b3JmbG93LlJld3JpdGVyQ29uZmlnLkNwdUxheW91dBI7ChBsYXlvdXRfb3B0", + "aW1pemVyGAEgASgOMiEudGVuc29yZmxvdy5SZXdyaXRlckNvbmZpZy5Ub2dn", + "bGUSOwoQY29uc3RhbnRfZm9sZGluZxgDIAEoDjIhLnRlbnNvcmZsb3cuUmV3", + "cml0ZXJDb25maWcuVG9nZ2xlEj0KEnNoYXBlX29wdGltaXphdGlvbhgNIAEo", + "DjIhLnRlbnNvcmZsb3cuUmV3cml0ZXJDb25maWcuVG9nZ2xlEjQKCXJlbWFw", + "cGluZxgOIAEoDjIhLnRlbnNvcmZsb3cuUmV3cml0ZXJDb25maWcuVG9nZ2xl", + "EkYKG2NvbW1vbl9zdWJncmFwaF9lbGltaW5hdGlvbhgYIAEoDjIhLnRlbnNv", + "cmZsb3cuUmV3cml0ZXJDb25maWcuVG9nZ2xlEkIKF2FyaXRobWV0aWNfb3B0", + "aW1pemF0aW9uGAcgASgOMiEudGVuc29yZmxvdy5SZXdyaXRlckNvbmZpZy5U", + "b2dnbGUSQgoXZGVwZW5kZW5jeV9vcHRpbWl6YXRpb24YCCABKA4yIS50ZW5z", + "b3JmbG93LlJld3JpdGVyQ29uZmlnLlRvZ2dsZRI8ChFsb29wX29wdGltaXph", + "dGlvbhgJIAEoDjIhLnRlbnNvcmZsb3cuUmV3cml0ZXJDb25maWcuVG9nZ2xl", + "EkAKFWZ1bmN0aW9uX29wdGltaXphdGlvbhgKIAEoDjIhLnRlbnNvcmZsb3cu", + "UmV3cml0ZXJDb25maWcuVG9nZ2xlEjkKDmRlYnVnX3N0cmlwcGVyGAsgASgO", + "MiEudGVuc29yZmxvdy5SZXdyaXRlckNvbmZpZy5Ub2dnbGUSHQoVZGlzYWJs", + "ZV9tb2RlbF9wcnVuaW5nGAIgASgIEkgKHXNjb3BlZF9hbGxvY2F0b3Jfb3B0", + "aW1pemF0aW9uGA8gASgOMiEudGVuc29yZmxvdy5SZXdyaXRlckNvbmZpZy5U", + "b2dnbGUSQwoYcGluX3RvX2hvc3Rfb3B0aW1pemF0aW9uGBIgASgOMiEudGVu", + "c29yZmxvdy5SZXdyaXRlckNvbmZpZy5Ub2dnbGUSQgoXaW1wbGVtZW50YXRp", + "b25fc2VsZWN0b3IYFiABKA4yIS50ZW5zb3JmbG93LlJld3JpdGVyQ29uZmln", + "LlRvZ2dsZRI/ChRhdXRvX21peGVkX3ByZWNpc2lvbhgXIAEoDjIhLnRlbnNv", + "cmZsb3cuUmV3cml0ZXJDb25maWcuVG9nZ2xlEkMKGGF1dG9fbWl4ZWRfcHJl", + "Y2lzaW9uX21rbBgZIAEoDjIhLnRlbnNvcmZsb3cuUmV3cml0ZXJDb25maWcu", + "VG9nZ2xlEh4KFmRpc2FibGVfbWV0YV9vcHRpbWl6ZXIYEyABKAgSQAoVdXNl", + "X3BsdWdpbl9vcHRpbWl6ZXJzGBwgASgOMiEudGVuc29yZmxvdy5SZXdyaXRl", + "ckNvbmZpZy5Ub2dnbGUSTwoZbWV0YV9vcHRpbWl6ZXJfaXRlcmF0aW9ucxgM", "IAEoDjIsLnRlbnNvcmZsb3cuUmV3cml0ZXJDb25maWcuTnVtSXRlcmF0aW9u", - "c1R5cGUSFwoPbWluX2dyYXBoX25vZGVzGBEgASgFEkIKE21lbW9yeV9vcHRp", - "bWl6YXRpb24YBCABKA4yJS50ZW5zb3JmbG93LlJld3JpdGVyQ29uZmlnLk1l", - "bU9wdFR5cGUSLwonbWVtb3J5X29wdGltaXplcl90YXJnZXRfbm9kZV9uYW1l", - "X3Njb3BlGAYgASgJEiEKGW1ldGFfb3B0aW1pemVyX3RpbWVvdXRfbXMYFCAB", - "KAMSNgoNYXV0b19wYXJhbGxlbBgFIAEoCzIfLnRlbnNvcmZsb3cuQXV0b1Bh", - "cmFsbGVsT3B0aW9ucxIgChhmYWlsX29uX29wdGltaXplcl9lcnJvcnMYFSAB", - "KAgSQQoVc2NvcGVkX2FsbG9jYXRvcl9vcHRzGBAgASgLMiIudGVuc29yZmxv", - "dy5TY29wZWRBbGxvY2F0b3JPcHRpb25zEhIKCm9wdGltaXplcnMYZCADKAkS", - "SwoRY3VzdG9tX29wdGltaXplcnMYyAEgAygLMi8udGVuc29yZmxvdy5SZXdy", - "aXRlckNvbmZpZy5DdXN0b21HcmFwaE9wdGltaXplchJECh9pbnRlcl9vcHRp", - "bWl6ZXJfdmVyaWZpZXJfY29uZmlnGKwCIAEoCzIaLnRlbnNvcmZsb3cuVmVy", - "aWZpZXJDb25maWcSRgohcG9zdF9vcHRpbWl6YXRpb25fdmVyaWZpZXJfY29u", - "ZmlnGK0CIAEoCzIaLnRlbnNvcmZsb3cuVmVyaWZpZXJDb25maWcaygEKFEN1", - "c3RvbUdyYXBoT3B0aW1pemVyEgwKBG5hbWUYASABKAkSWAoNcGFyYW1ldGVy", - "X21hcBgCIAMoCzJBLnRlbnNvcmZsb3cuUmV3cml0ZXJDb25maWcuQ3VzdG9t", - "R3JhcGhPcHRpbWl6ZXIuUGFyYW1ldGVyTWFwRW50cnkaSgoRUGFyYW1ldGVy", - "TWFwRW50cnkSCwoDa2V5GAEgASgJEiQKBXZhbHVlGAIgASgLMhUudGVuc29y", - "Zmxvdy5BdHRyVmFsdWU6AjgBIjYKBlRvZ2dsZRILCgdERUZBVUxUEAASBgoC", - "T04QARIHCgNPRkYQAhIOCgpBR0dSRVNTSVZFEAMiPAoRTnVtSXRlcmF0aW9u", - "c1R5cGUSFQoRREVGQVVMVF9OVU1fSVRFUlMQABIHCgNPTkUQARIHCgNUV08Q", - "AiKfAQoKTWVtT3B0VHlwZRITCg9ERUZBVUxUX01FTV9PUFQQABIOCgpOT19N", - "RU1fT1BUEAESCgoGTUFOVUFMEAISFwoTU1dBUFBJTkdfSEVVUklTVElDUxAE", - "EhwKGFJFQ09NUFVUQVRJT05fSEVVUklTVElDUxAFEhkKFVNDSEVEVUxJTkdf", - "SEVVUklTVElDUxAGEg4KCkhFVVJJU1RJQ1MQA0J/ChhvcmcudGVuc29yZmxv", - "dy5mcmFtZXdvcmtCFFJld3JpdGVyQ29uZmlnUHJvdG9zUAFaSGdpdGh1Yi5j", - "b20vdGVuc29yZmxvdy90ZW5zb3JmbG93L3RlbnNvcmZsb3cvZ28vY29yZS9j", - "b3JlX3Byb3Rvc19nb19wcm90b/gBAWIGcHJvdG8z")); + "c1R5cGUSFwoPbWluX2dyYXBoX25vZGVzGBEgASgFEjsKM2V4cGVyaW1lbnRh", + "bF9kaXNhYmxlX2NvbXByZXNzZWRfdGVuc29yX29wdGltaXphdGlvbhgaIAEo", + "CBI7CjNleHBlcmltZW50YWxfZGlzYWJsZV9mb2xkaW5nX3F1YW50aXphdGlv", + "bl9lbXVsYXRpb24YGyABKAgSQgoTbWVtb3J5X29wdGltaXphdGlvbhgEIAEo", + "DjIlLnRlbnNvcmZsb3cuUmV3cml0ZXJDb25maWcuTWVtT3B0VHlwZRIvCidt", + "ZW1vcnlfb3B0aW1pemVyX3RhcmdldF9ub2RlX25hbWVfc2NvcGUYBiABKAkS", + "IQoZbWV0YV9vcHRpbWl6ZXJfdGltZW91dF9tcxgUIAEoAxI2Cg1hdXRvX3Bh", + "cmFsbGVsGAUgASgLMh8udGVuc29yZmxvdy5BdXRvUGFyYWxsZWxPcHRpb25z", + "EiAKGGZhaWxfb25fb3B0aW1pemVyX2Vycm9ycxgVIAEoCBJBChVzY29wZWRf", + "YWxsb2NhdG9yX29wdHMYECABKAsyIi50ZW5zb3JmbG93LlNjb3BlZEFsbG9j", + "YXRvck9wdGlvbnMSEgoKb3B0aW1pemVycxhkIAMoCRJLChFjdXN0b21fb3B0", + "aW1pemVycxjIASADKAsyLy50ZW5zb3JmbG93LlJld3JpdGVyQ29uZmlnLkN1", + "c3RvbUdyYXBoT3B0aW1pemVyEkQKH2ludGVyX29wdGltaXplcl92ZXJpZmll", + "cl9jb25maWcYrAIgASgLMhoudGVuc29yZmxvdy5WZXJpZmllckNvbmZpZxJG", + "CiFwb3N0X29wdGltaXphdGlvbl92ZXJpZmllcl9jb25maWcYrQIgASgLMhou", + "dGVuc29yZmxvdy5WZXJpZmllckNvbmZpZxrKAQoUQ3VzdG9tR3JhcGhPcHRp", + "bWl6ZXISDAoEbmFtZRgBIAEoCRJYCg1wYXJhbWV0ZXJfbWFwGAIgAygLMkEu", + "dGVuc29yZmxvdy5SZXdyaXRlckNvbmZpZy5DdXN0b21HcmFwaE9wdGltaXpl", + "ci5QYXJhbWV0ZXJNYXBFbnRyeRpKChFQYXJhbWV0ZXJNYXBFbnRyeRILCgNr", + "ZXkYASABKAkSJAoFdmFsdWUYAiABKAsyFS50ZW5zb3JmbG93LkF0dHJWYWx1", + "ZToCOAEiNgoGVG9nZ2xlEgsKB0RFRkFVTFQQABIGCgJPThABEgcKA09GRhAC", + "Eg4KCkFHR1JFU1NJVkUQAyJJCglDcHVMYXlvdXQSGAoUTk9fQ09OVkVSU0lP", + "Tl9PTl9DUFUQABIQCgxOQ0hXX1RPX05IV0MQARIQCgxOSFdDX1RPX05DSFcQ", + "AiI8ChFOdW1JdGVyYXRpb25zVHlwZRIVChFERUZBVUxUX05VTV9JVEVSUxAA", + "EgcKA09ORRABEgcKA1RXTxACIp8BCgpNZW1PcHRUeXBlEhMKD0RFRkFVTFRf", + "TUVNX09QVBAAEg4KCk5PX01FTV9PUFQQARIKCgZNQU5VQUwQAhIXChNTV0FQ", + "UElOR19IRVVSSVNUSUNTEAQSHAoYUkVDT01QVVRBVElPTl9IRVVSSVNUSUNT", + "EAUSGQoVU0NIRURVTElOR19IRVVSSVNUSUNTEAYSDgoKSEVVUklTVElDUxAD", + "QowBChhvcmcudGVuc29yZmxvdy5mcmFtZXdvcmtCFFJld3JpdGVyQ29uZmln", + "UHJvdG9zUAFaVWdpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3JmbG93L3Rl", + "bnNvcmZsb3cvZ28vY29yZS9wcm90b2J1Zi9mb3JfY29yZV9wcm90b3NfZ29f", + "cHJvdG/4AQFiBnByb3RvMw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Tensorflow.AttrValueReflection.Descriptor, global::Tensorflow.VerifierConfigReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.AutoParallelOptions), global::Tensorflow.AutoParallelOptions.Parser, new[]{ "Enable", "NumReplicas" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.ScopedAllocatorOptions), global::Tensorflow.ScopedAllocatorOptions.Parser, new[]{ "EnableOp" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.RewriterConfig), global::Tensorflow.RewriterConfig.Parser, new[]{ "LayoutOptimizer", "ConstantFolding", "ShapeOptimization", "Remapping", "CommonSubgraphElimination", "ArithmeticOptimization", "DependencyOptimization", "LoopOptimization", "FunctionOptimization", "DebugStripper", "DisableModelPruning", "ScopedAllocatorOptimization", "PinToHostOptimization", "ImplementationSelector", "AutoMixedPrecision", "AutoMixedPrecisionMkl", "DisableMetaOptimizer", "MetaOptimizerIterations", "MinGraphNodes", "MemoryOptimization", "MemoryOptimizerTargetNodeNameScope", "MetaOptimizerTimeoutMs", "AutoParallel", "FailOnOptimizerErrors", "ScopedAllocatorOpts", "Optimizers", "CustomOptimizers", "InterOptimizerVerifierConfig", "PostOptimizationVerifierConfig" }, null, new[]{ typeof(global::Tensorflow.RewriterConfig.Types.Toggle), typeof(global::Tensorflow.RewriterConfig.Types.NumIterationsType), typeof(global::Tensorflow.RewriterConfig.Types.MemOptType) }, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.RewriterConfig.Types.CustomGraphOptimizer), global::Tensorflow.RewriterConfig.Types.CustomGraphOptimizer.Parser, new[]{ "Name", "ParameterMap" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, })}) + new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.RewriterConfig), global::Tensorflow.RewriterConfig.Parser, new[]{ "CpuLayoutConversion", "LayoutOptimizer", "ConstantFolding", "ShapeOptimization", "Remapping", "CommonSubgraphElimination", "ArithmeticOptimization", "DependencyOptimization", "LoopOptimization", "FunctionOptimization", "DebugStripper", "DisableModelPruning", "ScopedAllocatorOptimization", "PinToHostOptimization", "ImplementationSelector", "AutoMixedPrecision", "AutoMixedPrecisionMkl", "DisableMetaOptimizer", "UsePluginOptimizers", "MetaOptimizerIterations", "MinGraphNodes", "ExperimentalDisableCompressedTensorOptimization", "ExperimentalDisableFoldingQuantizationEmulation", "MemoryOptimization", "MemoryOptimizerTargetNodeNameScope", "MetaOptimizerTimeoutMs", "AutoParallel", "FailOnOptimizerErrors", "ScopedAllocatorOpts", "Optimizers", "CustomOptimizers", "InterOptimizerVerifierConfig", "PostOptimizationVerifierConfig" }, null, new[]{ typeof(global::Tensorflow.RewriterConfig.Types.Toggle), typeof(global::Tensorflow.RewriterConfig.Types.CpuLayout), typeof(global::Tensorflow.RewriterConfig.Types.NumIterationsType), typeof(global::Tensorflow.RewriterConfig.Types.MemOptType) }, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.RewriterConfig.Types.CustomGraphOptimizer), global::Tensorflow.RewriterConfig.Types.CustomGraphOptimizer.Parser, new[]{ "Name", "ParameterMap" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, })}) })); } #endregion @@ -404,6 +412,7 @@ namespace Tensorflow { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public RewriterConfig(RewriterConfig other) : this() { + cpuLayoutConversion_ = other.cpuLayoutConversion_; layoutOptimizer_ = other.layoutOptimizer_; constantFolding_ = other.constantFolding_; shapeOptimization_ = other.shapeOptimization_; @@ -421,8 +430,11 @@ namespace Tensorflow { autoMixedPrecision_ = other.autoMixedPrecision_; autoMixedPrecisionMkl_ = other.autoMixedPrecisionMkl_; disableMetaOptimizer_ = other.disableMetaOptimizer_; + usePluginOptimizers_ = other.usePluginOptimizers_; metaOptimizerIterations_ = other.metaOptimizerIterations_; minGraphNodes_ = other.minGraphNodes_; + experimentalDisableCompressedTensorOptimization_ = other.experimentalDisableCompressedTensorOptimization_; + experimentalDisableFoldingQuantizationEmulation_ = other.experimentalDisableFoldingQuantizationEmulation_; memoryOptimization_ = other.memoryOptimization_; memoryOptimizerTargetNodeNameScope_ = other.memoryOptimizerTargetNodeNameScope_; metaOptimizerTimeoutMs_ = other.metaOptimizerTimeoutMs_; @@ -441,6 +453,20 @@ namespace Tensorflow { return new RewriterConfig(this); } + /// Field number for the "cpu_layout_conversion" field. + public const int CpuLayoutConversionFieldNumber = 50; + private global::Tensorflow.RewriterConfig.Types.CpuLayout cpuLayoutConversion_ = global::Tensorflow.RewriterConfig.Types.CpuLayout.NoConversionOnCpu; + /// + /// CPU Conversion settings between NHCW and NCHW. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public global::Tensorflow.RewriterConfig.Types.CpuLayout CpuLayoutConversion { + get { return cpuLayoutConversion_; } + set { + cpuLayoutConversion_ = value; + } + } + /// Field number for the "layout_optimizer" field. public const int LayoutOptimizerFieldNumber = 1; private global::Tensorflow.RewriterConfig.Types.Toggle layoutOptimizer_ = global::Tensorflow.RewriterConfig.Types.Toggle.Default; @@ -694,6 +720,20 @@ namespace Tensorflow { } } + /// Field number for the "use_plugin_optimizers" field. + public const int UsePluginOptimizersFieldNumber = 28; + private global::Tensorflow.RewriterConfig.Types.Toggle usePluginOptimizers_ = global::Tensorflow.RewriterConfig.Types.Toggle.Default; + /// + /// Optimizers registered by plugin (default is ON) + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public global::Tensorflow.RewriterConfig.Types.Toggle UsePluginOptimizers { + get { return usePluginOptimizers_; } + set { + usePluginOptimizers_ = value; + } + } + /// Field number for the "meta_optimizer_iterations" field. public const int MetaOptimizerIterationsFieldNumber = 12; private global::Tensorflow.RewriterConfig.Types.NumIterationsType metaOptimizerIterations_ = global::Tensorflow.RewriterConfig.Types.NumIterationsType.DefaultNumIters; @@ -726,6 +766,40 @@ namespace Tensorflow { } } + /// Field number for the "experimental_disable_compressed_tensor_optimization" field. + public const int ExperimentalDisableCompressedTensorOptimizationFieldNumber = 26; + private bool experimentalDisableCompressedTensorOptimization_; + /// + /// Disable optimizations that assume compressed tensors. Note that this flag + /// is experimental and may be removed in the future. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool ExperimentalDisableCompressedTensorOptimization { + get { return experimentalDisableCompressedTensorOptimization_; } + set { + experimentalDisableCompressedTensorOptimization_ = value; + } + } + + /// Field number for the "experimental_disable_folding_quantization_emulation" field. + public const int ExperimentalDisableFoldingQuantizationEmulationFieldNumber = 27; + private bool experimentalDisableFoldingQuantizationEmulation_; + /// + /// Disable folding quantization emulation ops such as FakeQuantWithMinMax* and + /// QuantizeAndDequantize*. Some compilers (e.g. the TF-to-tflite converter) + /// have to extract quantization configs (e.g. min/max range, number of bits, + /// and per-channel) from the quantization emulation ops. Note that this flag + /// is experimental and may be removed in the future. See b/174138564 for more + /// details. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool ExperimentalDisableFoldingQuantizationEmulation { + get { return experimentalDisableFoldingQuantizationEmulation_; } + set { + experimentalDisableFoldingQuantizationEmulation_ = value; + } + } + /// Field number for the "memory_optimization" field. public const int MemoryOptimizationFieldNumber = 4; private global::Tensorflow.RewriterConfig.Types.MemOptType memoryOptimization_ = global::Tensorflow.RewriterConfig.Types.MemOptType.DefaultMemOpt; @@ -900,6 +974,7 @@ namespace Tensorflow { if (ReferenceEquals(other, this)) { return true; } + if (CpuLayoutConversion != other.CpuLayoutConversion) return false; if (LayoutOptimizer != other.LayoutOptimizer) return false; if (ConstantFolding != other.ConstantFolding) return false; if (ShapeOptimization != other.ShapeOptimization) return false; @@ -917,8 +992,11 @@ namespace Tensorflow { if (AutoMixedPrecision != other.AutoMixedPrecision) return false; if (AutoMixedPrecisionMkl != other.AutoMixedPrecisionMkl) return false; if (DisableMetaOptimizer != other.DisableMetaOptimizer) return false; + if (UsePluginOptimizers != other.UsePluginOptimizers) return false; if (MetaOptimizerIterations != other.MetaOptimizerIterations) return false; if (MinGraphNodes != other.MinGraphNodes) return false; + if (ExperimentalDisableCompressedTensorOptimization != other.ExperimentalDisableCompressedTensorOptimization) return false; + if (ExperimentalDisableFoldingQuantizationEmulation != other.ExperimentalDisableFoldingQuantizationEmulation) return false; if (MemoryOptimization != other.MemoryOptimization) return false; if (MemoryOptimizerTargetNodeNameScope != other.MemoryOptimizerTargetNodeNameScope) return false; if (MetaOptimizerTimeoutMs != other.MetaOptimizerTimeoutMs) return false; @@ -935,6 +1013,7 @@ namespace Tensorflow { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override int GetHashCode() { int hash = 1; + if (CpuLayoutConversion != global::Tensorflow.RewriterConfig.Types.CpuLayout.NoConversionOnCpu) hash ^= CpuLayoutConversion.GetHashCode(); if (LayoutOptimizer != global::Tensorflow.RewriterConfig.Types.Toggle.Default) hash ^= LayoutOptimizer.GetHashCode(); if (ConstantFolding != global::Tensorflow.RewriterConfig.Types.Toggle.Default) hash ^= ConstantFolding.GetHashCode(); if (ShapeOptimization != global::Tensorflow.RewriterConfig.Types.Toggle.Default) hash ^= ShapeOptimization.GetHashCode(); @@ -952,8 +1031,11 @@ namespace Tensorflow { if (AutoMixedPrecision != global::Tensorflow.RewriterConfig.Types.Toggle.Default) hash ^= AutoMixedPrecision.GetHashCode(); if (AutoMixedPrecisionMkl != global::Tensorflow.RewriterConfig.Types.Toggle.Default) hash ^= AutoMixedPrecisionMkl.GetHashCode(); if (DisableMetaOptimizer != false) hash ^= DisableMetaOptimizer.GetHashCode(); + if (UsePluginOptimizers != global::Tensorflow.RewriterConfig.Types.Toggle.Default) hash ^= UsePluginOptimizers.GetHashCode(); if (MetaOptimizerIterations != global::Tensorflow.RewriterConfig.Types.NumIterationsType.DefaultNumIters) hash ^= MetaOptimizerIterations.GetHashCode(); if (MinGraphNodes != 0) hash ^= MinGraphNodes.GetHashCode(); + if (ExperimentalDisableCompressedTensorOptimization != false) hash ^= ExperimentalDisableCompressedTensorOptimization.GetHashCode(); + if (ExperimentalDisableFoldingQuantizationEmulation != false) hash ^= ExperimentalDisableFoldingQuantizationEmulation.GetHashCode(); if (MemoryOptimization != global::Tensorflow.RewriterConfig.Types.MemOptType.DefaultMemOpt) hash ^= MemoryOptimization.GetHashCode(); if (MemoryOptimizerTargetNodeNameScope.Length != 0) hash ^= MemoryOptimizerTargetNodeNameScope.GetHashCode(); if (MetaOptimizerTimeoutMs != 0L) hash ^= MetaOptimizerTimeoutMs.GetHashCode(); @@ -1077,6 +1159,22 @@ namespace Tensorflow { output.WriteRawTag(200, 1); output.WriteEnum((int) AutoMixedPrecisionMkl); } + if (ExperimentalDisableCompressedTensorOptimization != false) { + output.WriteRawTag(208, 1); + output.WriteBool(ExperimentalDisableCompressedTensorOptimization); + } + if (ExperimentalDisableFoldingQuantizationEmulation != false) { + output.WriteRawTag(216, 1); + output.WriteBool(ExperimentalDisableFoldingQuantizationEmulation); + } + if (UsePluginOptimizers != global::Tensorflow.RewriterConfig.Types.Toggle.Default) { + output.WriteRawTag(224, 1); + output.WriteEnum((int) UsePluginOptimizers); + } + if (CpuLayoutConversion != global::Tensorflow.RewriterConfig.Types.CpuLayout.NoConversionOnCpu) { + output.WriteRawTag(144, 3); + output.WriteEnum((int) CpuLayoutConversion); + } optimizers_.WriteTo(output, _repeated_optimizers_codec); customOptimizers_.WriteTo(output, _repeated_customOptimizers_codec); if (interOptimizerVerifierConfig_ != null) { @@ -1095,6 +1193,9 @@ namespace Tensorflow { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public int CalculateSize() { int size = 0; + if (CpuLayoutConversion != global::Tensorflow.RewriterConfig.Types.CpuLayout.NoConversionOnCpu) { + size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) CpuLayoutConversion); + } if (LayoutOptimizer != global::Tensorflow.RewriterConfig.Types.Toggle.Default) { size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) LayoutOptimizer); } @@ -1146,12 +1247,21 @@ namespace Tensorflow { if (DisableMetaOptimizer != false) { size += 2 + 1; } + if (UsePluginOptimizers != global::Tensorflow.RewriterConfig.Types.Toggle.Default) { + size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) UsePluginOptimizers); + } if (MetaOptimizerIterations != global::Tensorflow.RewriterConfig.Types.NumIterationsType.DefaultNumIters) { size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) MetaOptimizerIterations); } if (MinGraphNodes != 0) { size += 2 + pb::CodedOutputStream.ComputeInt32Size(MinGraphNodes); } + if (ExperimentalDisableCompressedTensorOptimization != false) { + size += 2 + 1; + } + if (ExperimentalDisableFoldingQuantizationEmulation != false) { + size += 2 + 1; + } if (MemoryOptimization != global::Tensorflow.RewriterConfig.Types.MemOptType.DefaultMemOpt) { size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) MemoryOptimization); } @@ -1189,6 +1299,9 @@ namespace Tensorflow { if (other == null) { return; } + if (other.CpuLayoutConversion != global::Tensorflow.RewriterConfig.Types.CpuLayout.NoConversionOnCpu) { + CpuLayoutConversion = other.CpuLayoutConversion; + } if (other.LayoutOptimizer != global::Tensorflow.RewriterConfig.Types.Toggle.Default) { LayoutOptimizer = other.LayoutOptimizer; } @@ -1240,12 +1353,21 @@ namespace Tensorflow { if (other.DisableMetaOptimizer != false) { DisableMetaOptimizer = other.DisableMetaOptimizer; } + if (other.UsePluginOptimizers != global::Tensorflow.RewriterConfig.Types.Toggle.Default) { + UsePluginOptimizers = other.UsePluginOptimizers; + } if (other.MetaOptimizerIterations != global::Tensorflow.RewriterConfig.Types.NumIterationsType.DefaultNumIters) { MetaOptimizerIterations = other.MetaOptimizerIterations; } if (other.MinGraphNodes != 0) { MinGraphNodes = other.MinGraphNodes; } + if (other.ExperimentalDisableCompressedTensorOptimization != false) { + ExperimentalDisableCompressedTensorOptimization = other.ExperimentalDisableCompressedTensorOptimization; + } + if (other.ExperimentalDisableFoldingQuantizationEmulation != false) { + ExperimentalDisableFoldingQuantizationEmulation = other.ExperimentalDisableFoldingQuantizationEmulation; + } if (other.MemoryOptimization != global::Tensorflow.RewriterConfig.Types.MemOptType.DefaultMemOpt) { MemoryOptimization = other.MemoryOptimization; } @@ -1401,6 +1523,22 @@ namespace Tensorflow { AutoMixedPrecisionMkl = (global::Tensorflow.RewriterConfig.Types.Toggle) input.ReadEnum(); break; } + case 208: { + ExperimentalDisableCompressedTensorOptimization = input.ReadBool(); + break; + } + case 216: { + ExperimentalDisableFoldingQuantizationEmulation = input.ReadBool(); + break; + } + case 224: { + UsePluginOptimizers = (global::Tensorflow.RewriterConfig.Types.Toggle) input.ReadEnum(); + break; + } + case 400: { + CpuLayoutConversion = (global::Tensorflow.RewriterConfig.Types.CpuLayout) input.ReadEnum(); + break; + } case 802: { optimizers_.AddEntriesFrom(input, _repeated_optimizers_codec); break; @@ -1443,6 +1581,15 @@ namespace Tensorflow { [pbr::OriginalName("AGGRESSIVE")] Aggressive = 3, } + /// + /// Enum for layout conversion between NCHW and NHWC on CPU. Default is OFF. + /// + public enum CpuLayout { + [pbr::OriginalName("NO_CONVERSION_ON_CPU")] NoConversionOnCpu = 0, + [pbr::OriginalName("NCHW_TO_NHWC")] NchwToNhwc = 1, + [pbr::OriginalName("NHWC_TO_NCHW")] NhwcToNchw = 2, + } + /// /// Enum controlling the number of times to run optimizers. The default is to /// run them twice. diff --git a/src/TensorFlowNET.Core/Protobuf/SavedModel.cs b/src/TensorFlowNET.Core/Protobuf/SavedModel.cs index e7b9259a..a42481b4 100644 --- a/src/TensorFlowNET.Core/Protobuf/SavedModel.cs +++ b/src/TensorFlowNET.Core/Protobuf/SavedModel.cs @@ -28,10 +28,10 @@ namespace Tensorflow { "CnRlbnNvcmZsb3caKXRlbnNvcmZsb3cvY29yZS9wcm90b2J1Zi9tZXRhX2dy", "YXBoLnByb3RvIl8KClNhdmVkTW9kZWwSIgoac2F2ZWRfbW9kZWxfc2NoZW1h", "X3ZlcnNpb24YASABKAMSLQoLbWV0YV9ncmFwaHMYAiADKAsyGC50ZW5zb3Jm", - "bG93Lk1ldGFHcmFwaERlZkJ7ChhvcmcudGVuc29yZmxvdy5mcmFtZXdvcmtC", - "EFNhdmVkTW9kZWxQcm90b3NQAVpIZ2l0aHViLmNvbS90ZW5zb3JmbG93L3Rl", - "bnNvcmZsb3cvdGVuc29yZmxvdy9nby9jb3JlL2NvcmVfcHJvdG9zX2dvX3By", - "b3Rv+AEBYgZwcm90bzM=")); + "bG93Lk1ldGFHcmFwaERlZkKIAQoYb3JnLnRlbnNvcmZsb3cuZnJhbWV3b3Jr", + "QhBTYXZlZE1vZGVsUHJvdG9zUAFaVWdpdGh1Yi5jb20vdGVuc29yZmxvdy90", + "ZW5zb3JmbG93L3RlbnNvcmZsb3cvZ28vY29yZS9wcm90b2J1Zi9mb3JfY29y", + "ZV9wcm90b3NfZ29fcHJvdG/4AQFiBnByb3RvMw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Tensorflow.MetaGraphReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { diff --git a/src/TensorFlowNET.Core/Protobuf/SavedObjectGraph.cs b/src/TensorFlowNET.Core/Protobuf/SavedObjectGraph.cs index b8d9a0db..dc3c5318 100644 --- a/src/TensorFlowNET.Core/Protobuf/SavedObjectGraph.cs +++ b/src/TensorFlowNET.Core/Protobuf/SavedObjectGraph.cs @@ -61,24 +61,30 @@ namespace Tensorflow { "qAEKFVNhdmVkQ29uY3JldGVGdW5jdGlvbhIUCgxib3VuZF9pbnB1dHMYAiAD", "KAUSQgodY2Fub25pY2FsaXplZF9pbnB1dF9zaWduYXR1cmUYAyABKAsyGy50", "ZW5zb3JmbG93LlN0cnVjdHVyZWRWYWx1ZRI1ChBvdXRwdXRfc2lnbmF0dXJl", - "GAQgASgLMhsudGVuc29yZmxvdy5TdHJ1Y3R1cmVkVmFsdWUifAoZU2F2ZWRC", - "YXJlQ29uY3JldGVGdW5jdGlvbhIeChZjb25jcmV0ZV9mdW5jdGlvbl9uYW1l", - "GAEgASgJEhkKEWFyZ3VtZW50X2tleXdvcmRzGAIgAygJEiQKHGFsbG93ZWRf", - "cG9zaXRpb25hbF9hcmd1bWVudHMYAyABKAMiIgoNU2F2ZWRDb25zdGFudBIR", - "CglvcGVyYXRpb24YASABKAki9gEKDVNhdmVkVmFyaWFibGUSIwoFZHR5cGUY", - "ASABKA4yFC50ZW5zb3JmbG93LkRhdGFUeXBlEisKBXNoYXBlGAIgASgLMhwu", - "dGVuc29yZmxvdy5UZW5zb3JTaGFwZVByb3RvEhEKCXRyYWluYWJsZRgDIAEo", - "CBI8Cg9zeW5jaHJvbml6YXRpb24YBCABKA4yIy50ZW5zb3JmbG93LlZhcmlh", - "YmxlU3luY2hyb25pemF0aW9uEjQKC2FnZ3JlZ2F0aW9uGAUgASgOMh8udGVu", - "c29yZmxvdy5WYXJpYWJsZUFnZ3JlZ2F0aW9uEgwKBG5hbWUYBiABKAkilQEK", - "DEZ1bmN0aW9uU3BlYxIwCgtmdWxsYXJnc3BlYxgBIAEoCzIbLnRlbnNvcmZs", - "b3cuU3RydWN0dXJlZFZhbHVlEhEKCWlzX21ldGhvZBgCIAEoCBI0Cg9pbnB1", - "dF9zaWduYXR1cmUYBSABKAsyGy50ZW5zb3JmbG93LlN0cnVjdHVyZWRWYWx1", - "ZUoECAMQBEoECAQQBSIfCg1TYXZlZFJlc291cmNlEg4KBmRldmljZRgBIAEo", - "CSJBCg5TYXZlYWJsZU9iamVjdBIVCg1zYXZlX2Z1bmN0aW9uGAIgASgFEhgK", - "EHJlc3RvcmVfZnVuY3Rpb24YAyABKAVCTVpIZ2l0aHViLmNvbS90ZW5zb3Jm", - "bG93L3RlbnNvcmZsb3cvdGVuc29yZmxvdy9nby9jb3JlL2NvcmVfcHJvdG9z", - "X2dvX3Byb3Rv+AEBYgZwcm90bzM=")); + "GAQgASgLMhsudGVuc29yZmxvdy5TdHJ1Y3R1cmVkVmFsdWUirQEKGVNhdmVk", + "QmFyZUNvbmNyZXRlRnVuY3Rpb24SHgoWY29uY3JldGVfZnVuY3Rpb25fbmFt", + "ZRgBIAEoCRIZChFhcmd1bWVudF9rZXl3b3JkcxgCIAMoCRIkChxhbGxvd2Vk", + "X3Bvc2l0aW9uYWxfYXJndW1lbnRzGAMgASgDEi8KDWZ1bmN0aW9uX3NwZWMY", + "BCABKAsyGC50ZW5zb3JmbG93LkZ1bmN0aW9uU3BlYyIiCg1TYXZlZENvbnN0", + "YW50EhEKCW9wZXJhdGlvbhgBIAEoCSLXAgoNU2F2ZWRWYXJpYWJsZRIjCgVk", + "dHlwZRgBIAEoDjIULnRlbnNvcmZsb3cuRGF0YVR5cGUSKwoFc2hhcGUYAiAB", + "KAsyHC50ZW5zb3JmbG93LlRlbnNvclNoYXBlUHJvdG8SEQoJdHJhaW5hYmxl", + "GAMgASgIEjwKD3N5bmNocm9uaXphdGlvbhgEIAEoDjIjLnRlbnNvcmZsb3cu", + "VmFyaWFibGVTeW5jaHJvbml6YXRpb24SNAoLYWdncmVnYXRpb24YBSABKA4y", + "Hy50ZW5zb3JmbG93LlZhcmlhYmxlQWdncmVnYXRpb24SDAoEbmFtZRgGIAEo", + "CRIOCgZkZXZpY2UYByABKAkSTwosZXhwZXJpbWVudGFsX2Rpc3RyaWJ1dGVk", + "X3ZhcmlhYmxlX2NvbXBvbmVudHMYCCADKAsyGS50ZW5zb3JmbG93LlNhdmVk", + "VmFyaWFibGUi+wEKDEZ1bmN0aW9uU3BlYxIwCgtmdWxsYXJnc3BlYxgBIAEo", + "CzIbLnRlbnNvcmZsb3cuU3RydWN0dXJlZFZhbHVlEhEKCWlzX21ldGhvZBgC", + "IAEoCBI0Cg9pbnB1dF9zaWduYXR1cmUYBSABKAsyGy50ZW5zb3JmbG93LlN0", + "cnVjdHVyZWRWYWx1ZRI4CgtqaXRfY29tcGlsZRgGIAEoDjIjLnRlbnNvcmZs", + "b3cuRnVuY3Rpb25TcGVjLkppdENvbXBpbGUiKgoKSml0Q29tcGlsZRILCgdE", + "RUZBVUxUEAASBgoCT04QARIHCgNPRkYQAkoECAMQBEoECAQQBSIfCg1TYXZl", + "ZFJlc291cmNlEg4KBmRldmljZRgBIAEoCSJBCg5TYXZlYWJsZU9iamVjdBIV", + "Cg1zYXZlX2Z1bmN0aW9uGAIgASgFEhgKEHJlc3RvcmVfZnVuY3Rpb24YAyAB", + "KAVCWlpVZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmZsb3cvdGVuc29y", + "Zmxvdy9nby9jb3JlL3Byb3RvYnVmL2Zvcl9jb3JlX3Byb3Rvc19nb19wcm90", + "b/gBAWIGcHJvdG8z")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Tensorflow.TensorShapeReflection.Descriptor, global::Tensorflow.TypesReflection.Descriptor, global::Tensorflow.VariableReflection.Descriptor, global::Tensorflow.VersionsReflection.Descriptor, global::Tensorflow.StructReflection.Descriptor, global::Tensorflow.TrackableObjectGraphReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { @@ -88,10 +94,10 @@ namespace Tensorflow { new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.SavedAsset), global::Tensorflow.SavedAsset.Parser, new[]{ "AssetFileDefIndex" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.SavedFunction), global::Tensorflow.SavedFunction.Parser, new[]{ "ConcreteFunctions", "FunctionSpec" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.SavedConcreteFunction), global::Tensorflow.SavedConcreteFunction.Parser, new[]{ "BoundInputs", "CanonicalizedInputSignature", "OutputSignature" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.SavedBareConcreteFunction), global::Tensorflow.SavedBareConcreteFunction.Parser, new[]{ "ConcreteFunctionName", "ArgumentKeywords", "AllowedPositionalArguments" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.SavedBareConcreteFunction), global::Tensorflow.SavedBareConcreteFunction.Parser, new[]{ "ConcreteFunctionName", "ArgumentKeywords", "AllowedPositionalArguments", "FunctionSpec" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.SavedConstant), global::Tensorflow.SavedConstant.Parser, new[]{ "Operation" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.SavedVariable), global::Tensorflow.SavedVariable.Parser, new[]{ "Dtype", "Shape", "Trainable", "Synchronization", "Aggregation", "Name" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.FunctionSpec), global::Tensorflow.FunctionSpec.Parser, new[]{ "Fullargspec", "IsMethod", "InputSignature" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.SavedVariable), global::Tensorflow.SavedVariable.Parser, new[]{ "Dtype", "Shape", "Trainable", "Synchronization", "Aggregation", "Name", "Device", "ExperimentalDistributedVariableComponents" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.FunctionSpec), global::Tensorflow.FunctionSpec.Parser, new[]{ "Fullargspec", "IsMethod", "InputSignature", "JitCompile" }, null, new[]{ typeof(global::Tensorflow.FunctionSpec.Types.JitCompile) }, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.SavedResource), global::Tensorflow.SavedResource.Parser, new[]{ "Device" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.SaveableObject), global::Tensorflow.SaveableObject.Parser, new[]{ "SaveFunction", "RestoreFunction" }, null, null, null, null) })); @@ -320,7 +326,7 @@ namespace Tensorflow { /// Objects which this object depends on: named edges in the dependency /// graph. /// - /// Note: currently only valid if kind == "user_object". + /// Note: currently only valid if kind == "user_object" or "resource". /// [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public pbc::RepeatedField Children { @@ -799,6 +805,9 @@ namespace Tensorflow { public const int MetadataFieldNumber = 3; private string metadata_ = ""; /// + /// Deprecated! At the time of deprecation, Keras was the only user of this + /// field, and its saving and loading code will be updated shortly. + /// Please save your application-specific metadata to separate file /// Initialization-related metadata. /// [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -1468,6 +1477,7 @@ namespace Tensorflow { concreteFunctionName_ = other.concreteFunctionName_; argumentKeywords_ = other.argumentKeywords_.Clone(); allowedPositionalArguments_ = other.allowedPositionalArguments_; + functionSpec_ = other.functionSpec_ != null ? other.functionSpec_.Clone() : null; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } @@ -1517,6 +1527,25 @@ namespace Tensorflow { } } + /// Field number for the "function_spec" field. + public const int FunctionSpecFieldNumber = 4; + private global::Tensorflow.FunctionSpec functionSpec_; + /// + /// The spec of the function that this ConcreteFunction is traced from. This + /// allows the ConcreteFunction to be called with nest structure inputs. This + /// field may not be populated. If this field is absent, the concrete function + /// can only be called with flat inputs. + /// TODO(b/169361281): support calling saved ConcreteFunction with structured + /// inputs in C++ SavedModel API. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public global::Tensorflow.FunctionSpec FunctionSpec { + get { return functionSpec_; } + set { + functionSpec_ = value; + } + } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override bool Equals(object other) { return Equals(other as SavedBareConcreteFunction); @@ -1533,6 +1562,7 @@ namespace Tensorflow { if (ConcreteFunctionName != other.ConcreteFunctionName) return false; if(!argumentKeywords_.Equals(other.argumentKeywords_)) return false; if (AllowedPositionalArguments != other.AllowedPositionalArguments) return false; + if (!object.Equals(FunctionSpec, other.FunctionSpec)) return false; return Equals(_unknownFields, other._unknownFields); } @@ -1542,6 +1572,7 @@ namespace Tensorflow { if (ConcreteFunctionName.Length != 0) hash ^= ConcreteFunctionName.GetHashCode(); hash ^= argumentKeywords_.GetHashCode(); if (AllowedPositionalArguments != 0L) hash ^= AllowedPositionalArguments.GetHashCode(); + if (functionSpec_ != null) hash ^= FunctionSpec.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -1564,6 +1595,10 @@ namespace Tensorflow { output.WriteRawTag(24); output.WriteInt64(AllowedPositionalArguments); } + if (functionSpec_ != null) { + output.WriteRawTag(34); + output.WriteMessage(FunctionSpec); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -1579,6 +1614,9 @@ namespace Tensorflow { if (AllowedPositionalArguments != 0L) { size += 1 + pb::CodedOutputStream.ComputeInt64Size(AllowedPositionalArguments); } + if (functionSpec_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(FunctionSpec); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -1597,6 +1635,12 @@ namespace Tensorflow { if (other.AllowedPositionalArguments != 0L) { AllowedPositionalArguments = other.AllowedPositionalArguments; } + if (other.functionSpec_ != null) { + if (functionSpec_ == null) { + FunctionSpec = new global::Tensorflow.FunctionSpec(); + } + FunctionSpec.MergeFrom(other.FunctionSpec); + } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -1620,6 +1664,13 @@ namespace Tensorflow { AllowedPositionalArguments = input.ReadInt64(); break; } + case 34: { + if (functionSpec_ == null) { + FunctionSpec = new global::Tensorflow.FunctionSpec(); + } + input.ReadMessage(FunctionSpec); + break; + } } } } @@ -1793,6 +1844,8 @@ namespace Tensorflow { synchronization_ = other.synchronization_; aggregation_ = other.aggregation_; name_ = other.name_; + device_ = other.device_; + experimentalDistributedVariableComponents_ = other.experimentalDistributedVariableComponents_.Clone(); _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } @@ -1867,6 +1920,35 @@ namespace Tensorflow { } } + /// Field number for the "device" field. + public const int DeviceFieldNumber = 7; + private string device_ = ""; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string Device { + get { return device_; } + set { + device_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + /// Field number for the "experimental_distributed_variable_components" field. + public const int ExperimentalDistributedVariableComponentsFieldNumber = 8; + private static readonly pb::FieldCodec _repeated_experimentalDistributedVariableComponents_codec + = pb::FieldCodec.ForMessage(66, global::Tensorflow.SavedVariable.Parser); + private readonly pbc::RepeatedField experimentalDistributedVariableComponents_ = new pbc::RepeatedField(); + /// + /// List of component variables for a distributed variable. + /// + /// When this field is non-empty, the SavedVariable will be assumed + /// to be a distributed variable defined by the components listed here. + /// + /// This is only supported by experimental loaders at the moment. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public pbc::RepeatedField ExperimentalDistributedVariableComponents { + get { return experimentalDistributedVariableComponents_; } + } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override bool Equals(object other) { return Equals(other as SavedVariable); @@ -1886,6 +1968,8 @@ namespace Tensorflow { if (Synchronization != other.Synchronization) return false; if (Aggregation != other.Aggregation) return false; if (Name != other.Name) return false; + if (Device != other.Device) return false; + if(!experimentalDistributedVariableComponents_.Equals(other.experimentalDistributedVariableComponents_)) return false; return Equals(_unknownFields, other._unknownFields); } @@ -1898,6 +1982,8 @@ namespace Tensorflow { if (Synchronization != global::Tensorflow.VariableSynchronization.Auto) hash ^= Synchronization.GetHashCode(); if (Aggregation != global::Tensorflow.VariableAggregation.None) hash ^= Aggregation.GetHashCode(); if (Name.Length != 0) hash ^= Name.GetHashCode(); + if (Device.Length != 0) hash ^= Device.GetHashCode(); + hash ^= experimentalDistributedVariableComponents_.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -1935,6 +2021,11 @@ namespace Tensorflow { output.WriteRawTag(50); output.WriteString(Name); } + if (Device.Length != 0) { + output.WriteRawTag(58); + output.WriteString(Device); + } + experimentalDistributedVariableComponents_.WriteTo(output, _repeated_experimentalDistributedVariableComponents_codec); if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -1961,6 +2052,10 @@ namespace Tensorflow { if (Name.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(Name); } + if (Device.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Device); + } + size += experimentalDistributedVariableComponents_.CalculateSize(_repeated_experimentalDistributedVariableComponents_codec); if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -1993,6 +2088,10 @@ namespace Tensorflow { if (other.Name.Length != 0) { Name = other.Name; } + if (other.Device.Length != 0) { + Device = other.Device; + } + experimentalDistributedVariableComponents_.Add(other.experimentalDistributedVariableComponents_); _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -2031,6 +2130,14 @@ namespace Tensorflow { Name = input.ReadString(); break; } + case 58: { + Device = input.ReadString(); + break; + } + case 66: { + experimentalDistributedVariableComponents_.AddEntriesFrom(input, _repeated_experimentalDistributedVariableComponents_codec); + break; + } } } } @@ -2069,6 +2176,7 @@ namespace Tensorflow { fullargspec_ = other.fullargspec_ != null ? other.fullargspec_.Clone() : null; isMethod_ = other.isMethod_; inputSignature_ = other.inputSignature_ != null ? other.inputSignature_.Clone() : null; + jitCompile_ = other.jitCompile_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } @@ -2119,6 +2227,17 @@ namespace Tensorflow { } } + /// Field number for the "jit_compile" field. + public const int JitCompileFieldNumber = 6; + private global::Tensorflow.FunctionSpec.Types.JitCompile jitCompile_ = global::Tensorflow.FunctionSpec.Types.JitCompile.Default; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public global::Tensorflow.FunctionSpec.Types.JitCompile JitCompile { + get { return jitCompile_; } + set { + jitCompile_ = value; + } + } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override bool Equals(object other) { return Equals(other as FunctionSpec); @@ -2135,6 +2254,7 @@ namespace Tensorflow { if (!object.Equals(Fullargspec, other.Fullargspec)) return false; if (IsMethod != other.IsMethod) return false; if (!object.Equals(InputSignature, other.InputSignature)) return false; + if (JitCompile != other.JitCompile) return false; return Equals(_unknownFields, other._unknownFields); } @@ -2144,6 +2264,7 @@ namespace Tensorflow { if (fullargspec_ != null) hash ^= Fullargspec.GetHashCode(); if (IsMethod != false) hash ^= IsMethod.GetHashCode(); if (inputSignature_ != null) hash ^= InputSignature.GetHashCode(); + if (JitCompile != global::Tensorflow.FunctionSpec.Types.JitCompile.Default) hash ^= JitCompile.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -2169,6 +2290,10 @@ namespace Tensorflow { output.WriteRawTag(42); output.WriteMessage(InputSignature); } + if (JitCompile != global::Tensorflow.FunctionSpec.Types.JitCompile.Default) { + output.WriteRawTag(48); + output.WriteEnum((int) JitCompile); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -2186,6 +2311,9 @@ namespace Tensorflow { if (inputSignature_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(InputSignature); } + if (JitCompile != global::Tensorflow.FunctionSpec.Types.JitCompile.Default) { + size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) JitCompile); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -2212,6 +2340,9 @@ namespace Tensorflow { } InputSignature.MergeFrom(other.InputSignature); } + if (other.JitCompile != global::Tensorflow.FunctionSpec.Types.JitCompile.Default) { + JitCompile = other.JitCompile; + } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -2241,10 +2372,37 @@ namespace Tensorflow { input.ReadMessage(InputSignature); break; } + case 48: { + JitCompile = (global::Tensorflow.FunctionSpec.Types.JitCompile) input.ReadEnum(); + break; + } } } } + #region Nested types + /// Container for nested types declared in the FunctionSpec message type. + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static partial class Types { + /// + /// Whether the function should be compiled by XLA. + /// + /// The public interface to `tf.function` uses an optional boolean to + /// represent three distinct states for this field. Unfortunately, proto3 + /// removes the ability to explicitly check for the presence or absence of a + /// field, so we instead map to an enum. + /// + /// See `tf.function` for details. + /// + public enum JitCompile { + [pbr::OriginalName("DEFAULT")] Default = 0, + [pbr::OriginalName("ON")] On = 1, + [pbr::OriginalName("OFF")] Off = 2, + } + + } + #endregion + } /// diff --git a/src/TensorFlowNET.Core/Protobuf/Saver.cs b/src/TensorFlowNET.Core/Protobuf/Saver.cs index 78b6cd88..51857418 100644 --- a/src/TensorFlowNET.Core/Protobuf/Saver.cs +++ b/src/TensorFlowNET.Core/Protobuf/Saver.cs @@ -31,10 +31,10 @@ namespace Tensorflow { "KAgSJQoda2VlcF9jaGVja3BvaW50X2V2ZXJ5X25faG91cnMYBiABKAISPQoH", "dmVyc2lvbhgHIAEoDjIsLnRlbnNvcmZsb3cuU2F2ZXJEZWYuQ2hlY2twb2lu", "dEZvcm1hdFZlcnNpb24iNQoXQ2hlY2twb2ludEZvcm1hdFZlcnNpb24SCgoG", - "TEVHQUNZEAASBgoCVjEQARIGCgJWMhACQnEKE29yZy50ZW5zb3JmbG93LnV0", - "aWxCC1NhdmVyUHJvdG9zUAFaSGdpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5z", - "b3JmbG93L3RlbnNvcmZsb3cvZ28vY29yZS9jb3JlX3Byb3Rvc19nb19wcm90", - "b/gBAWIGcHJvdG8z")); + "TEVHQUNZEAASBgoCVjEQARIGCgJWMhACQn4KE29yZy50ZW5zb3JmbG93LnV0", + "aWxCC1NhdmVyUHJvdG9zUAFaVWdpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5z", + "b3JmbG93L3RlbnNvcmZsb3cvZ28vY29yZS9wcm90b2J1Zi9mb3JfY29yZV9w", + "cm90b3NfZ29fcHJvdG/4AQFiBnByb3RvMw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { diff --git a/src/TensorFlowNET.Core/Protobuf/Struct.cs b/src/TensorFlowNET.Core/Protobuf/Struct.cs index 7641547a..c79f468d 100644 --- a/src/TensorFlowNET.Core/Protobuf/Struct.cs +++ b/src/TensorFlowNET.Core/Protobuf/Struct.cs @@ -58,19 +58,19 @@ namespace Tensorflow { "YW1lGAEgASgJEisKBXNoYXBlGAIgASgLMhwudGVuc29yZmxvdy5UZW5zb3JT", "aGFwZVByb3RvEiMKBWR0eXBlGAMgASgOMhQudGVuc29yZmxvdy5EYXRhVHlw", "ZRIoCgdtaW5pbXVtGAQgASgLMhcudGVuc29yZmxvdy5UZW5zb3JQcm90bxIo", - "CgdtYXhpbXVtGAUgASgLMhcudGVuc29yZmxvdy5UZW5zb3JQcm90byKiAwoN", + "CgdtYXhpbXVtGAUgASgLMhcudGVuc29yZmxvdy5UZW5zb3JQcm90byKoAwoN", "VHlwZVNwZWNQcm90bxJACg90eXBlX3NwZWNfY2xhc3MYASABKA4yJy50ZW5z", "b3JmbG93LlR5cGVTcGVjUHJvdG8uVHlwZVNwZWNDbGFzcxIvCgp0eXBlX3N0", "YXRlGAIgASgLMhsudGVuc29yZmxvdy5TdHJ1Y3R1cmVkVmFsdWUSHAoUdHlw", - "ZV9zcGVjX2NsYXNzX25hbWUYAyABKAki/wEKDVR5cGVTcGVjQ2xhc3MSCwoH", + "ZV9zcGVjX2NsYXNzX25hbWUYAyABKAkihQIKDVR5cGVTcGVjQ2xhc3MSCwoH", "VU5LTk9XThAAEhYKElNQQVJTRV9URU5TT1JfU1BFQxABEhcKE0lOREVYRURf", "U0xJQ0VTX1NQRUMQAhIWChJSQUdHRURfVEVOU09SX1NQRUMQAxIVChFURU5T", "T1JfQVJSQVlfU1BFQxAEEhUKEURBVEFfREFUQVNFVF9TUEVDEAUSFgoSREFU", "QV9JVEVSQVRPUl9TUEVDEAYSEQoNT1BUSU9OQUxfU1BFQxAHEhQKEFBFUl9S", "RVBMSUNBX1NQRUMQCBIRCg1WQVJJQUJMRV9TUEVDEAkSFgoSUk9XX1BBUlRJ", - "VElPTl9TUEVDEApCSlpIZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmZs", - "b3cvdGVuc29yZmxvdy9nby9jb3JlL2NvcmVfcHJvdG9zX2dvX3Byb3RvYgZw", - "cm90bzM=")); + "VElPTl9TUEVDEAoiBAgLEAtCV1pVZ2l0aHViLmNvbS90ZW5zb3JmbG93L3Rl", + "bnNvcmZsb3cvdGVuc29yZmxvdy9nby9jb3JlL3Byb3RvYnVmL2Zvcl9jb3Jl", + "X3Byb3Rvc19nb19wcm90b2IGcHJvdG8z")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Tensorflow.TensorReflection.Descriptor, global::Tensorflow.TensorShapeReflection.Descriptor, global::Tensorflow.TypesReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { diff --git a/src/TensorFlowNET.Core/Protobuf/Summary.cs b/src/TensorFlowNET.Core/Protobuf/Summary.cs index 27d87a58..44ba5cdb 100644 --- a/src/TensorFlowNET.Core/Protobuf/Summary.cs +++ b/src/TensorFlowNET.Core/Protobuf/Summary.cs @@ -78,8 +78,7 @@ namespace Tensorflow { [pbr::OriginalName("DATA_CLASS_UNKNOWN")] Unknown = 0, /// /// Scalar time series. Each `Value` for the corresponding tag must have - /// `tensor` set to a rank-0 tensor of floating-point dtype, which will be - /// converted to float64. + /// `tensor` set to a rank-0 tensor of type `DT_FLOAT` (float32). /// [pbr::OriginalName("DATA_CLASS_SCALAR")] Scalar = 1, /// diff --git a/src/TensorFlowNET.Core/Protobuf/TrackableObjectGraph.cs b/src/TensorFlowNET.Core/Protobuf/TrackableObjectGraph.cs index 036f8275..3aa747c2 100644 --- a/src/TensorFlowNET.Core/Protobuf/TrackableObjectGraph.cs +++ b/src/TensorFlowNET.Core/Protobuf/TrackableObjectGraph.cs @@ -39,9 +39,10 @@ namespace Tensorflow { "bGxfbmFtZRgCIAEoCRIWCg5jaGVja3BvaW50X2tleRgDIAEoCRIYChBvcHRp", "b25hbF9yZXN0b3JlGAQgASgIGmwKFVNsb3RWYXJpYWJsZVJlZmVyZW5jZRIh", "ChlvcmlnaW5hbF92YXJpYWJsZV9ub2RlX2lkGAEgASgFEhEKCXNsb3RfbmFt", - "ZRgCIAEoCRIdChVzbG90X3ZhcmlhYmxlX25vZGVfaWQYAyABKAVCTVpIZ2l0", + "ZRgCIAEoCRIdChVzbG90X3ZhcmlhYmxlX25vZGVfaWQYAyABKAVCWlpVZ2l0", "aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmZsb3cvdGVuc29yZmxvdy9nby9j", - "b3JlL2NvcmVfcHJvdG9zX2dvX3Byb3Rv+AEBYgZwcm90bzM=")); + "b3JlL3Byb3RvYnVmL2Zvcl9jb3JlX3Byb3Rvc19nb19wcm90b/gBAWIGcHJv", + "dG8z")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { diff --git a/src/TensorFlowNET.Core/Protobuf/Types.cs b/src/TensorFlowNET.Core/Protobuf/Types.cs index 6483cddf..32fa84de 100644 --- a/src/TensorFlowNET.Core/Protobuf/Types.cs +++ b/src/TensorFlowNET.Core/Protobuf/Types.cs @@ -43,13 +43,14 @@ namespace Tensorflow { "X1JFRhB0EhEKDURUX1VJTlQxNl9SRUYQdRIVChFEVF9DT01QTEVYMTI4X1JF", "RhB2Eg8KC0RUX0hBTEZfUkVGEHcSEwoPRFRfUkVTT1VSQ0VfUkVGEHgSEgoO", "RFRfVkFSSUFOVF9SRUYQeRIRCg1EVF9VSU5UMzJfUkVGEHoSEQoNRFRfVUlO", - "VDY0X1JFRhB7QnoKGG9yZy50ZW5zb3JmbG93LmZyYW1ld29ya0ILVHlwZXNQ", - "cm90b3NQAVpMZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmZsb3cvdGVu", - "c29yZmxvdy9nby9jb3JlL2ZyYW1ld29yay90eXBlc19nb19wcm90b/gBAWIG", - "cHJvdG8z")); + "VDY0X1JFRhB7KkYKD1NwZWNpYWxpemVkVHlwZRIOCgpTVF9JTlZBTElEEAAS", + "EgoOU1RfVEVOU09SX0xJU1QQARIPCgtTVF9PUFRJT05BTBACQnoKGG9yZy50", + "ZW5zb3JmbG93LmZyYW1ld29ya0ILVHlwZXNQcm90b3NQAVpMZ2l0aHViLmNv", + "bS90ZW5zb3JmbG93L3RlbnNvcmZsb3cvdGVuc29yZmxvdy9nby9jb3JlL2Zy", + "YW1ld29yay90eXBlc19nb19wcm90b/gBAWIGcHJvdG8z")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, - new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Tensorflow.DataType), }, null, null)); + new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Tensorflow.DataType), typeof(global::Tensorflow.SpecializedType), }, null, null)); } #endregion @@ -148,6 +149,27 @@ namespace Tensorflow { [pbr::OriginalName("DT_UINT64_REF")] DtUint64Ref = 123, } + /// + /// For identifying the underlying type of a variant. For variants, the types + /// listed here are a subset of the types in the variant type registry, + /// corresponding to commonly used variants which must occasionally be + /// special-cased. + /// + public enum SpecializedType { + /// + /// Invalid/unknown specialized type. + /// + [pbr::OriginalName("ST_INVALID")] StInvalid = 0, + /// + /// "tensorflow::TensorList" in the variant type registry. + /// + [pbr::OriginalName("ST_TENSOR_LIST")] StTensorList = 1, + /// + /// "tensorflow::data::Optional" in the variant type registry. + /// + [pbr::OriginalName("ST_OPTIONAL")] StOptional = 2, + } + #endregion } diff --git a/src/TensorFlowNET.Core/Protobuf/VerifierConfig.cs b/src/TensorFlowNET.Core/Protobuf/VerifierConfig.cs index 07431234..d0f2e2fb 100644 --- a/src/TensorFlowNET.Core/Protobuf/VerifierConfig.cs +++ b/src/TensorFlowNET.Core/Protobuf/VerifierConfig.cs @@ -28,10 +28,11 @@ namespace Tensorflow { "b3RvEgp0ZW5zb3JmbG93IpsBCg5WZXJpZmllckNvbmZpZxIiChp2ZXJpZmlj", "YXRpb25fdGltZW91dF9pbl9tcxgBIAEoAxI9ChJzdHJ1Y3R1cmVfdmVyaWZp", "ZXIYAiABKA4yIS50ZW5zb3JmbG93LlZlcmlmaWVyQ29uZmlnLlRvZ2dsZSIm", - "CgZUb2dnbGUSCwoHREVGQVVMVBAAEgYKAk9OEAESBwoDT0ZGEAJCfwoYb3Jn", - "LnRlbnNvcmZsb3cuZnJhbWV3b3JrQhRWZXJpZmllckNvbmZpZ1Byb3Rvc1AB", - "WkhnaXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yZmxvdy90ZW5zb3JmbG93", - "L2dvL2NvcmUvY29yZV9wcm90b3NfZ29fcHJvdG/4AQFiBnByb3RvMw==")); + "CgZUb2dnbGUSCwoHREVGQVVMVBAAEgYKAk9OEAESBwoDT0ZGEAJCjAEKGG9y", + "Zy50ZW5zb3JmbG93LmZyYW1ld29ya0IUVmVyaWZpZXJDb25maWdQcm90b3NQ", + "AVpVZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmZsb3cvdGVuc29yZmxv", + "dy9nby9jb3JlL3Byb3RvYnVmL2Zvcl9jb3JlX3Byb3Rvc19nb19wcm90b/gB", + "AWIGcHJvdG8z")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { diff --git a/src/TensorFlowNET.Keras/Protobuf/ProjectorConfig.cs b/src/TensorFlowNET.Keras/Protobuf/ProjectorConfig.cs new file mode 100644 index 00000000..78ab79f8 --- /dev/null +++ b/src/TensorFlowNET.Keras/Protobuf/ProjectorConfig.cs @@ -0,0 +1,669 @@ +// +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: tensorflow/python/keras/protobuf/projector_config.proto +// +#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 ThirdParty.Tensorflow.Python.Keras.Protobuf { + + /// Holder for reflection information generated from tensorflow/python/keras/protobuf/projector_config.proto + public static partial class ProjectorConfigReflection { + + #region Descriptor + /// File descriptor for tensorflow/python/keras/protobuf/projector_config.proto + public static pbr::FileDescriptor Descriptor { + get { return descriptor; } + } + private static pbr::FileDescriptor descriptor; + + static ProjectorConfigReflection() { + byte[] descriptorData = global::System.Convert.FromBase64String( + string.Concat( + "Cjd0ZW5zb3JmbG93L3B5dGhvbi9rZXJhcy9wcm90b2J1Zi9wcm9qZWN0b3Jf", + "Y29uZmlnLnByb3RvEix0aGlyZF9wYXJ0eS50ZW5zb3JmbG93LnB5dGhvbi5r", + "ZXJhcy5wcm90b2J1ZiI+Cg5TcHJpdGVNZXRhZGF0YRISCgppbWFnZV9wYXRo", + "GAEgASgJEhgKEHNpbmdsZV9pbWFnZV9kaW0YAiADKA0izAEKDUVtYmVkZGlu", + "Z0luZm8SEwoLdGVuc29yX25hbWUYASABKAkSFQoNbWV0YWRhdGFfcGF0aBgC", + "IAEoCRIWCg5ib29rbWFya3NfcGF0aBgDIAEoCRIUCgx0ZW5zb3Jfc2hhcGUY", + "BCADKA0STAoGc3ByaXRlGAUgASgLMjwudGhpcmRfcGFydHkudGVuc29yZmxv", + "dy5weXRob24ua2VyYXMucHJvdG9idWYuU3ByaXRlTWV0YWRhdGESEwoLdGVu", + "c29yX3BhdGgYBiABKAkinwEKD1Byb2plY3RvckNvbmZpZxIdChVtb2RlbF9j", + "aGVja3BvaW50X3BhdGgYASABKAkSTwoKZW1iZWRkaW5ncxgCIAMoCzI7LnRo", + "aXJkX3BhcnR5LnRlbnNvcmZsb3cucHl0aG9uLmtlcmFzLnByb3RvYnVmLkVt", + "YmVkZGluZ0luZm8SHAoUbW9kZWxfY2hlY2twb2ludF9kaXIYAyABKAliBnBy", + "b3RvMw==")); + descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, + new pbr::FileDescriptor[] { }, + new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { + new pbr::GeneratedClrTypeInfo(typeof(global::ThirdParty.Tensorflow.Python.Keras.Protobuf.SpriteMetadata), global::ThirdParty.Tensorflow.Python.Keras.Protobuf.SpriteMetadata.Parser, new[]{ "ImagePath", "SingleImageDim" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::ThirdParty.Tensorflow.Python.Keras.Protobuf.EmbeddingInfo), global::ThirdParty.Tensorflow.Python.Keras.Protobuf.EmbeddingInfo.Parser, new[]{ "TensorName", "MetadataPath", "BookmarksPath", "TensorShape", "Sprite", "TensorPath" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::ThirdParty.Tensorflow.Python.Keras.Protobuf.ProjectorConfig), global::ThirdParty.Tensorflow.Python.Keras.Protobuf.ProjectorConfig.Parser, new[]{ "ModelCheckpointPath", "Embeddings", "ModelCheckpointDir" }, null, null, null, null) + })); + } + #endregion + + } + #region Messages + public sealed partial class SpriteMetadata : pb::IMessage { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SpriteMetadata()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::ThirdParty.Tensorflow.Python.Keras.Protobuf.ProjectorConfigReflection.Descriptor.MessageTypes[0]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public SpriteMetadata() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public SpriteMetadata(SpriteMetadata other) : this() { + imagePath_ = other.imagePath_; + singleImageDim_ = other.singleImageDim_.Clone(); + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public SpriteMetadata Clone() { + return new SpriteMetadata(this); + } + + /// Field number for the "image_path" field. + public const int ImagePathFieldNumber = 1; + private string imagePath_ = ""; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string ImagePath { + get { return imagePath_; } + set { + imagePath_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + /// Field number for the "single_image_dim" field. + public const int SingleImageDimFieldNumber = 2; + private static readonly pb::FieldCodec _repeated_singleImageDim_codec + = pb::FieldCodec.ForUInt32(18); + private readonly pbc::RepeatedField singleImageDim_ = new pbc::RepeatedField(); + /// + /// [width, height] of a single image in the sprite. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public pbc::RepeatedField SingleImageDim { + get { return singleImageDim_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as SpriteMetadata); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(SpriteMetadata other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (ImagePath != other.ImagePath) return false; + if(!singleImageDim_.Equals(other.singleImageDim_)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (ImagePath.Length != 0) hash ^= ImagePath.GetHashCode(); + hash ^= singleImageDim_.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 (ImagePath.Length != 0) { + output.WriteRawTag(10); + output.WriteString(ImagePath); + } + singleImageDim_.WriteTo(output, _repeated_singleImageDim_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (ImagePath.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(ImagePath); + } + size += singleImageDim_.CalculateSize(_repeated_singleImageDim_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(SpriteMetadata other) { + if (other == null) { + return; + } + if (other.ImagePath.Length != 0) { + ImagePath = other.ImagePath; + } + singleImageDim_.Add(other.singleImageDim_); + _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: { + ImagePath = input.ReadString(); + break; + } + case 18: + case 16: { + singleImageDim_.AddEntriesFrom(input, _repeated_singleImageDim_codec); + break; + } + } + } + } + + } + + public sealed partial class EmbeddingInfo : pb::IMessage { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new EmbeddingInfo()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::ThirdParty.Tensorflow.Python.Keras.Protobuf.ProjectorConfigReflection.Descriptor.MessageTypes[1]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public EmbeddingInfo() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public EmbeddingInfo(EmbeddingInfo other) : this() { + tensorName_ = other.tensorName_; + metadataPath_ = other.metadataPath_; + bookmarksPath_ = other.bookmarksPath_; + tensorShape_ = other.tensorShape_.Clone(); + sprite_ = other.sprite_ != null ? other.sprite_.Clone() : null; + tensorPath_ = other.tensorPath_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public EmbeddingInfo Clone() { + return new EmbeddingInfo(this); + } + + /// Field number for the "tensor_name" field. + public const int TensorNameFieldNumber = 1; + private string tensorName_ = ""; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string TensorName { + get { return tensorName_; } + set { + tensorName_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + /// Field number for the "metadata_path" field. + public const int MetadataPathFieldNumber = 2; + private string metadataPath_ = ""; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string MetadataPath { + get { return metadataPath_; } + set { + metadataPath_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + /// Field number for the "bookmarks_path" field. + public const int BookmarksPathFieldNumber = 3; + private string bookmarksPath_ = ""; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string BookmarksPath { + get { return bookmarksPath_; } + set { + bookmarksPath_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + /// Field number for the "tensor_shape" field. + public const int TensorShapeFieldNumber = 4; + private static readonly pb::FieldCodec _repeated_tensorShape_codec + = pb::FieldCodec.ForUInt32(34); + private readonly pbc::RepeatedField tensorShape_ = new pbc::RepeatedField(); + /// + /// Shape of the 2D tensor [N x D]. If missing, it will be inferred from the + /// model checkpoint. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public pbc::RepeatedField TensorShape { + get { return tensorShape_; } + } + + /// Field number for the "sprite" field. + public const int SpriteFieldNumber = 5; + private global::ThirdParty.Tensorflow.Python.Keras.Protobuf.SpriteMetadata sprite_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public global::ThirdParty.Tensorflow.Python.Keras.Protobuf.SpriteMetadata Sprite { + get { return sprite_; } + set { + sprite_ = value; + } + } + + /// Field number for the "tensor_path" field. + public const int TensorPathFieldNumber = 6; + private string tensorPath_ = ""; + /// + /// Path to the TSV file holding the tensor values. If missing, the tensor + /// is assumed to be stored in the model checkpoint. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string TensorPath { + get { return tensorPath_; } + set { + tensorPath_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as EmbeddingInfo); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(EmbeddingInfo other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (TensorName != other.TensorName) return false; + if (MetadataPath != other.MetadataPath) return false; + if (BookmarksPath != other.BookmarksPath) return false; + if(!tensorShape_.Equals(other.tensorShape_)) return false; + if (!object.Equals(Sprite, other.Sprite)) return false; + if (TensorPath != other.TensorPath) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (TensorName.Length != 0) hash ^= TensorName.GetHashCode(); + if (MetadataPath.Length != 0) hash ^= MetadataPath.GetHashCode(); + if (BookmarksPath.Length != 0) hash ^= BookmarksPath.GetHashCode(); + hash ^= tensorShape_.GetHashCode(); + if (sprite_ != null) hash ^= Sprite.GetHashCode(); + if (TensorPath.Length != 0) hash ^= TensorPath.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 (TensorName.Length != 0) { + output.WriteRawTag(10); + output.WriteString(TensorName); + } + if (MetadataPath.Length != 0) { + output.WriteRawTag(18); + output.WriteString(MetadataPath); + } + if (BookmarksPath.Length != 0) { + output.WriteRawTag(26); + output.WriteString(BookmarksPath); + } + tensorShape_.WriteTo(output, _repeated_tensorShape_codec); + if (sprite_ != null) { + output.WriteRawTag(42); + output.WriteMessage(Sprite); + } + if (TensorPath.Length != 0) { + output.WriteRawTag(50); + output.WriteString(TensorPath); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (TensorName.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(TensorName); + } + if (MetadataPath.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(MetadataPath); + } + if (BookmarksPath.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(BookmarksPath); + } + size += tensorShape_.CalculateSize(_repeated_tensorShape_codec); + if (sprite_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Sprite); + } + if (TensorPath.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(TensorPath); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(EmbeddingInfo other) { + if (other == null) { + return; + } + if (other.TensorName.Length != 0) { + TensorName = other.TensorName; + } + if (other.MetadataPath.Length != 0) { + MetadataPath = other.MetadataPath; + } + if (other.BookmarksPath.Length != 0) { + BookmarksPath = other.BookmarksPath; + } + tensorShape_.Add(other.tensorShape_); + if (other.sprite_ != null) { + if (sprite_ == null) { + Sprite = new global::ThirdParty.Tensorflow.Python.Keras.Protobuf.SpriteMetadata(); + } + Sprite.MergeFrom(other.Sprite); + } + if (other.TensorPath.Length != 0) { + TensorPath = other.TensorPath; + } + _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: { + TensorName = input.ReadString(); + break; + } + case 18: { + MetadataPath = input.ReadString(); + break; + } + case 26: { + BookmarksPath = input.ReadString(); + break; + } + case 34: + case 32: { + tensorShape_.AddEntriesFrom(input, _repeated_tensorShape_codec); + break; + } + case 42: { + if (sprite_ == null) { + Sprite = new global::ThirdParty.Tensorflow.Python.Keras.Protobuf.SpriteMetadata(); + } + input.ReadMessage(Sprite); + break; + } + case 50: { + TensorPath = input.ReadString(); + break; + } + } + } + } + + } + + public sealed partial class ProjectorConfig : pb::IMessage { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ProjectorConfig()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::ThirdParty.Tensorflow.Python.Keras.Protobuf.ProjectorConfigReflection.Descriptor.MessageTypes[2]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public ProjectorConfig() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public ProjectorConfig(ProjectorConfig other) : this() { + modelCheckpointPath_ = other.modelCheckpointPath_; + embeddings_ = other.embeddings_.Clone(); + modelCheckpointDir_ = other.modelCheckpointDir_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public ProjectorConfig Clone() { + return new ProjectorConfig(this); + } + + /// Field number for the "model_checkpoint_path" field. + public const int ModelCheckpointPathFieldNumber = 1; + private string modelCheckpointPath_ = ""; + /// + /// Path to the checkpoint file. Use either this or model_checkpoint_dir. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string ModelCheckpointPath { + get { return modelCheckpointPath_; } + set { + modelCheckpointPath_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + /// Field number for the "embeddings" field. + public const int EmbeddingsFieldNumber = 2; + private static readonly pb::FieldCodec _repeated_embeddings_codec + = pb::FieldCodec.ForMessage(18, global::ThirdParty.Tensorflow.Python.Keras.Protobuf.EmbeddingInfo.Parser); + private readonly pbc::RepeatedField embeddings_ = new pbc::RepeatedField(); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public pbc::RepeatedField Embeddings { + get { return embeddings_; } + } + + /// Field number for the "model_checkpoint_dir" field. + public const int ModelCheckpointDirFieldNumber = 3; + private string modelCheckpointDir_ = ""; + /// + /// Path to the checkpoint directory. The directory will be scanned for the + /// latest checkpoint file. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string ModelCheckpointDir { + get { return modelCheckpointDir_; } + set { + modelCheckpointDir_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as ProjectorConfig); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(ProjectorConfig other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (ModelCheckpointPath != other.ModelCheckpointPath) return false; + if(!embeddings_.Equals(other.embeddings_)) return false; + if (ModelCheckpointDir != other.ModelCheckpointDir) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (ModelCheckpointPath.Length != 0) hash ^= ModelCheckpointPath.GetHashCode(); + hash ^= embeddings_.GetHashCode(); + if (ModelCheckpointDir.Length != 0) hash ^= ModelCheckpointDir.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 (ModelCheckpointPath.Length != 0) { + output.WriteRawTag(10); + output.WriteString(ModelCheckpointPath); + } + embeddings_.WriteTo(output, _repeated_embeddings_codec); + if (ModelCheckpointDir.Length != 0) { + output.WriteRawTag(26); + output.WriteString(ModelCheckpointDir); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (ModelCheckpointPath.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(ModelCheckpointPath); + } + size += embeddings_.CalculateSize(_repeated_embeddings_codec); + if (ModelCheckpointDir.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(ModelCheckpointDir); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(ProjectorConfig other) { + if (other == null) { + return; + } + if (other.ModelCheckpointPath.Length != 0) { + ModelCheckpointPath = other.ModelCheckpointPath; + } + embeddings_.Add(other.embeddings_); + if (other.ModelCheckpointDir.Length != 0) { + ModelCheckpointDir = other.ModelCheckpointDir; + } + _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: { + ModelCheckpointPath = input.ReadString(); + break; + } + case 18: { + embeddings_.AddEntriesFrom(input, _repeated_embeddings_codec); + break; + } + case 26: { + ModelCheckpointDir = input.ReadString(); + break; + } + } + } + } + + } + + #endregion + +} + +#endregion Designer generated code diff --git a/src/TensorFlowNET.Keras/Protobuf/SavedMetadata.cs b/src/TensorFlowNET.Keras/Protobuf/SavedMetadata.cs new file mode 100644 index 00000000..61cec646 --- /dev/null +++ b/src/TensorFlowNET.Keras/Protobuf/SavedMetadata.cs @@ -0,0 +1,447 @@ +// +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: tensorflow/python/keras/protobuf/saved_metadata.proto +// +#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 ThirdParty.Tensorflow.Python.Keras.Protobuf { + + /// Holder for reflection information generated from tensorflow/python/keras/protobuf/saved_metadata.proto + public static partial class SavedMetadataReflection { + + #region Descriptor + /// File descriptor for tensorflow/python/keras/protobuf/saved_metadata.proto + public static pbr::FileDescriptor Descriptor { + get { return descriptor; } + } + private static pbr::FileDescriptor descriptor; + + static SavedMetadataReflection() { + byte[] descriptorData = global::System.Convert.FromBase64String( + string.Concat( + "CjV0ZW5zb3JmbG93L3B5dGhvbi9rZXJhcy9wcm90b2J1Zi9zYXZlZF9tZXRh", + "ZGF0YS5wcm90bxIsdGhpcmRfcGFydHkudGVuc29yZmxvdy5weXRob24ua2Vy", + "YXMucHJvdG9idWYaL3RlbnNvcmZsb3cvcHl0aG9uL2tlcmFzL3Byb3RvYnVm", + "L3ZlcnNpb25zLnByb3RvIlkKDVNhdmVkTWV0YWRhdGESSAoFbm9kZXMYASAD", + "KAsyOS50aGlyZF9wYXJ0eS50ZW5zb3JmbG93LnB5dGhvbi5rZXJhcy5wcm90", + "b2J1Zi5TYXZlZE9iamVjdCKoAQoLU2F2ZWRPYmplY3QSDwoHbm9kZV9pZBgC", + "IAEoBRIRCglub2RlX3BhdGgYAyABKAkSEgoKaWRlbnRpZmllchgEIAEoCRIQ", + "CghtZXRhZGF0YRgFIAEoCRJJCgd2ZXJzaW9uGAYgASgLMjgudGhpcmRfcGFy", + "dHkudGVuc29yZmxvdy5weXRob24ua2VyYXMucHJvdG9idWYuVmVyc2lvbkRl", + "ZkoECAEQAmIGcHJvdG8z")); + descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, + new pbr::FileDescriptor[] { global::ThirdParty.Tensorflow.Python.Keras.Protobuf.VersionsReflection.Descriptor, }, + new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { + new pbr::GeneratedClrTypeInfo(typeof(global::ThirdParty.Tensorflow.Python.Keras.Protobuf.SavedMetadata), global::ThirdParty.Tensorflow.Python.Keras.Protobuf.SavedMetadata.Parser, new[]{ "Nodes" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::ThirdParty.Tensorflow.Python.Keras.Protobuf.SavedObject), global::ThirdParty.Tensorflow.Python.Keras.Protobuf.SavedObject.Parser, new[]{ "NodeId", "NodePath", "Identifier", "Metadata", "Version" }, null, null, null, null) + })); + } + #endregion + + } + #region Messages + public sealed partial class SavedMetadata : pb::IMessage { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SavedMetadata()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::ThirdParty.Tensorflow.Python.Keras.Protobuf.SavedMetadataReflection.Descriptor.MessageTypes[0]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public SavedMetadata() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public SavedMetadata(SavedMetadata other) : this() { + nodes_ = other.nodes_.Clone(); + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public SavedMetadata Clone() { + return new SavedMetadata(this); + } + + /// Field number for the "nodes" field. + public const int NodesFieldNumber = 1; + private static readonly pb::FieldCodec _repeated_nodes_codec + = pb::FieldCodec.ForMessage(10, global::ThirdParty.Tensorflow.Python.Keras.Protobuf.SavedObject.Parser); + private readonly pbc::RepeatedField nodes_ = new pbc::RepeatedField(); + /// + /// Nodes represent trackable objects in the SavedModel. The data for every + /// Keras object is stored. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public pbc::RepeatedField Nodes { + get { return nodes_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as SavedMetadata); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(SavedMetadata other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if(!nodes_.Equals(other.nodes_)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + hash ^= nodes_.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) { + nodes_.WriteTo(output, _repeated_nodes_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + size += nodes_.CalculateSize(_repeated_nodes_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(SavedMetadata other) { + if (other == null) { + return; + } + nodes_.Add(other.nodes_); + _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: { + nodes_.AddEntriesFrom(input, _repeated_nodes_codec); + break; + } + } + } + } + + } + + /// + /// Metadata of an individual Keras object. + /// + public sealed partial class SavedObject : pb::IMessage { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SavedObject()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::ThirdParty.Tensorflow.Python.Keras.Protobuf.SavedMetadataReflection.Descriptor.MessageTypes[1]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public SavedObject() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public SavedObject(SavedObject other) : this() { + nodeId_ = other.nodeId_; + nodePath_ = other.nodePath_; + identifier_ = other.identifier_; + metadata_ = other.metadata_; + version_ = other.version_ != null ? other.version_.Clone() : null; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public SavedObject Clone() { + return new SavedObject(this); + } + + /// Field number for the "node_id" field. + public const int NodeIdFieldNumber = 2; + private int nodeId_; + /// + /// Index of the node in the SavedModel SavedObjectGraph. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int NodeId { + get { return nodeId_; } + set { + nodeId_ = value; + } + } + + /// Field number for the "node_path" field. + public const int NodePathFieldNumber = 3; + private string nodePath_ = ""; + /// + /// String path from root (e.g. "root.child_layer") + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string NodePath { + get { return nodePath_; } + set { + nodePath_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + /// Field number for the "identifier" field. + public const int IdentifierFieldNumber = 4; + private string identifier_ = ""; + /// + /// Identifier to determine loading function. + /// Must be one of: + /// _tf_keras_input_layer, _tf_keras_layer, _tf_keras_metric, + /// _tf_keras_model, _tf_keras_network, _tf_keras_rnn_layer, + /// _tf_keras_sequential + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string Identifier { + get { return identifier_; } + set { + identifier_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + /// Field number for the "metadata" field. + public const int MetadataFieldNumber = 5; + private string metadata_ = ""; + /// + /// Metadata containing a JSON-serialized object with the non-TensorFlow + /// attributes for this Keras object. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string Metadata { + get { return metadata_; } + set { + metadata_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + /// Field number for the "version" field. + public const int VersionFieldNumber = 6; + private global::ThirdParty.Tensorflow.Python.Keras.Protobuf.VersionDef version_; + /// + /// Version defined by the code serializing this Keras object. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public global::ThirdParty.Tensorflow.Python.Keras.Protobuf.VersionDef Version { + get { return version_; } + set { + version_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as SavedObject); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(SavedObject other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (NodeId != other.NodeId) return false; + if (NodePath != other.NodePath) return false; + if (Identifier != other.Identifier) return false; + if (Metadata != other.Metadata) return false; + if (!object.Equals(Version, other.Version)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (NodeId != 0) hash ^= NodeId.GetHashCode(); + if (NodePath.Length != 0) hash ^= NodePath.GetHashCode(); + if (Identifier.Length != 0) hash ^= Identifier.GetHashCode(); + if (Metadata.Length != 0) hash ^= Metadata.GetHashCode(); + if (version_ != null) hash ^= Version.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 (NodeId != 0) { + output.WriteRawTag(16); + output.WriteInt32(NodeId); + } + if (NodePath.Length != 0) { + output.WriteRawTag(26); + output.WriteString(NodePath); + } + if (Identifier.Length != 0) { + output.WriteRawTag(34); + output.WriteString(Identifier); + } + if (Metadata.Length != 0) { + output.WriteRawTag(42); + output.WriteString(Metadata); + } + if (version_ != null) { + output.WriteRawTag(50); + output.WriteMessage(Version); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (NodeId != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(NodeId); + } + if (NodePath.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(NodePath); + } + if (Identifier.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Identifier); + } + if (Metadata.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Metadata); + } + if (version_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Version); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(SavedObject other) { + if (other == null) { + return; + } + if (other.NodeId != 0) { + NodeId = other.NodeId; + } + if (other.NodePath.Length != 0) { + NodePath = other.NodePath; + } + if (other.Identifier.Length != 0) { + Identifier = other.Identifier; + } + if (other.Metadata.Length != 0) { + Metadata = other.Metadata; + } + if (other.version_ != null) { + if (version_ == null) { + Version = new global::ThirdParty.Tensorflow.Python.Keras.Protobuf.VersionDef(); + } + Version.MergeFrom(other.Version); + } + _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 16: { + NodeId = input.ReadInt32(); + break; + } + case 26: { + NodePath = input.ReadString(); + break; + } + case 34: { + Identifier = input.ReadString(); + break; + } + case 42: { + Metadata = input.ReadString(); + break; + } + case 50: { + if (version_ == null) { + Version = new global::ThirdParty.Tensorflow.Python.Keras.Protobuf.VersionDef(); + } + input.ReadMessage(Version); + break; + } + } + } + } + + } + + #endregion + +} + +#endregion Designer generated code diff --git a/src/TensorFlowNET.Keras/Protobuf/Versions.cs b/src/TensorFlowNET.Keras/Protobuf/Versions.cs new file mode 100644 index 00000000..40405a5a --- /dev/null +++ b/src/TensorFlowNET.Keras/Protobuf/Versions.cs @@ -0,0 +1,248 @@ +// +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: tensorflow/python/keras/protobuf/versions.proto +// +#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 ThirdParty.Tensorflow.Python.Keras.Protobuf { + + /// Holder for reflection information generated from tensorflow/python/keras/protobuf/versions.proto + public static partial class VersionsReflection { + + #region Descriptor + /// File descriptor for tensorflow/python/keras/protobuf/versions.proto + public static pbr::FileDescriptor Descriptor { + get { return descriptor; } + } + private static pbr::FileDescriptor descriptor; + + static VersionsReflection() { + byte[] descriptorData = global::System.Convert.FromBase64String( + string.Concat( + "Ci90ZW5zb3JmbG93L3B5dGhvbi9rZXJhcy9wcm90b2J1Zi92ZXJzaW9ucy5w", + "cm90bxIsdGhpcmRfcGFydHkudGVuc29yZmxvdy5weXRob24ua2VyYXMucHJv", + "dG9idWYiSwoKVmVyc2lvbkRlZhIQCghwcm9kdWNlchgBIAEoBRIUCgxtaW5f", + "Y29uc3VtZXIYAiABKAUSFQoNYmFkX2NvbnN1bWVycxgDIAMoBWIGcHJvdG8z")); + descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, + new pbr::FileDescriptor[] { }, + new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { + new pbr::GeneratedClrTypeInfo(typeof(global::ThirdParty.Tensorflow.Python.Keras.Protobuf.VersionDef), global::ThirdParty.Tensorflow.Python.Keras.Protobuf.VersionDef.Parser, new[]{ "Producer", "MinConsumer", "BadConsumers" }, null, null, null, null) + })); + } + #endregion + + } + #region Messages + /// + /// Version information for a piece of serialized data + /// + /// There are different types of versions for each type of data + /// (GraphDef, etc.), but they all have the same common shape + /// described here. + /// + /// Each consumer has "consumer" and "min_producer" versions (specified + /// elsewhere). A consumer is allowed to consume this data if + /// + /// producer >= min_producer + /// consumer >= min_consumer + /// consumer not in bad_consumers + /// + /// LINT.IfChange + /// + public sealed partial class VersionDef : pb::IMessage { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new VersionDef()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::ThirdParty.Tensorflow.Python.Keras.Protobuf.VersionsReflection.Descriptor.MessageTypes[0]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public VersionDef() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public VersionDef(VersionDef other) : this() { + producer_ = other.producer_; + minConsumer_ = other.minConsumer_; + badConsumers_ = other.badConsumers_.Clone(); + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public VersionDef Clone() { + return new VersionDef(this); + } + + /// Field number for the "producer" field. + public const int ProducerFieldNumber = 1; + private int producer_; + /// + /// The version of the code that produced this data. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int Producer { + get { return producer_; } + set { + producer_ = value; + } + } + + /// Field number for the "min_consumer" field. + public const int MinConsumerFieldNumber = 2; + private int minConsumer_; + /// + /// Any consumer below this version is not allowed to consume this data. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int MinConsumer { + get { return minConsumer_; } + set { + minConsumer_ = value; + } + } + + /// Field number for the "bad_consumers" field. + public const int BadConsumersFieldNumber = 3; + private static readonly pb::FieldCodec _repeated_badConsumers_codec + = pb::FieldCodec.ForInt32(26); + private readonly pbc::RepeatedField badConsumers_ = new pbc::RepeatedField(); + /// + /// Specific consumer versions which are disallowed (e.g. due to bugs). + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public pbc::RepeatedField BadConsumers { + get { return badConsumers_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as VersionDef); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(VersionDef other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Producer != other.Producer) return false; + if (MinConsumer != other.MinConsumer) return false; + if(!badConsumers_.Equals(other.badConsumers_)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (Producer != 0) hash ^= Producer.GetHashCode(); + if (MinConsumer != 0) hash ^= MinConsumer.GetHashCode(); + hash ^= badConsumers_.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 (Producer != 0) { + output.WriteRawTag(8); + output.WriteInt32(Producer); + } + if (MinConsumer != 0) { + output.WriteRawTag(16); + output.WriteInt32(MinConsumer); + } + badConsumers_.WriteTo(output, _repeated_badConsumers_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (Producer != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(Producer); + } + if (MinConsumer != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(MinConsumer); + } + size += badConsumers_.CalculateSize(_repeated_badConsumers_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(VersionDef other) { + if (other == null) { + return; + } + if (other.Producer != 0) { + Producer = other.Producer; + } + if (other.MinConsumer != 0) { + MinConsumer = other.MinConsumer; + } + badConsumers_.Add(other.badConsumers_); + _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: { + Producer = input.ReadInt32(); + break; + } + case 16: { + MinConsumer = input.ReadInt32(); + break; + } + case 26: + case 24: { + badConsumers_.AddEntriesFrom(input, _repeated_badConsumers_codec); + break; + } + } + } + } + + } + + #endregion + +} + +#endregion Designer generated code