diff --git a/src/TensorFlowNET.Core/Protobuf/AllocationDescription.cs b/src/TensorFlowNET.Core/Protobuf/AllocationDescription.cs
index c8c6b8b0..fe484d99 100644
--- a/src/TensorFlowNET.Core/Protobuf/AllocationDescription.cs
+++ b/src/TensorFlowNET.Core/Protobuf/AllocationDescription.cs
@@ -29,10 +29,10 @@ namespace Tensorflow {
"dGlvbhIXCg9yZXF1ZXN0ZWRfYnl0ZXMYASABKAMSFwoPYWxsb2NhdGVkX2J5",
"dGVzGAIgASgDEhYKDmFsbG9jYXRvcl9uYW1lGAMgASgJEhUKDWFsbG9jYXRp",
"b25faWQYBCABKAMSHAoUaGFzX3NpbmdsZV9yZWZlcmVuY2UYBSABKAgSCwoD",
- "cHRyGAYgASgEQnsKGG9yZy50ZW5zb3JmbG93LmZyYW1ld29ya0IbQWxsb2Nh",
- "dGlvbkRlc2NyaXB0aW9uUHJvdG9zUAFaPWdpdGh1Yi5jb20vdGVuc29yZmxv",
- "dy90ZW5zb3JmbG93L3RlbnNvcmZsb3cvZ28vY29yZS9mcmFtZXdvcmv4AQFi",
- "BnByb3RvMw=="));
+ "cHRyGAYgASgEQpsBChhvcmcudGVuc29yZmxvdy5mcmFtZXdvcmtCG0FsbG9j",
+ "YXRpb25EZXNjcmlwdGlvblByb3Rvc1ABWl1naXRodWIuY29tL3RlbnNvcmZs",
+ "b3cvdGVuc29yZmxvdy90ZW5zb3JmbG93L2dvL2NvcmUvZnJhbWV3b3JrL2Fs",
+ "bG9jYXRpb25fZGVzY3JpcHRpb25fZ29fcHJvdG/4AQFiBnByb3RvMw=="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { },
new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
diff --git a/src/TensorFlowNET.Core/Protobuf/ApiDef.cs b/src/TensorFlowNET.Core/Protobuf/ApiDef.cs
index ef6f1f75..57c5898d 100644
--- a/src/TensorFlowNET.Core/Protobuf/ApiDef.cs
+++ b/src/TensorFlowNET.Core/Protobuf/ApiDef.cs
@@ -43,10 +43,10 @@ namespace Tensorflow {
"MhUudGVuc29yZmxvdy5BdHRyVmFsdWUSEwoLZGVzY3JpcHRpb24YBCABKAki",
"RwoKVmlzaWJpbGl0eRIWChJERUZBVUxUX1ZJU0lCSUxJVFkQABILCgdWSVNJ",
"QkxFEAESCAoEU0tJUBACEgoKBkhJRERFThADIikKB0FwaURlZnMSHgoCb3AY",
- "ASADKAsyEi50ZW5zb3JmbG93LkFwaURlZkJsChhvcmcudGVuc29yZmxvdy5m",
- "cmFtZXdvcmtCDEFwaURlZlByb3Rvc1ABWj1naXRodWIuY29tL3RlbnNvcmZs",
- "b3cvdGVuc29yZmxvdy90ZW5zb3JmbG93L2dvL2NvcmUvZnJhbWV3b3Jr+AEB",
- "YgZwcm90bzM="));
+ "ASADKAsyEi50ZW5zb3JmbG93LkFwaURlZkJ9ChhvcmcudGVuc29yZmxvdy5m",
+ "cmFtZXdvcmtCDEFwaURlZlByb3Rvc1ABWk5naXRodWIuY29tL3RlbnNvcmZs",
+ "b3cvdGVuc29yZmxvdy90ZW5zb3JmbG93L2dvL2NvcmUvZnJhbWV3b3JrL2Fw",
+ "aV9kZWZfZ29fcHJvdG/4AQFiBnByb3RvMw=="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { global::Tensorflow.AttrValueReflection.Descriptor, },
new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
diff --git a/src/TensorFlowNET.Core/Protobuf/AttrValue.cs b/src/TensorFlowNET.Core/Protobuf/AttrValue.cs
index 744862f0..2a737f69 100644
--- a/src/TensorFlowNET.Core/Protobuf/AttrValue.cs
+++ b/src/TensorFlowNET.Core/Protobuf/AttrValue.cs
@@ -43,10 +43,10 @@ namespace Tensorflow {
"ckxpc3RCBwoFdmFsdWUikgEKDE5hbWVBdHRyTGlzdBIMCgRuYW1lGAEgASgJ",
"EjAKBGF0dHIYAiADKAsyIi50ZW5zb3JmbG93Lk5hbWVBdHRyTGlzdC5BdHRy",
"RW50cnkaQgoJQXR0ckVudHJ5EgsKA2tleRgBIAEoCRIkCgV2YWx1ZRgCIAEo",
- "CzIVLnRlbnNvcmZsb3cuQXR0clZhbHVlOgI4AUJvChhvcmcudGVuc29yZmxv",
- "dy5mcmFtZXdvcmtCD0F0dHJWYWx1ZVByb3Rvc1ABWj1naXRodWIuY29tL3Rl",
- "bnNvcmZsb3cvdGVuc29yZmxvdy90ZW5zb3JmbG93L2dvL2NvcmUvZnJhbWV3",
- "b3Jr+AEBYgZwcm90bzM="));
+ "CzIVLnRlbnNvcmZsb3cuQXR0clZhbHVlOgI4AUKDAQoYb3JnLnRlbnNvcmZs",
+ "b3cuZnJhbWV3b3JrQg9BdHRyVmFsdWVQcm90b3NQAVpRZ2l0aHViLmNvbS90",
+ "ZW5zb3JmbG93L3RlbnNvcmZsb3cvdGVuc29yZmxvdy9nby9jb3JlL2ZyYW1l",
+ "d29yay9hdHRyX3ZhbHVlX2dvX3Byb3Rv+AEBYgZwcm90bzM="));
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/Cluster.cs b/src/TensorFlowNET.Core/Protobuf/Cluster.cs
index 27dae3d9..e75123c0 100644
--- a/src/TensorFlowNET.Core/Protobuf/Cluster.cs
+++ b/src/TensorFlowNET.Core/Protobuf/Cluster.cs
@@ -28,10 +28,10 @@ namespace Tensorflow {
"c29yZmxvdyJyCgZKb2JEZWYSDAoEbmFtZRgBIAEoCRIsCgV0YXNrcxgCIAMo",
"CzIdLnRlbnNvcmZsb3cuSm9iRGVmLlRhc2tzRW50cnkaLAoKVGFza3NFbnRy",
"eRILCgNrZXkYASABKAUSDQoFdmFsdWUYAiABKAk6AjgBIi0KCkNsdXN0ZXJE",
- "ZWYSHwoDam9iGAEgAygLMhIudGVuc29yZmxvdy5Kb2JEZWZCbgoab3JnLnRl",
- "bnNvcmZsb3cuZGlzdHJ1bnRpbWVCDUNsdXN0ZXJQcm90b3NQAVo8Z2l0aHVi",
+ "ZWYSHwoDam9iGAEgAygLMhIudGVuc29yZmxvdy5Kb2JEZWZCegoab3JnLnRl",
+ "bnNvcmZsb3cuZGlzdHJ1bnRpbWVCDUNsdXN0ZXJQcm90b3NQAVpIZ2l0aHVi",
"LmNvbS90ZW5zb3JmbG93L3RlbnNvcmZsb3cvdGVuc29yZmxvdy9nby9jb3Jl",
- "L3Byb3RvYnVm+AEBYgZwcm90bzM="));
+ "L2NvcmVfcHJvdG9zX2dvX3Byb3Rv+AEBYgZwcm90bzM="));
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 694a0aba..d4d348f5 100644
--- a/src/TensorFlowNET.Core/Protobuf/Config.cs
+++ b/src/TensorFlowNET.Core/Protobuf/Config.cs
@@ -30,7 +30,7 @@ namespace Tensorflow {
"KnRlbnNvcmZsb3cvY29yZS9mcmFtZXdvcmsvc3RlcF9zdGF0cy5wcm90bxom",
"dGVuc29yZmxvdy9jb3JlL3Byb3RvYnVmL2NsdXN0ZXIucHJvdG8aJHRlbnNv",
"cmZsb3cvY29yZS9wcm90b2J1Zi9kZWJ1Zy5wcm90bxoudGVuc29yZmxvdy9j",
- "b3JlL3Byb3RvYnVmL3Jld3JpdGVyX2NvbmZpZy5wcm90byK3BQoKR1BVT3B0",
+ "b3JlL3Byb3RvYnVmL3Jld3JpdGVyX2NvbmZpZy5wcm90byLJBQoKR1BVT3B0",
"aW9ucxInCh9wZXJfcHJvY2Vzc19ncHVfbWVtb3J5X2ZyYWN0aW9uGAEgASgB",
"EhQKDGFsbG93X2dyb3d0aBgEIAEoCBIWCg5hbGxvY2F0b3JfdHlwZRgCIAEo",
"CRIfChdkZWZlcnJlZF9kZWxldGlvbl9ieXRlcxgDIAEoAxIbChN2aXNpYmxl",
@@ -38,111 +38,116 @@ namespace Tensorflow {
"ZWNzGAYgASgFEiQKHHBvbGxpbmdfaW5hY3RpdmVfZGVsYXlfbXNlY3MYByAB",
"KAUSHAoUZm9yY2VfZ3B1X2NvbXBhdGlibGUYCCABKAgSOQoMZXhwZXJpbWVu",
"dGFsGAkgASgLMiMudGVuc29yZmxvdy5HUFVPcHRpb25zLkV4cGVyaW1lbnRh",
- "bBrwAgoMRXhwZXJpbWVudGFsEksKD3ZpcnR1YWxfZGV2aWNlcxgBIAMoCzIy",
+ "bBqCAwoMRXhwZXJpbWVudGFsEksKD3ZpcnR1YWxfZGV2aWNlcxgBIAMoCzIy",
"LnRlbnNvcmZsb3cuR1BVT3B0aW9ucy5FeHBlcmltZW50YWwuVmlydHVhbERl",
"dmljZXMSGgoSdXNlX3VuaWZpZWRfbWVtb3J5GAIgASgIEiMKG251bV9kZXZf",
"dG9fZGV2X2NvcHlfc3RyZWFtcxgDIAEoBRIdChVjb2xsZWN0aXZlX3Jpbmdf",
"b3JkZXIYBCABKAkSHQoVdGltZXN0YW1wZWRfYWxsb2NhdG9yGAUgASgIEiMK",
"G2tlcm5lbF90cmFja2VyX21heF9pbnRlcnZhbBgHIAEoBRIgChhrZXJuZWxf",
"dHJhY2tlcl9tYXhfYnl0ZXMYCCABKAUSIgoaa2VybmVsX3RyYWNrZXJfbWF4",
- "X3BlbmRpbmcYCSABKAUaKQoOVmlydHVhbERldmljZXMSFwoPbWVtb3J5X2xp",
- "bWl0X21iGAEgAygCIoUDChBPcHRpbWl6ZXJPcHRpb25zEisKI2RvX2NvbW1v",
- "bl9zdWJleHByZXNzaW9uX2VsaW1pbmF0aW9uGAEgASgIEhsKE2RvX2NvbnN0",
- "YW50X2ZvbGRpbmcYAiABKAgSJAocbWF4X2ZvbGRlZF9jb25zdGFudF9pbl9i",
- "eXRlcxgGIAEoAxIcChRkb19mdW5jdGlvbl9pbmxpbmluZxgEIAEoCBI1Cglv",
- "cHRfbGV2ZWwYAyABKA4yIi50ZW5zb3JmbG93Lk9wdGltaXplck9wdGlvbnMu",
- "TGV2ZWwSRQoQZ2xvYmFsX2ppdF9sZXZlbBgFIAEoDjIrLnRlbnNvcmZsb3cu",
- "T3B0aW1pemVyT3B0aW9ucy5HbG9iYWxKaXRMZXZlbCIgCgVMZXZlbBIGCgJM",
- "MRAAEg8KAkwwEP///////////wEiQwoOR2xvYmFsSml0TGV2ZWwSCwoHREVG",
- "QVVMVBAAEhAKA09GRhD///////////8BEggKBE9OXzEQARIICgRPTl8yEAIi",
- "7gIKDEdyYXBoT3B0aW9ucxIeChZlbmFibGVfcmVjdl9zY2hlZHVsaW5nGAIg",
- "ASgIEjcKEW9wdGltaXplcl9vcHRpb25zGAMgASgLMhwudGVuc29yZmxvdy5P",
- "cHRpbWl6ZXJPcHRpb25zEhgKEGJ1aWxkX2Nvc3RfbW9kZWwYBCABKAMSHgoW",
- "YnVpbGRfY29zdF9tb2RlbF9hZnRlchgJIAEoAxIUCgxpbmZlcl9zaGFwZXMY",
- "BSABKAgSGgoScGxhY2VfcHJ1bmVkX2dyYXBoGAYgASgIEiAKGGVuYWJsZV9i",
- "ZmxvYXQxNl9zZW5kcmVjdhgHIAEoCBIVCg10aW1lbGluZV9zdGVwGAggASgF",
- "EjMKD3Jld3JpdGVfb3B0aW9ucxgKIAEoCzIaLnRlbnNvcmZsb3cuUmV3cml0",
- "ZXJDb25maWdKBAgBEAJSJXNraXBfY29tbW9uX3N1YmV4cHJlc3Npb25fZWxp",
- "bWluYXRpb24iQQoVVGhyZWFkUG9vbE9wdGlvblByb3RvEhMKC251bV90aHJl",
- "YWRzGAEgASgFEhMKC2dsb2JhbF9uYW1lGAIgASgJIrQBCgpSUENPcHRpb25z",
- "EiQKHHVzZV9ycGNfZm9yX2lucHJvY2Vzc19tYXN0ZXIYASABKAgSHQoVY29t",
- "cHJlc3Npb25fYWxnb3JpdGhtGAIgASgJEhkKEWNvbXByZXNzaW9uX2xldmVs",
- "GAMgASgFEhoKEmNhY2hlX3JwY19yZXNwb25zZRgEIAEoCBIqCiJkaXNhYmxl",
- "X3Nlc3Npb25fY29ubmVjdGlvbl9zaGFyaW5nGAUgASgIIjAKD1Nlc3Npb25N",
- "ZXRhZGF0YRIMCgRuYW1lGAEgASgJEg8KB3ZlcnNpb24YAiABKAMi9gkKC0Nv",
- "bmZpZ1Byb3RvEj4KDGRldmljZV9jb3VudBgBIAMoCzIoLnRlbnNvcmZsb3cu",
- "Q29uZmlnUHJvdG8uRGV2aWNlQ291bnRFbnRyeRIkChxpbnRyYV9vcF9wYXJh",
- "bGxlbGlzbV90aHJlYWRzGAIgASgFEiQKHGludGVyX29wX3BhcmFsbGVsaXNt",
- "X3RocmVhZHMYBSABKAUSHwoXdXNlX3Blcl9zZXNzaW9uX3RocmVhZHMYCSAB",
- "KAgSRwocc2Vzc2lvbl9pbnRlcl9vcF90aHJlYWRfcG9vbBgMIAMoCzIhLnRl",
- "bnNvcmZsb3cuVGhyZWFkUG9vbE9wdGlvblByb3RvEhgKEHBsYWNlbWVudF9w",
- "ZXJpb2QYAyABKAUSFgoOZGV2aWNlX2ZpbHRlcnMYBCADKAkSKwoLZ3B1X29w",
- "dGlvbnMYBiABKAsyFi50ZW5zb3JmbG93LkdQVU9wdGlvbnMSHAoUYWxsb3df",
- "c29mdF9wbGFjZW1lbnQYByABKAgSHAoUbG9nX2RldmljZV9wbGFjZW1lbnQY",
- "CCABKAgSLwoNZ3JhcGhfb3B0aW9ucxgKIAEoCzIYLnRlbnNvcmZsb3cuR3Jh",
- "cGhPcHRpb25zEh8KF29wZXJhdGlvbl90aW1lb3V0X2luX21zGAsgASgDEisK",
- "C3JwY19vcHRpb25zGA0gASgLMhYudGVuc29yZmxvdy5SUENPcHRpb25zEisK",
- "C2NsdXN0ZXJfZGVmGA4gASgLMhYudGVuc29yZmxvdy5DbHVzdGVyRGVmEh0K",
- "FWlzb2xhdGVfc2Vzc2lvbl9zdGF0ZRgPIAEoCBI6CgxleHBlcmltZW50YWwY",
- "ECABKAsyJC50ZW5zb3JmbG93LkNvbmZpZ1Byb3RvLkV4cGVyaW1lbnRhbBoy",
- "ChBEZXZpY2VDb3VudEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEo",
- "BToCOAEamgQKDEV4cGVyaW1lbnRhbBIfChdjb2xsZWN0aXZlX2dyb3VwX2xl",
- "YWRlchgBIAEoCRIVCg1leGVjdXRvcl90eXBlGAMgASgJEhoKEnJlY3ZfYnVm",
- "X21heF9jaHVuaxgEIAEoBRIZChF1c2VfbnVtYV9hZmZpbml0eRgFIAEoCBI1",
- "Ci1jb2xsZWN0aXZlX2RldGVybWluaXN0aWNfc2VxdWVudGlhbF9leGVjdXRp",
- "b24YBiABKAgSFwoPY29sbGVjdGl2ZV9uY2NsGAcgASgIEjYKLnNoYXJlX3Nl",
- "c3Npb25fc3RhdGVfaW5fY2x1c3RlcnNwZWNfcHJvcGFnYXRpb24YCCABKAgS",
- "HwoXZGlzYWJsZV90aHJlYWRfc3Bpbm5pbmcYCSABKAgSKAogc2hhcmVfY2x1",
- "c3Rlcl9kZXZpY2VzX2luX3Nlc3Npb24YCiABKAgSNQoQc2Vzc2lvbl9tZXRh",
- "ZGF0YRgLIAEoCzIbLnRlbnNvcmZsb3cuU2Vzc2lvbk1ldGFkYXRhEiEKGW9w",
- "dGltaXplX2Zvcl9zdGF0aWNfZ3JhcGgYDCABKAgSGgoSZW5hYmxlX21saXJf",
- "YnJpZGdlGA0gASgIEicKH2Rpc2FibGVfb3V0cHV0X3BhcnRpdGlvbl9ncmFw",
- "aHMYDiABKAgSIwobeGxhX2Z1c2lvbl9hdXRvdHVuZXJfdGhyZXNoGA8gASgD",
- "SgQIAhADItgDCgpSdW5PcHRpb25zEjYKC3RyYWNlX2xldmVsGAEgASgOMiEu",
- "dGVuc29yZmxvdy5SdW5PcHRpb25zLlRyYWNlTGV2ZWwSFQoNdGltZW91dF9p",
- "bl9tcxgCIAEoAxIcChRpbnRlcl9vcF90aHJlYWRfcG9vbBgDIAEoBRIfChdv",
- "dXRwdXRfcGFydGl0aW9uX2dyYXBocxgFIAEoCBIvCg1kZWJ1Z19vcHRpb25z",
- "GAYgASgLMhgudGVuc29yZmxvdy5EZWJ1Z09wdGlvbnMSKgoicmVwb3J0X3Rl",
- "bnNvcl9hbGxvY2F0aW9uc191cG9uX29vbRgHIAEoCBI5CgxleHBlcmltZW50",
- "YWwYCCABKAsyIy50ZW5zb3JmbG93LlJ1bk9wdGlvbnMuRXhwZXJpbWVudGFs",
- "GkoKDEV4cGVyaW1lbnRhbBIcChRjb2xsZWN0aXZlX2dyYXBoX2tleRgBIAEo",
- "AxIcChR1c2VfcnVuX2hhbmRsZXJfcG9vbBgCIAEoCCJSCgpUcmFjZUxldmVs",
- "EgwKCE5PX1RSQUNFEAASEgoOU09GVFdBUkVfVFJBQ0UQARISCg5IQVJEV0FS",
- "RV9UUkFDRRACEg4KCkZVTExfVFJBQ0UQA0oECAQQBSKHAwoLUnVuTWV0YWRh",
- "dGESKQoKc3RlcF9zdGF0cxgBIAEoCzIVLnRlbnNvcmZsb3cuU3RlcFN0YXRz",
- "EiwKCmNvc3RfZ3JhcGgYAiABKAsyGC50ZW5zb3JmbG93LkNvc3RHcmFwaERl",
- "ZhIuChBwYXJ0aXRpb25fZ3JhcGhzGAMgAygLMhQudGVuc29yZmxvdy5HcmFw",
- "aERlZhI/Cg9mdW5jdGlvbl9ncmFwaHMYBCADKAsyJi50ZW5zb3JmbG93LlJ1",
- "bk1ldGFkYXRhLkZ1bmN0aW9uR3JhcGhzGq0BCg5GdW5jdGlvbkdyYXBocxIu",
- "ChBwYXJ0aXRpb25fZ3JhcGhzGAEgAygLMhQudGVuc29yZmxvdy5HcmFwaERl",
- "ZhI0ChZwcmVfb3B0aW1pemF0aW9uX2dyYXBoGAIgASgLMhQudGVuc29yZmxv",
- "dy5HcmFwaERlZhI1Chdwb3N0X29wdGltaXphdGlvbl9ncmFwaBgDIAEoCzIU",
- "LnRlbnNvcmZsb3cuR3JhcGhEZWYiOgoQVGVuc29yQ29ubmVjdGlvbhITCgtm",
- "cm9tX3RlbnNvchgBIAEoCRIRCgl0b190ZW5zb3IYAiABKAkisAMKD0NhbGxh",
- "YmxlT3B0aW9ucxIMCgRmZWVkGAEgAygJEg0KBWZldGNoGAIgAygJEg4KBnRh",
- "cmdldBgDIAMoCRIrCgtydW5fb3B0aW9ucxgEIAEoCzIWLnRlbnNvcmZsb3cu",
- "UnVuT3B0aW9ucxI3ChF0ZW5zb3JfY29ubmVjdGlvbhgFIAMoCzIcLnRlbnNv",
- "cmZsb3cuVGVuc29yQ29ubmVjdGlvbhJCCgxmZWVkX2RldmljZXMYBiADKAsy",
- "LC50ZW5zb3JmbG93LkNhbGxhYmxlT3B0aW9ucy5GZWVkRGV2aWNlc0VudHJ5",
- "EkQKDWZldGNoX2RldmljZXMYByADKAsyLS50ZW5zb3JmbG93LkNhbGxhYmxl",
- "T3B0aW9ucy5GZXRjaERldmljZXNFbnRyeRIXCg9mZXRjaF9za2lwX3N5bmMY",
- "CCABKAgaMgoQRmVlZERldmljZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFs",
- "dWUYAiABKAk6AjgBGjMKEUZldGNoRGV2aWNlc0VudHJ5EgsKA2tleRgBIAEo",
- "CRINCgV2YWx1ZRgCIAEoCToCOAFCawoYb3JnLnRlbnNvcmZsb3cuZnJhbWV3",
- "b3JrQgxDb25maWdQcm90b3NQAVo8Z2l0aHViLmNvbS90ZW5zb3JmbG93L3Rl",
- "bnNvcmZsb3cvdGVuc29yZmxvdy9nby9jb3JlL3Byb3RvYnVm+AEBYgZwcm90",
- "bzM="));
+ "X3BlbmRpbmcYCSABKAUaOwoOVmlydHVhbERldmljZXMSFwoPbWVtb3J5X2xp",
+ "bWl0X21iGAEgAygCEhAKCHByaW9yaXR5GAIgAygFIoUDChBPcHRpbWl6ZXJP",
+ "cHRpb25zEisKI2RvX2NvbW1vbl9zdWJleHByZXNzaW9uX2VsaW1pbmF0aW9u",
+ "GAEgASgIEhsKE2RvX2NvbnN0YW50X2ZvbGRpbmcYAiABKAgSJAocbWF4X2Zv",
+ "bGRlZF9jb25zdGFudF9pbl9ieXRlcxgGIAEoAxIcChRkb19mdW5jdGlvbl9p",
+ "bmxpbmluZxgEIAEoCBI1CglvcHRfbGV2ZWwYAyABKA4yIi50ZW5zb3JmbG93",
+ "Lk9wdGltaXplck9wdGlvbnMuTGV2ZWwSRQoQZ2xvYmFsX2ppdF9sZXZlbBgF",
+ "IAEoDjIrLnRlbnNvcmZsb3cuT3B0aW1pemVyT3B0aW9ucy5HbG9iYWxKaXRM",
+ "ZXZlbCIgCgVMZXZlbBIGCgJMMRAAEg8KAkwwEP///////////wEiQwoOR2xv",
+ "YmFsSml0TGV2ZWwSCwoHREVGQVVMVBAAEhAKA09GRhD///////////8BEggK",
+ "BE9OXzEQARIICgRPTl8yEAIi7gIKDEdyYXBoT3B0aW9ucxIeChZlbmFibGVf",
+ "cmVjdl9zY2hlZHVsaW5nGAIgASgIEjcKEW9wdGltaXplcl9vcHRpb25zGAMg",
+ "ASgLMhwudGVuc29yZmxvdy5PcHRpbWl6ZXJPcHRpb25zEhgKEGJ1aWxkX2Nv",
+ "c3RfbW9kZWwYBCABKAMSHgoWYnVpbGRfY29zdF9tb2RlbF9hZnRlchgJIAEo",
+ "AxIUCgxpbmZlcl9zaGFwZXMYBSABKAgSGgoScGxhY2VfcHJ1bmVkX2dyYXBo",
+ "GAYgASgIEiAKGGVuYWJsZV9iZmxvYXQxNl9zZW5kcmVjdhgHIAEoCBIVCg10",
+ "aW1lbGluZV9zdGVwGAggASgFEjMKD3Jld3JpdGVfb3B0aW9ucxgKIAEoCzIa",
+ "LnRlbnNvcmZsb3cuUmV3cml0ZXJDb25maWdKBAgBEAJSJXNraXBfY29tbW9u",
+ "X3N1YmV4cHJlc3Npb25fZWxpbWluYXRpb24iQQoVVGhyZWFkUG9vbE9wdGlv",
+ "blByb3RvEhMKC251bV90aHJlYWRzGAEgASgFEhMKC2dsb2JhbF9uYW1lGAIg",
+ "ASgJIrQBCgpSUENPcHRpb25zEiQKHHVzZV9ycGNfZm9yX2lucHJvY2Vzc19t",
+ "YXN0ZXIYASABKAgSHQoVY29tcHJlc3Npb25fYWxnb3JpdGhtGAIgASgJEhkK",
+ "EWNvbXByZXNzaW9uX2xldmVsGAMgASgFEhoKEmNhY2hlX3JwY19yZXNwb25z",
+ "ZRgEIAEoCBIqCiJkaXNhYmxlX3Nlc3Npb25fY29ubmVjdGlvbl9zaGFyaW5n",
+ "GAUgASgIIjAKD1Nlc3Npb25NZXRhZGF0YRIMCgRuYW1lGAEgASgJEg8KB3Zl",
+ "cnNpb24YAiABKAMiyAoKC0NvbmZpZ1Byb3RvEj4KDGRldmljZV9jb3VudBgB",
+ "IAMoCzIoLnRlbnNvcmZsb3cuQ29uZmlnUHJvdG8uRGV2aWNlQ291bnRFbnRy",
+ "eRIkChxpbnRyYV9vcF9wYXJhbGxlbGlzbV90aHJlYWRzGAIgASgFEiQKHGlu",
+ "dGVyX29wX3BhcmFsbGVsaXNtX3RocmVhZHMYBSABKAUSHwoXdXNlX3Blcl9z",
+ "ZXNzaW9uX3RocmVhZHMYCSABKAgSRwocc2Vzc2lvbl9pbnRlcl9vcF90aHJl",
+ "YWRfcG9vbBgMIAMoCzIhLnRlbnNvcmZsb3cuVGhyZWFkUG9vbE9wdGlvblBy",
+ "b3RvEhgKEHBsYWNlbWVudF9wZXJpb2QYAyABKAUSFgoOZGV2aWNlX2ZpbHRl",
+ "cnMYBCADKAkSKwoLZ3B1X29wdGlvbnMYBiABKAsyFi50ZW5zb3JmbG93LkdQ",
+ "VU9wdGlvbnMSHAoUYWxsb3dfc29mdF9wbGFjZW1lbnQYByABKAgSHAoUbG9n",
+ "X2RldmljZV9wbGFjZW1lbnQYCCABKAgSLwoNZ3JhcGhfb3B0aW9ucxgKIAEo",
+ "CzIYLnRlbnNvcmZsb3cuR3JhcGhPcHRpb25zEh8KF29wZXJhdGlvbl90aW1l",
+ "b3V0X2luX21zGAsgASgDEisKC3JwY19vcHRpb25zGA0gASgLMhYudGVuc29y",
+ "Zmxvdy5SUENPcHRpb25zEisKC2NsdXN0ZXJfZGVmGA4gASgLMhYudGVuc29y",
+ "Zmxvdy5DbHVzdGVyRGVmEh0KFWlzb2xhdGVfc2Vzc2lvbl9zdGF0ZRgPIAEo",
+ "CBIoCiBzaGFyZV9jbHVzdGVyX2RldmljZXNfaW5fc2Vzc2lvbhgRIAEoCBI6",
+ "CgxleHBlcmltZW50YWwYECABKAsyJC50ZW5zb3JmbG93LkNvbmZpZ1Byb3Rv",
+ "LkV4cGVyaW1lbnRhbBoyChBEZXZpY2VDb3VudEVudHJ5EgsKA2tleRgBIAEo",
+ "CRINCgV2YWx1ZRgCIAEoBToCOAEawgQKDEV4cGVyaW1lbnRhbBIfChdjb2xs",
+ "ZWN0aXZlX2dyb3VwX2xlYWRlchgBIAEoCRIVCg1leGVjdXRvcl90eXBlGAMg",
+ "ASgJEhoKEnJlY3ZfYnVmX21heF9jaHVuaxgEIAEoBRIZChF1c2VfbnVtYV9h",
+ "ZmZpbml0eRgFIAEoCBI1Ci1jb2xsZWN0aXZlX2RldGVybWluaXN0aWNfc2Vx",
+ "dWVudGlhbF9leGVjdXRpb24YBiABKAgSFwoPY29sbGVjdGl2ZV9uY2NsGAcg",
+ "ASgIEjYKLnNoYXJlX3Nlc3Npb25fc3RhdGVfaW5fY2x1c3RlcnNwZWNfcHJv",
+ "cGFnYXRpb24YCCABKAgSHwoXZGlzYWJsZV90aHJlYWRfc3Bpbm5pbmcYCSAB",
+ "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="));
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[] {
- new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.GPUOptions), global::Tensorflow.GPUOptions.Parser, new[]{ "PerProcessGpuMemoryFraction", "AllowGrowth", "AllocatorType", "DeferredDeletionBytes", "VisibleDeviceList", "PollingActiveDelayUsecs", "PollingInactiveDelayMsecs", "ForceGpuCompatible", "Experimental" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.GPUOptions.Types.Experimental), global::Tensorflow.GPUOptions.Types.Experimental.Parser, new[]{ "VirtualDevices", "UseUnifiedMemory", "NumDevToDevCopyStreams", "CollectiveRingOrder", "TimestampedAllocator", "KernelTrackerMaxInterval", "KernelTrackerMaxBytes", "KernelTrackerMaxPending" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.GPUOptions.Types.Experimental.Types.VirtualDevices), global::Tensorflow.GPUOptions.Types.Experimental.Types.VirtualDevices.Parser, new[]{ "MemoryLimitMb" }, null, null, null, null)})}),
+ new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.GPUOptions), global::Tensorflow.GPUOptions.Parser, new[]{ "PerProcessGpuMemoryFraction", "AllowGrowth", "AllocatorType", "DeferredDeletionBytes", "VisibleDeviceList", "PollingActiveDelayUsecs", "PollingInactiveDelayMsecs", "ForceGpuCompatible", "Experimental" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.GPUOptions.Types.Experimental), global::Tensorflow.GPUOptions.Types.Experimental.Parser, new[]{ "VirtualDevices", "UseUnifiedMemory", "NumDevToDevCopyStreams", "CollectiveRingOrder", "TimestampedAllocator", "KernelTrackerMaxInterval", "KernelTrackerMaxBytes", "KernelTrackerMaxPending" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.GPUOptions.Types.Experimental.Types.VirtualDevices), global::Tensorflow.GPUOptions.Types.Experimental.Types.VirtualDevices.Parser, new[]{ "MemoryLimitMb", "Priority" }, null, null, null, null)})}),
new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.OptimizerOptions), global::Tensorflow.OptimizerOptions.Parser, new[]{ "DoCommonSubexpressionElimination", "DoConstantFolding", "MaxFoldedConstantInBytes", "DoFunctionInlining", "OptLevel", "GlobalJitLevel" }, null, new[]{ typeof(global::Tensorflow.OptimizerOptions.Types.Level), typeof(global::Tensorflow.OptimizerOptions.Types.GlobalJitLevel) }, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.GraphOptions), global::Tensorflow.GraphOptions.Parser, new[]{ "EnableRecvScheduling", "OptimizerOptions", "BuildCostModel", "BuildCostModelAfter", "InferShapes", "PlacePrunedGraph", "EnableBfloat16Sendrecv", "TimelineStep", "RewriteOptions" }, null, null, null, null),
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", "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", "DisableOutputPartitionGraphs", "XlaFusionAutotunerThresh" }, null, null, 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" }, 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.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),
new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.CallableOptions), global::Tensorflow.CallableOptions.Parser, new[]{ "Feed", "Fetch", "Target", "RunOptions", "TensorConnection", "FeedDevices", "FetchDevices", "FetchSkipSync" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, null, })
@@ -1022,6 +1027,7 @@ namespace Tensorflow {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public VirtualDevices(VirtualDevices other) : this() {
memoryLimitMb_ = other.memoryLimitMb_.Clone();
+ priority_ = other.priority_.Clone();
_unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
}
@@ -1050,6 +1056,28 @@ namespace Tensorflow {
get { return memoryLimitMb_; }
}
+ /// Field number for the "priority" field.
+ public const int PriorityFieldNumber = 2;
+ private static readonly pb::FieldCodec _repeated_priority_codec
+ = pb::FieldCodec.ForInt32(18);
+ private readonly pbc::RepeatedField priority_ = new pbc::RepeatedField();
+ ///
+ /// Priority values to use with the virtual devices. Use the cuda function
+ /// cudaDeviceGetStreamPriorityRange to query for valid range of values for
+ /// priority.
+ ///
+ /// On a P4000 GPU with cuda 10.1, the priority range reported was 0 for
+ /// least priority and -1 for greatest priority.
+ ///
+ /// If this field is not specified, then the virtual devices will be
+ /// created with the default. If this field has values set, then the size
+ /// of this must match with the above memory_limit_mb.
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField Priority {
+ get { return priority_; }
+ }
+
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public override bool Equals(object other) {
return Equals(other as VirtualDevices);
@@ -1064,6 +1092,7 @@ namespace Tensorflow {
return true;
}
if(!memoryLimitMb_.Equals(other.memoryLimitMb_)) return false;
+ if(!priority_.Equals(other.priority_)) return false;
return Equals(_unknownFields, other._unknownFields);
}
@@ -1071,6 +1100,7 @@ namespace Tensorflow {
public override int GetHashCode() {
int hash = 1;
hash ^= memoryLimitMb_.GetHashCode();
+ hash ^= priority_.GetHashCode();
if (_unknownFields != null) {
hash ^= _unknownFields.GetHashCode();
}
@@ -1085,6 +1115,7 @@ namespace Tensorflow {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public void WriteTo(pb::CodedOutputStream output) {
memoryLimitMb_.WriteTo(output, _repeated_memoryLimitMb_codec);
+ priority_.WriteTo(output, _repeated_priority_codec);
if (_unknownFields != null) {
_unknownFields.WriteTo(output);
}
@@ -1094,6 +1125,7 @@ namespace Tensorflow {
public int CalculateSize() {
int size = 0;
size += memoryLimitMb_.CalculateSize(_repeated_memoryLimitMb_codec);
+ size += priority_.CalculateSize(_repeated_priority_codec);
if (_unknownFields != null) {
size += _unknownFields.CalculateSize();
}
@@ -1106,6 +1138,7 @@ namespace Tensorflow {
return;
}
memoryLimitMb_.Add(other.memoryLimitMb_);
+ priority_.Add(other.priority_);
_unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
}
@@ -1122,6 +1155,11 @@ namespace Tensorflow {
memoryLimitMb_.AddEntriesFrom(input, _repeated_memoryLimitMb_codec);
break;
}
+ case 18:
+ case 16: {
+ priority_.AddEntriesFrom(input, _repeated_priority_codec);
+ break;
+ }
}
}
}
@@ -2539,6 +2577,7 @@ namespace Tensorflow {
rpcOptions_ = other.rpcOptions_ != null ? other.rpcOptions_.Clone() : null;
clusterDef_ = other.clusterDef_ != null ? other.clusterDef_.Clone() : null;
isolateSessionState_ = other.isolateSessionState_;
+ shareClusterDevicesInSession_ = other.shareClusterDevicesInSession_;
experimental_ = other.experimental_ != null ? other.experimental_.Clone() : null;
_unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
}
@@ -2571,6 +2610,17 @@ namespace Tensorflow {
/// The execution of an individual op (for some op types) can be
/// parallelized on a pool of intra_op_parallelism_threads.
/// 0 means the system picks an appropriate number.
+ ///
+ /// If you create an ordinary session, e.g., from Python or C++,
+ /// then there is exactly one intra op thread pool per process.
+ /// The first session created determines the number of threads in this pool.
+ /// All subsequent sessions reuse/share this one global pool.
+ ///
+ /// There are notable exceptions to the default behavior describe above:
+ /// 1. There is an environment variable for overriding this thread pool,
+ /// named TF_OVERRIDE_GLOBAL_THREADPOOL.
+ /// 2. When connecting to a server, such as a remote `tf.train.Server`
+ /// instance, then this option will be ignored altogether.
///
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public int IntraOpParallelismThreads {
@@ -2808,6 +2858,23 @@ namespace Tensorflow {
}
}
+ /// Field number for the "share_cluster_devices_in_session" field.
+ public const int ShareClusterDevicesInSessionFieldNumber = 17;
+ private bool shareClusterDevicesInSession_;
+ ///
+ /// When true, WorkerSessions are created with device attributes from the
+ /// full cluster.
+ /// This is helpful when a worker wants to partition a graph
+ /// (for example during a PartitionedCallOp).
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public bool ShareClusterDevicesInSession {
+ get { return shareClusterDevicesInSession_; }
+ set {
+ shareClusterDevicesInSession_ = value;
+ }
+ }
+
/// Field number for the "experimental" field.
public const int ExperimentalFieldNumber = 16;
private global::Tensorflow.ConfigProto.Types.Experimental experimental_;
@@ -2847,6 +2914,7 @@ namespace Tensorflow {
if (!object.Equals(RpcOptions, other.RpcOptions)) return false;
if (!object.Equals(ClusterDef, other.ClusterDef)) return false;
if (IsolateSessionState != other.IsolateSessionState) return false;
+ if (ShareClusterDevicesInSession != other.ShareClusterDevicesInSession) return false;
if (!object.Equals(Experimental, other.Experimental)) return false;
return Equals(_unknownFields, other._unknownFields);
}
@@ -2869,6 +2937,7 @@ namespace Tensorflow {
if (rpcOptions_ != null) hash ^= RpcOptions.GetHashCode();
if (clusterDef_ != null) hash ^= ClusterDef.GetHashCode();
if (IsolateSessionState != false) hash ^= IsolateSessionState.GetHashCode();
+ if (ShareClusterDevicesInSession != false) hash ^= ShareClusterDevicesInSession.GetHashCode();
if (experimental_ != null) hash ^= Experimental.GetHashCode();
if (_unknownFields != null) {
hash ^= _unknownFields.GetHashCode();
@@ -2938,6 +3007,10 @@ namespace Tensorflow {
output.WriteRawTag(130, 1);
output.WriteMessage(Experimental);
}
+ if (ShareClusterDevicesInSession != false) {
+ output.WriteRawTag(136, 1);
+ output.WriteBool(ShareClusterDevicesInSession);
+ }
if (_unknownFields != null) {
_unknownFields.WriteTo(output);
}
@@ -2985,6 +3058,9 @@ namespace Tensorflow {
if (IsolateSessionState != false) {
size += 1 + 1;
}
+ if (ShareClusterDevicesInSession != false) {
+ size += 2 + 1;
+ }
if (experimental_ != null) {
size += 2 + pb::CodedOutputStream.ComputeMessageSize(Experimental);
}
@@ -3050,6 +3126,9 @@ namespace Tensorflow {
if (other.IsolateSessionState != false) {
IsolateSessionState = other.IsolateSessionState;
}
+ if (other.ShareClusterDevicesInSession != false) {
+ ShareClusterDevicesInSession = other.ShareClusterDevicesInSession;
+ }
if (other.experimental_ != null) {
if (experimental_ == null) {
Experimental = new global::Tensorflow.ConfigProto.Types.Experimental();
@@ -3146,6 +3225,10 @@ namespace Tensorflow {
input.ReadMessage(Experimental);
break;
}
+ case 136: {
+ ShareClusterDevicesInSession = input.ReadBool();
+ break;
+ }
}
}
}
@@ -3196,6 +3279,7 @@ namespace Tensorflow {
sessionMetadata_ = other.sessionMetadata_ != null ? other.sessionMetadata_.Clone() : null;
optimizeForStaticGraph_ = other.optimizeForStaticGraph_;
enableMlirBridge_ = other.enableMlirBridge_;
+ enableMlirGraphOptimization_ = other.enableMlirGraphOptimization_;
disableOutputPartitionGraphs_ = other.disableOutputPartitionGraphs_;
xlaFusionAutotunerThresh_ = other.xlaFusionAutotunerThresh_;
_unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
@@ -3351,10 +3435,8 @@ namespace Tensorflow {
public const int ShareClusterDevicesInSessionFieldNumber = 10;
private bool shareClusterDevicesInSession_;
///
- /// When true, WorkerSessions are created with device attributes from the
- /// full cluster.
- /// This is helpful when a worker wants to partition a graph
- /// (for example during a PartitionedCallOp).
+ /// This was promoted to a non-experimental API. Please use
+ /// ConfigProto.share_cluster_devices_in_session instead.
///
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public bool ShareClusterDevicesInSession {
@@ -3426,6 +3508,24 @@ namespace Tensorflow {
}
}
+ /// Field number for the "enable_mlir_graph_optimization" field.
+ public const int EnableMlirGraphOptimizationFieldNumber = 16;
+ private bool enableMlirGraphOptimization_;
+ ///
+ /// Whether to enable the MLIR-based Graph optimizations.
+ ///
+ /// This will become a part of standard Tensorflow graph optimization
+ /// pipeline, currently this is only used for gradual migration and testing
+ /// new passes that are replacing existing optimizations in Grappler.
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public bool EnableMlirGraphOptimization {
+ get { return enableMlirGraphOptimization_; }
+ set {
+ enableMlirGraphOptimization_ = value;
+ }
+ }
+
/// Field number for the "disable_output_partition_graphs" field.
public const int DisableOutputPartitionGraphsFieldNumber = 14;
private bool disableOutputPartitionGraphs_;
@@ -3487,6 +3587,7 @@ namespace Tensorflow {
if (!object.Equals(SessionMetadata, other.SessionMetadata)) return false;
if (OptimizeForStaticGraph != other.OptimizeForStaticGraph) return false;
if (EnableMlirBridge != other.EnableMlirBridge) return false;
+ if (EnableMlirGraphOptimization != other.EnableMlirGraphOptimization) return false;
if (DisableOutputPartitionGraphs != other.DisableOutputPartitionGraphs) return false;
if (XlaFusionAutotunerThresh != other.XlaFusionAutotunerThresh) return false;
return Equals(_unknownFields, other._unknownFields);
@@ -3507,6 +3608,7 @@ namespace Tensorflow {
if (sessionMetadata_ != null) hash ^= SessionMetadata.GetHashCode();
if (OptimizeForStaticGraph != false) hash ^= OptimizeForStaticGraph.GetHashCode();
if (EnableMlirBridge != false) hash ^= EnableMlirBridge.GetHashCode();
+ if (EnableMlirGraphOptimization != false) hash ^= EnableMlirGraphOptimization.GetHashCode();
if (DisableOutputPartitionGraphs != false) hash ^= DisableOutputPartitionGraphs.GetHashCode();
if (XlaFusionAutotunerThresh != 0L) hash ^= XlaFusionAutotunerThresh.GetHashCode();
if (_unknownFields != null) {
@@ -3578,6 +3680,10 @@ namespace Tensorflow {
output.WriteRawTag(120);
output.WriteInt64(XlaFusionAutotunerThresh);
}
+ if (EnableMlirGraphOptimization != false) {
+ output.WriteRawTag(128, 1);
+ output.WriteBool(EnableMlirGraphOptimization);
+ }
if (_unknownFields != null) {
_unknownFields.WriteTo(output);
}
@@ -3622,6 +3728,9 @@ namespace Tensorflow {
if (EnableMlirBridge != false) {
size += 1 + 1;
}
+ if (EnableMlirGraphOptimization != false) {
+ size += 2 + 1;
+ }
if (DisableOutputPartitionGraphs != false) {
size += 1 + 1;
}
@@ -3678,6 +3787,9 @@ namespace Tensorflow {
if (other.EnableMlirBridge != false) {
EnableMlirBridge = other.EnableMlirBridge;
}
+ if (other.EnableMlirGraphOptimization != false) {
+ EnableMlirGraphOptimization = other.EnableMlirGraphOptimization;
+ }
if (other.DisableOutputPartitionGraphs != false) {
DisableOutputPartitionGraphs = other.DisableOutputPartitionGraphs;
}
@@ -3754,6 +3866,10 @@ namespace Tensorflow {
XlaFusionAutotunerThresh = input.ReadInt64();
break;
}
+ case 128: {
+ EnableMlirGraphOptimization = input.ReadBool();
+ break;
+ }
}
}
}
@@ -4147,6 +4263,7 @@ namespace Tensorflow {
public Experimental(Experimental other) : this() {
collectiveGraphKey_ = other.collectiveGraphKey_;
useRunHandlerPool_ = other.useRunHandlerPool_;
+ runHandlerPoolOptions_ = other.runHandlerPoolOptions_ != null ? other.runHandlerPoolOptions_.Clone() : null;
_unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
}
@@ -4189,6 +4306,17 @@ namespace Tensorflow {
}
}
+ /// Field number for the "run_handler_pool_options" field.
+ public const int RunHandlerPoolOptionsFieldNumber = 3;
+ private global::Tensorflow.RunOptions.Types.Experimental.Types.RunHandlerPoolOptions runHandlerPoolOptions_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public global::Tensorflow.RunOptions.Types.Experimental.Types.RunHandlerPoolOptions RunHandlerPoolOptions {
+ get { return runHandlerPoolOptions_; }
+ set {
+ runHandlerPoolOptions_ = value;
+ }
+ }
+
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public override bool Equals(object other) {
return Equals(other as Experimental);
@@ -4204,6 +4332,7 @@ namespace Tensorflow {
}
if (CollectiveGraphKey != other.CollectiveGraphKey) return false;
if (UseRunHandlerPool != other.UseRunHandlerPool) return false;
+ if (!object.Equals(RunHandlerPoolOptions, other.RunHandlerPoolOptions)) return false;
return Equals(_unknownFields, other._unknownFields);
}
@@ -4212,6 +4341,7 @@ namespace Tensorflow {
int hash = 1;
if (CollectiveGraphKey != 0L) hash ^= CollectiveGraphKey.GetHashCode();
if (UseRunHandlerPool != false) hash ^= UseRunHandlerPool.GetHashCode();
+ if (runHandlerPoolOptions_ != null) hash ^= RunHandlerPoolOptions.GetHashCode();
if (_unknownFields != null) {
hash ^= _unknownFields.GetHashCode();
}
@@ -4233,6 +4363,10 @@ namespace Tensorflow {
output.WriteRawTag(16);
output.WriteBool(UseRunHandlerPool);
}
+ if (runHandlerPoolOptions_ != null) {
+ output.WriteRawTag(26);
+ output.WriteMessage(RunHandlerPoolOptions);
+ }
if (_unknownFields != null) {
_unknownFields.WriteTo(output);
}
@@ -4247,6 +4381,9 @@ namespace Tensorflow {
if (UseRunHandlerPool != false) {
size += 1 + 1;
}
+ if (runHandlerPoolOptions_ != null) {
+ size += 1 + pb::CodedOutputStream.ComputeMessageSize(RunHandlerPoolOptions);
+ }
if (_unknownFields != null) {
size += _unknownFields.CalculateSize();
}
@@ -4264,6 +4401,12 @@ namespace Tensorflow {
if (other.UseRunHandlerPool != false) {
UseRunHandlerPool = other.UseRunHandlerPool;
}
+ if (other.runHandlerPoolOptions_ != null) {
+ if (runHandlerPoolOptions_ == null) {
+ RunHandlerPoolOptions = new global::Tensorflow.RunOptions.Types.Experimental.Types.RunHandlerPoolOptions();
+ }
+ RunHandlerPoolOptions.MergeFrom(other.RunHandlerPoolOptions);
+ }
_unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
}
@@ -4283,9 +4426,159 @@ namespace Tensorflow {
UseRunHandlerPool = input.ReadBool();
break;
}
+ case 26: {
+ if (runHandlerPoolOptions_ == null) {
+ RunHandlerPoolOptions = new global::Tensorflow.RunOptions.Types.Experimental.Types.RunHandlerPoolOptions();
+ }
+ input.ReadMessage(RunHandlerPoolOptions);
+ break;
+ }
+ }
+ }
+ }
+
+ #region Nested types
+ /// Container for nested types declared in the Experimental message type.
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static partial class Types {
+ ///
+ /// Options for run handler thread pool.
+ ///
+ public sealed partial class RunHandlerPoolOptions : pb::IMessage {
+ private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new RunHandlerPoolOptions());
+ 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::Tensorflow.RunOptions.Types.Experimental.Descriptor.NestedTypes[0]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public RunHandlerPoolOptions() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public RunHandlerPoolOptions(RunHandlerPoolOptions other) : this() {
+ priority_ = other.priority_;
+ _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public RunHandlerPoolOptions Clone() {
+ return new RunHandlerPoolOptions(this);
+ }
+
+ /// Field number for the "priority" field.
+ public const int PriorityFieldNumber = 1;
+ private long priority_;
+ ///
+ /// Priority of the request. The run handler thread pool will schedule ops
+ /// based on the priority number. The larger number means higher priority.
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public long Priority {
+ get { return priority_; }
+ set {
+ priority_ = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override bool Equals(object other) {
+ return Equals(other as RunHandlerPoolOptions);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public bool Equals(RunHandlerPoolOptions other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Priority != other.Priority) return false;
+ return Equals(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Priority != 0L) hash ^= Priority.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 (Priority != 0L) {
+ output.WriteRawTag(8);
+ output.WriteInt64(Priority);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(output);
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int CalculateSize() {
+ int size = 0;
+ if (Priority != 0L) {
+ size += 1 + pb::CodedOutputStream.ComputeInt64Size(Priority);
+ }
+ if (_unknownFields != null) {
+ size += _unknownFields.CalculateSize();
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void MergeFrom(RunHandlerPoolOptions other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Priority != 0L) {
+ Priority = other.Priority;
+ }
+ _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: {
+ Priority = input.ReadInt64();
+ break;
+ }
+ }
+ }
}
+
}
+
}
+ #endregion
}
diff --git a/src/TensorFlowNET.Core/Protobuf/ControlFlow.cs b/src/TensorFlowNET.Core/Protobuf/ControlFlow.cs
index 1fb8c005..7bf29730 100644
--- a/src/TensorFlowNET.Core/Protobuf/ControlFlow.cs
+++ b/src/TensorFlowNET.Core/Protobuf/ControlFlow.cs
@@ -44,10 +44,10 @@ namespace Tensorflow {
"X2VudGVyX25hbWVzGAogAygJEikKCnZhbHVlc19kZWYYCSABKAsyFS50ZW5z",
"b3JmbG93LlZhbHVlc0RlZhIfChdtYXhpbXVtX2l0ZXJhdGlvbnNfbmFtZRgL",
"IAEoCRI6Cg9uZXN0ZWRfY29udGV4dHMYDCADKAsyIS50ZW5zb3JmbG93LkNv",
- "bnRyb2xGbG93Q29udGV4dERlZkJwChhvcmcudGVuc29yZmxvdy5mcmFtZXdv",
- "cmtCEUNvbnRyb2xGbG93UHJvdG9zUAFaPGdpdGh1Yi5jb20vdGVuc29yZmxv",
- "dy90ZW5zb3JmbG93L3RlbnNvcmZsb3cvZ28vY29yZS9wcm90b2J1ZvgBAWIG",
- "cHJvdG8z"));
+ "bnRyb2xGbG93Q29udGV4dERlZkJ8ChhvcmcudGVuc29yZmxvdy5mcmFtZXdv",
+ "cmtCEUNvbnRyb2xGbG93UHJvdG9zUAFaSGdpdGh1Yi5jb20vdGVuc29yZmxv",
+ "dy90ZW5zb3JmbG93L3RlbnNvcmZsb3cvZ28vY29yZS9jb3JlX3Byb3Rvc19n",
+ "b19wcm90b/gBAWIGcHJvdG8z"));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { },
new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
diff --git a/src/TensorFlowNET.Core/Protobuf/CostGraph.cs b/src/TensorFlowNET.Core/Protobuf/CostGraph.cs
index fba4c65a..c3b91d8e 100644
--- a/src/TensorFlowNET.Core/Protobuf/CostGraph.cs
+++ b/src/TensorFlowNET.Core/Protobuf/CostGraph.cs
@@ -27,31 +27,35 @@ namespace Tensorflow {
"Cip0ZW5zb3JmbG93L2NvcmUvZnJhbWV3b3JrL2Nvc3RfZ3JhcGgucHJvdG8S",
"CnRlbnNvcmZsb3caLHRlbnNvcmZsb3cvY29yZS9mcmFtZXdvcmsvdGVuc29y",
"X3NoYXBlLnByb3RvGiV0ZW5zb3JmbG93L2NvcmUvZnJhbWV3b3JrL3R5cGVz",
- "LnByb3RvIuAFCgxDb3N0R3JhcGhEZWYSKwoEbm9kZRgBIAMoCzIdLnRlbnNv",
- "cmZsb3cuQ29zdEdyYXBoRGVmLk5vZGUaogUKBE5vZGUSDAoEbmFtZRgBIAEo",
- "CRIOCgZkZXZpY2UYAiABKAkSCgoCaWQYAyABKAUSOwoKaW5wdXRfaW5mbxgE",
- "IAMoCzInLnRlbnNvcmZsb3cuQ29zdEdyYXBoRGVmLk5vZGUuSW5wdXRJbmZv",
- "Ej0KC291dHB1dF9pbmZvGAUgAygLMigudGVuc29yZmxvdy5Db3N0R3JhcGhE",
- "ZWYuTm9kZS5PdXRwdXRJbmZvEh0KFXRlbXBvcmFyeV9tZW1vcnlfc2l6ZRgG",
- "IAEoAxIeChZwZXJzaXN0ZW50X21lbW9yeV9zaXplGAwgASgDEiEKFWhvc3Rf",
- "dGVtcF9tZW1vcnlfc2l6ZRgKIAEoA0ICGAESIwoXZGV2aWNlX3RlbXBfbWVt",
- "b3J5X3NpemUYCyABKANCAhgBEikKHWRldmljZV9wZXJzaXN0ZW50X21lbW9y",
- "eV9zaXplGBAgASgDQgIYARIUCgxjb21wdXRlX2Nvc3QYCSABKAMSFAoMY29t",
- "cHV0ZV90aW1lGA4gASgDEhMKC21lbW9yeV90aW1lGA8gASgDEhAKCGlzX2Zp",
- "bmFsGAcgASgIEhUKDWNvbnRyb2xfaW5wdXQYCCADKAUSEgoKaW5hY2N1cmF0",
- "ZRgRIAEoCBo7CglJbnB1dEluZm8SFgoOcHJlY2VkaW5nX25vZGUYASABKAUS",
- "FgoOcHJlY2VkaW5nX3BvcnQYAiABKAUahgEKCk91dHB1dEluZm8SDAoEc2l6",
- "ZRgBIAEoAxIYChBhbGlhc19pbnB1dF9wb3J0GAIgASgDEisKBXNoYXBlGAMg",
- "ASgLMhwudGVuc29yZmxvdy5UZW5zb3JTaGFwZVByb3RvEiMKBWR0eXBlGAQg",
- "ASgOMhQudGVuc29yZmxvdy5EYXRhVHlwZUJvChhvcmcudGVuc29yZmxvdy5m",
- "cmFtZXdvcmtCD0Nvc3RHcmFwaFByb3Rvc1ABWj1naXRodWIuY29tL3RlbnNv",
- "cmZsb3cvdGVuc29yZmxvdy90ZW5zb3JmbG93L2dvL2NvcmUvZnJhbWV3b3Jr",
- "+AEBYgZwcm90bzM="));
+ "LnByb3RvIsoGCgxDb3N0R3JhcGhEZWYSKwoEbm9kZRgBIAMoCzIdLnRlbnNv",
+ "cmZsb3cuQ29zdEdyYXBoRGVmLk5vZGUSNQoEY29zdBgCIAMoCzInLnRlbnNv",
+ "cmZsb3cuQ29zdEdyYXBoRGVmLkFnZ3JlZ2F0ZWRDb3N0GqIFCgROb2RlEgwK",
+ "BG5hbWUYASABKAkSDgoGZGV2aWNlGAIgASgJEgoKAmlkGAMgASgFEjsKCmlu",
+ "cHV0X2luZm8YBCADKAsyJy50ZW5zb3JmbG93LkNvc3RHcmFwaERlZi5Ob2Rl",
+ "LklucHV0SW5mbxI9CgtvdXRwdXRfaW5mbxgFIAMoCzIoLnRlbnNvcmZsb3cu",
+ "Q29zdEdyYXBoRGVmLk5vZGUuT3V0cHV0SW5mbxIdChV0ZW1wb3JhcnlfbWVt",
+ "b3J5X3NpemUYBiABKAMSHgoWcGVyc2lzdGVudF9tZW1vcnlfc2l6ZRgMIAEo",
+ "AxIhChVob3N0X3RlbXBfbWVtb3J5X3NpemUYCiABKANCAhgBEiMKF2Rldmlj",
+ "ZV90ZW1wX21lbW9yeV9zaXplGAsgASgDQgIYARIpCh1kZXZpY2VfcGVyc2lz",
+ "dGVudF9tZW1vcnlfc2l6ZRgQIAEoA0ICGAESFAoMY29tcHV0ZV9jb3N0GAkg",
+ "ASgDEhQKDGNvbXB1dGVfdGltZRgOIAEoAxITCgttZW1vcnlfdGltZRgPIAEo",
+ "AxIQCghpc19maW5hbBgHIAEoCBIVCg1jb250cm9sX2lucHV0GAggAygFEhIK",
+ "CmluYWNjdXJhdGUYESABKAgaOwoJSW5wdXRJbmZvEhYKDnByZWNlZGluZ19u",
+ "b2RlGAEgASgFEhYKDnByZWNlZGluZ19wb3J0GAIgASgFGoYBCgpPdXRwdXRJ",
+ "bmZvEgwKBHNpemUYASABKAMSGAoQYWxpYXNfaW5wdXRfcG9ydBgCIAEoAxIr",
+ "CgVzaGFwZRgDIAEoCzIcLnRlbnNvcmZsb3cuVGVuc29yU2hhcGVQcm90bxIj",
+ "CgVkdHlwZRgEIAEoDjIULnRlbnNvcmZsb3cuRGF0YVR5cGUaMQoOQWdncmVn",
+ "YXRlZENvc3QSDAoEY29zdBgBIAEoAhIRCglkaW1lbnNpb24YAiABKAlCgwEK",
+ "GG9yZy50ZW5zb3JmbG93LmZyYW1ld29ya0IPQ29zdEdyYXBoUHJvdG9zUAFa",
+ "UWdpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3JmbG93L3RlbnNvcmZsb3cv",
+ "Z28vY29yZS9mcmFtZXdvcmsvY29zdF9ncmFwaF9nb19wcm90b/gBAWIGcHJv",
+ "dG8z"));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { global::Tensorflow.TensorShapeReflection.Descriptor, global::Tensorflow.TypesReflection.Descriptor, },
new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
- new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.CostGraphDef), global::Tensorflow.CostGraphDef.Parser, new[]{ "Node" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.CostGraphDef.Types.Node), global::Tensorflow.CostGraphDef.Types.Node.Parser, new[]{ "Name", "Device", "Id", "InputInfo", "OutputInfo", "TemporaryMemorySize", "PersistentMemorySize", "HostTempMemorySize", "DeviceTempMemorySize", "DevicePersistentMemorySize", "ComputeCost", "ComputeTime", "MemoryTime", "IsFinal", "ControlInput", "Inaccurate" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.CostGraphDef.Types.Node.Types.InputInfo), global::Tensorflow.CostGraphDef.Types.Node.Types.InputInfo.Parser, new[]{ "PrecedingNode", "PrecedingPort" }, null, null, null, null),
- new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.CostGraphDef.Types.Node.Types.OutputInfo), global::Tensorflow.CostGraphDef.Types.Node.Types.OutputInfo.Parser, new[]{ "Size", "AliasInputPort", "Shape", "Dtype" }, null, null, null, null)})})
+ new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.CostGraphDef), global::Tensorflow.CostGraphDef.Parser, new[]{ "Node", "Cost" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.CostGraphDef.Types.Node), global::Tensorflow.CostGraphDef.Types.Node.Parser, new[]{ "Name", "Device", "Id", "InputInfo", "OutputInfo", "TemporaryMemorySize", "PersistentMemorySize", "HostTempMemorySize", "DeviceTempMemorySize", "DevicePersistentMemorySize", "ComputeCost", "ComputeTime", "MemoryTime", "IsFinal", "ControlInput", "Inaccurate" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.CostGraphDef.Types.Node.Types.InputInfo), global::Tensorflow.CostGraphDef.Types.Node.Types.InputInfo.Parser, new[]{ "PrecedingNode", "PrecedingPort" }, null, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.CostGraphDef.Types.Node.Types.OutputInfo), global::Tensorflow.CostGraphDef.Types.Node.Types.OutputInfo.Parser, new[]{ "Size", "AliasInputPort", "Shape", "Dtype" }, null, null, null, null)}),
+ new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.CostGraphDef.Types.AggregatedCost), global::Tensorflow.CostGraphDef.Types.AggregatedCost.Parser, new[]{ "Cost", "Dimension" }, null, null, null, null)})
}));
}
#endregion
@@ -84,6 +88,7 @@ namespace Tensorflow {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public CostGraphDef(CostGraphDef other) : this() {
node_ = other.node_.Clone();
+ cost_ = other.cost_.Clone();
_unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
}
@@ -102,6 +107,16 @@ namespace Tensorflow {
get { return node_; }
}
+ /// Field number for the "cost" field.
+ public const int CostFieldNumber = 2;
+ private static readonly pb::FieldCodec _repeated_cost_codec
+ = pb::FieldCodec.ForMessage(18, global::Tensorflow.CostGraphDef.Types.AggregatedCost.Parser);
+ private readonly pbc::RepeatedField cost_ = new pbc::RepeatedField();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField Cost {
+ get { return cost_; }
+ }
+
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public override bool Equals(object other) {
return Equals(other as CostGraphDef);
@@ -116,6 +131,7 @@ namespace Tensorflow {
return true;
}
if(!node_.Equals(other.node_)) return false;
+ if(!cost_.Equals(other.cost_)) return false;
return Equals(_unknownFields, other._unknownFields);
}
@@ -123,6 +139,7 @@ namespace Tensorflow {
public override int GetHashCode() {
int hash = 1;
hash ^= node_.GetHashCode();
+ hash ^= cost_.GetHashCode();
if (_unknownFields != null) {
hash ^= _unknownFields.GetHashCode();
}
@@ -137,6 +154,7 @@ namespace Tensorflow {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public void WriteTo(pb::CodedOutputStream output) {
node_.WriteTo(output, _repeated_node_codec);
+ cost_.WriteTo(output, _repeated_cost_codec);
if (_unknownFields != null) {
_unknownFields.WriteTo(output);
}
@@ -146,6 +164,7 @@ namespace Tensorflow {
public int CalculateSize() {
int size = 0;
size += node_.CalculateSize(_repeated_node_codec);
+ size += cost_.CalculateSize(_repeated_cost_codec);
if (_unknownFields != null) {
size += _unknownFields.CalculateSize();
}
@@ -158,6 +177,7 @@ namespace Tensorflow {
return;
}
node_.Add(other.node_);
+ cost_.Add(other.cost_);
_unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
}
@@ -173,6 +193,10 @@ namespace Tensorflow {
node_.AddEntriesFrom(input, _repeated_node_codec);
break;
}
+ case 18: {
+ cost_.AddEntriesFrom(input, _repeated_cost_codec);
+ break;
+ }
}
}
}
@@ -1143,6 +1167,172 @@ namespace Tensorflow {
}
+ ///
+ /// Total cost of this graph, typically used for balancing decisions.
+ ///
+ public sealed partial class AggregatedCost : pb::IMessage {
+ private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new AggregatedCost());
+ 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::Tensorflow.CostGraphDef.Descriptor.NestedTypes[1]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public AggregatedCost() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public AggregatedCost(AggregatedCost other) : this() {
+ cost_ = other.cost_;
+ dimension_ = other.dimension_;
+ _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public AggregatedCost Clone() {
+ return new AggregatedCost(this);
+ }
+
+ /// Field number for the "cost" field.
+ public const int CostFieldNumber = 1;
+ private float cost_;
+ ///
+ /// Aggregated cost value.
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public float Cost {
+ get { return cost_; }
+ set {
+ cost_ = value;
+ }
+ }
+
+ /// Field number for the "dimension" field.
+ public const int DimensionFieldNumber = 2;
+ private string dimension_ = "";
+ ///
+ /// Aggregated cost dimension (e.g. 'memory', 'compute', 'network').
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public string Dimension {
+ get { return dimension_; }
+ set {
+ dimension_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override bool Equals(object other) {
+ return Equals(other as AggregatedCost);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public bool Equals(AggregatedCost other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Cost, other.Cost)) return false;
+ if (Dimension != other.Dimension) return false;
+ return Equals(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Cost != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Cost);
+ if (Dimension.Length != 0) hash ^= Dimension.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 (Cost != 0F) {
+ output.WriteRawTag(13);
+ output.WriteFloat(Cost);
+ }
+ if (Dimension.Length != 0) {
+ output.WriteRawTag(18);
+ output.WriteString(Dimension);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(output);
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int CalculateSize() {
+ int size = 0;
+ if (Cost != 0F) {
+ size += 1 + 4;
+ }
+ if (Dimension.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(Dimension);
+ }
+ if (_unknownFields != null) {
+ size += _unknownFields.CalculateSize();
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void MergeFrom(AggregatedCost other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Cost != 0F) {
+ Cost = other.Cost;
+ }
+ if (other.Dimension.Length != 0) {
+ Dimension = other.Dimension;
+ }
+ _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 13: {
+ Cost = input.ReadFloat();
+ break;
+ }
+ case 18: {
+ Dimension = input.ReadString();
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
}
#endregion
diff --git a/src/TensorFlowNET.Core/Protobuf/CppShapeInference.cs b/src/TensorFlowNET.Core/Protobuf/CppShapeInference.cs
index c6574895..a48a8d5e 100644
--- a/src/TensorFlowNET.Core/Protobuf/CppShapeInference.cs
+++ b/src/TensorFlowNET.Core/Protobuf/CppShapeInference.cs
@@ -41,10 +41,10 @@ namespace Tensorflow {
"cHJvdG8z"));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { global::Tensorflow.TypesReflection.Descriptor, global::Tensorflow.TensorShapeReflection.Descriptor, },
- new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
- new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.CppShapeInferenceResult), global::Tensorflow.CppShapeInferenceResult.Parser, new[]{ "Shape", "HandleData" }, 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),
- new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.CppShapeInferenceResult.Types.HandleData), global::Tensorflow.CppShapeInferenceResult.Types.HandleData.Parser, new[]{ "IsSet", "ShapeAndType" }, null, null, null)}),
- new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.CppShapeInferenceInputsNeeded), global::Tensorflow.CppShapeInferenceInputsNeeded.Parser, new[]{ "InputTensorsNeeded", "InputTensorsAsShapesNeeded" }, null, null, null)
+ 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.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)
}));
}
#endregion
@@ -179,13 +179,13 @@ namespace Tensorflow {
}
if (other.shape_ != null) {
if (shape_ == null) {
- shape_ = new global::Tensorflow.TensorShapeProto();
+ Shape = new global::Tensorflow.TensorShapeProto();
}
Shape.MergeFrom(other.Shape);
}
if (other.handleData_ != null) {
if (handleData_ == null) {
- handleData_ = new global::Tensorflow.CppShapeInferenceResult.Types.HandleData();
+ HandleData = new global::Tensorflow.CppShapeInferenceResult.Types.HandleData();
}
HandleData.MergeFrom(other.HandleData);
}
@@ -202,16 +202,16 @@ namespace Tensorflow {
break;
case 10: {
if (shape_ == null) {
- shape_ = new global::Tensorflow.TensorShapeProto();
+ Shape = new global::Tensorflow.TensorShapeProto();
}
- input.ReadMessage(shape_);
+ input.ReadMessage(Shape);
break;
}
case 34: {
if (handleData_ == null) {
- handleData_ = new global::Tensorflow.CppShapeInferenceResult.Types.HandleData();
+ HandleData = new global::Tensorflow.CppShapeInferenceResult.Types.HandleData();
}
- input.ReadMessage(handleData_);
+ input.ReadMessage(HandleData);
break;
}
}
@@ -270,7 +270,7 @@ namespace Tensorflow {
/// Field number for the "dtype" field.
public const int DtypeFieldNumber = 2;
- private global::Tensorflow.DataType dtype_ = 0;
+ private global::Tensorflow.DataType dtype_ = global::Tensorflow.DataType.DtInvalid;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public global::Tensorflow.DataType Dtype {
get { return dtype_; }
@@ -301,7 +301,7 @@ namespace Tensorflow {
public override int GetHashCode() {
int hash = 1;
if (shape_ != null) hash ^= Shape.GetHashCode();
- if (Dtype != 0) hash ^= Dtype.GetHashCode();
+ if (Dtype != global::Tensorflow.DataType.DtInvalid) hash ^= Dtype.GetHashCode();
if (_unknownFields != null) {
hash ^= _unknownFields.GetHashCode();
}
@@ -319,7 +319,7 @@ namespace Tensorflow {
output.WriteRawTag(10);
output.WriteMessage(Shape);
}
- if (Dtype != 0) {
+ if (Dtype != global::Tensorflow.DataType.DtInvalid) {
output.WriteRawTag(16);
output.WriteEnum((int) Dtype);
}
@@ -334,7 +334,7 @@ namespace Tensorflow {
if (shape_ != null) {
size += 1 + pb::CodedOutputStream.ComputeMessageSize(Shape);
}
- if (Dtype != 0) {
+ if (Dtype != global::Tensorflow.DataType.DtInvalid) {
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Dtype);
}
if (_unknownFields != null) {
@@ -350,11 +350,11 @@ namespace Tensorflow {
}
if (other.shape_ != null) {
if (shape_ == null) {
- shape_ = new global::Tensorflow.TensorShapeProto();
+ Shape = new global::Tensorflow.TensorShapeProto();
}
Shape.MergeFrom(other.Shape);
}
- if (other.Dtype != 0) {
+ if (other.Dtype != global::Tensorflow.DataType.DtInvalid) {
Dtype = other.Dtype;
}
_unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
@@ -370,13 +370,13 @@ namespace Tensorflow {
break;
case 10: {
if (shape_ == null) {
- shape_ = new global::Tensorflow.TensorShapeProto();
+ Shape = new global::Tensorflow.TensorShapeProto();
}
- input.ReadMessage(shape_);
+ input.ReadMessage(Shape);
break;
}
case 16: {
- dtype_ = (global::Tensorflow.DataType) input.ReadEnum();
+ Dtype = (global::Tensorflow.DataType) input.ReadEnum();
break;
}
}
diff --git a/src/TensorFlowNET.Core/Protobuf/Debug.cs b/src/TensorFlowNET.Core/Protobuf/Debug.cs
index 885fcfab..cdd11ef5 100644
--- a/src/TensorFlowNET.Core/Protobuf/Debug.cs
+++ b/src/TensorFlowNET.Core/Protobuf/Debug.cs
@@ -35,9 +35,10 @@ namespace Tensorflow {
"ASgJEhEKCWZpbGVfcGF0aBgCIAEoCRIVCg1sYXN0X21vZGlmaWVkGAMgASgD",
"Eg0KBWJ5dGVzGAQgASgDEg0KBWxpbmVzGAUgAygJIksKE0RlYnVnZ2VkU291",
"cmNlRmlsZXMSNAoMc291cmNlX2ZpbGVzGAEgAygLMh4udGVuc29yZmxvdy5E",
- "ZWJ1Z2dlZFNvdXJjZUZpbGVCagoYb3JnLnRlbnNvcmZsb3cuZnJhbWV3b3Jr",
- "QgtEZWJ1Z1Byb3Rvc1ABWjxnaXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29y",
- "Zmxvdy90ZW5zb3JmbG93L2dvL2NvcmUvcHJvdG9idWb4AQFiBnByb3RvMw=="));
+ "ZWJ1Z2dlZFNvdXJjZUZpbGVCdgoYb3JnLnRlbnNvcmZsb3cuZnJhbWV3b3Jr",
+ "QgtEZWJ1Z1Byb3Rvc1ABWkhnaXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29y",
+ "Zmxvdy90ZW5zb3JmbG93L2dvL2NvcmUvY29yZV9wcm90b3NfZ29fcHJvdG/4",
+ "AQFiBnByb3RvMw=="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { },
new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
diff --git a/src/TensorFlowNET.Core/Protobuf/DeviceAttributes.cs b/src/TensorFlowNET.Core/Protobuf/DeviceAttributes.cs
index 31e2ac34..ec0d7c84 100644
--- a/src/TensorFlowNET.Core/Protobuf/DeviceAttributes.cs
+++ b/src/TensorFlowNET.Core/Protobuf/DeviceAttributes.cs
@@ -34,10 +34,10 @@ namespace Tensorflow {
"IAEoCRITCgtkZXZpY2VfdHlwZRgCIAEoCRIUCgxtZW1vcnlfbGltaXQYBCAB",
"KAMSLAoIbG9jYWxpdHkYBSABKAsyGi50ZW5zb3JmbG93LkRldmljZUxvY2Fs",
"aXR5EhMKC2luY2FybmF0aW9uGAYgASgGEhwKFHBoeXNpY2FsX2RldmljZV9k",
- "ZXNjGAcgASgJQnYKGG9yZy50ZW5zb3JmbG93LmZyYW1ld29ya0IWRGV2aWNl",
- "QXR0cmlidXRlc1Byb3Rvc1ABWj1naXRodWIuY29tL3RlbnNvcmZsb3cvdGVu",
- "c29yZmxvdy90ZW5zb3JmbG93L2dvL2NvcmUvZnJhbWV3b3Jr+AEBYgZwcm90",
- "bzM="));
+ "ZXNjGAcgASgJQpEBChhvcmcudGVuc29yZmxvdy5mcmFtZXdvcmtCFkRldmlj",
+ "ZUF0dHJpYnV0ZXNQcm90b3NQAVpYZ2l0aHViLmNvbS90ZW5zb3JmbG93L3Rl",
+ "bnNvcmZsb3cvdGVuc29yZmxvdy9nby9jb3JlL2ZyYW1ld29yay9kZXZpY2Vf",
+ "YXR0cmlidXRlc19nb19wcm90b/gBAWIGcHJvdG8z"));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { },
new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
diff --git a/src/TensorFlowNET.Core/Protobuf/Function.cs b/src/TensorFlowNET.Core/Protobuf/Function.cs
index 7ca65b65..78665f0d 100644
--- a/src/TensorFlowNET.Core/Protobuf/Function.cs
+++ b/src/TensorFlowNET.Core/Protobuf/Function.cs
@@ -30,32 +30,36 @@ namespace Tensorflow {
"cHJvdG8aJnRlbnNvcmZsb3cvY29yZS9mcmFtZXdvcmsvb3BfZGVmLnByb3Rv",
"ImoKEkZ1bmN0aW9uRGVmTGlicmFyeRIpCghmdW5jdGlvbhgBIAMoCzIXLnRl",
"bnNvcmZsb3cuRnVuY3Rpb25EZWYSKQoIZ3JhZGllbnQYAiADKAsyFy50ZW5z",
- "b3JmbG93LkdyYWRpZW50RGVmIrYFCgtGdW5jdGlvbkRlZhIkCglzaWduYXR1",
+ "b3JmbG93LkdyYWRpZW50RGVmIsQGCgtGdW5jdGlvbkRlZhIkCglzaWduYXR1",
"cmUYASABKAsyES50ZW5zb3JmbG93Lk9wRGVmEi8KBGF0dHIYBSADKAsyIS50",
"ZW5zb3JmbG93LkZ1bmN0aW9uRGVmLkF0dHJFbnRyeRI2CghhcmdfYXR0chgH",
- "IAMoCzIkLnRlbnNvcmZsb3cuRnVuY3Rpb25EZWYuQXJnQXR0ckVudHJ5EiUK",
- "CG5vZGVfZGVmGAMgAygLMhMudGVuc29yZmxvdy5Ob2RlRGVmEi0KA3JldBgE",
- "IAMoCzIgLnRlbnNvcmZsb3cuRnVuY3Rpb25EZWYuUmV0RW50cnkSPAoLY29u",
- "dHJvbF9yZXQYBiADKAsyJy50ZW5zb3JmbG93LkZ1bmN0aW9uRGVmLkNvbnRy",
- "b2xSZXRFbnRyeRpCCglBdHRyRW50cnkSCwoDa2V5GAEgASgJEiQKBXZhbHVl",
- "GAIgASgLMhUudGVuc29yZmxvdy5BdHRyVmFsdWU6AjgBGogBCghBcmdBdHRy",
- "cxI4CgRhdHRyGAEgAygLMioudGVuc29yZmxvdy5GdW5jdGlvbkRlZi5BcmdB",
- "dHRycy5BdHRyRW50cnkaQgoJQXR0ckVudHJ5EgsKA2tleRgBIAEoCRIkCgV2",
- "YWx1ZRgCIAEoCzIVLnRlbnNvcmZsb3cuQXR0clZhbHVlOgI4ARpQCgxBcmdB",
- "dHRyRW50cnkSCwoDa2V5GAEgASgNEi8KBXZhbHVlGAIgASgLMiAudGVuc29y",
- "Zmxvdy5GdW5jdGlvbkRlZi5BcmdBdHRyczoCOAEaKgoIUmV0RW50cnkSCwoD",
- "a2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARoxCg9Db250cm9sUmV0RW50",
- "cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUoECAIQAyI7CgtH",
- "cmFkaWVudERlZhIVCg1mdW5jdGlvbl9uYW1lGAEgASgJEhUKDWdyYWRpZW50",
- "X2Z1bmMYAiABKAlCbgoYb3JnLnRlbnNvcmZsb3cuZnJhbWV3b3JrQg5GdW5j",
- "dGlvblByb3Rvc1ABWj1naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yZmxv",
- "dy90ZW5zb3JmbG93L2dvL2NvcmUvZnJhbWV3b3Jr+AEBYgZwcm90bzM="));
+ "IAMoCzIkLnRlbnNvcmZsb3cuRnVuY3Rpb25EZWYuQXJnQXR0ckVudHJ5ElAK",
+ "FnJlc291cmNlX2FyZ191bmlxdWVfaWQYCCADKAsyMC50ZW5zb3JmbG93LkZ1",
+ "bmN0aW9uRGVmLlJlc291cmNlQXJnVW5pcXVlSWRFbnRyeRIlCghub2RlX2Rl",
+ "ZhgDIAMoCzITLnRlbnNvcmZsb3cuTm9kZURlZhItCgNyZXQYBCADKAsyIC50",
+ "ZW5zb3JmbG93LkZ1bmN0aW9uRGVmLlJldEVudHJ5EjwKC2NvbnRyb2xfcmV0",
+ "GAYgAygLMicudGVuc29yZmxvdy5GdW5jdGlvbkRlZi5Db250cm9sUmV0RW50",
+ "cnkaQgoJQXR0ckVudHJ5EgsKA2tleRgBIAEoCRIkCgV2YWx1ZRgCIAEoCzIV",
+ "LnRlbnNvcmZsb3cuQXR0clZhbHVlOgI4ARqIAQoIQXJnQXR0cnMSOAoEYXR0",
+ "chgBIAMoCzIqLnRlbnNvcmZsb3cuRnVuY3Rpb25EZWYuQXJnQXR0cnMuQXR0",
+ "ckVudHJ5GkIKCUF0dHJFbnRyeRILCgNrZXkYASABKAkSJAoFdmFsdWUYAiAB",
+ "KAsyFS50ZW5zb3JmbG93LkF0dHJWYWx1ZToCOAEaUAoMQXJnQXR0ckVudHJ5",
+ "EgsKA2tleRgBIAEoDRIvCgV2YWx1ZRgCIAEoCzIgLnRlbnNvcmZsb3cuRnVu",
+ "Y3Rpb25EZWYuQXJnQXR0cnM6AjgBGjoKGFJlc291cmNlQXJnVW5pcXVlSWRF",
+ "bnRyeRILCgNrZXkYASABKA0SDQoFdmFsdWUYAiABKA06AjgBGioKCFJldEVu",
+ "dHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaMQoPQ29udHJv",
+ "bFJldEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFKBAgC",
+ "EAMiOwoLR3JhZGllbnREZWYSFQoNZnVuY3Rpb25fbmFtZRgBIAEoCRIVCg1n",
+ "cmFkaWVudF9mdW5jGAIgASgJQoABChhvcmcudGVuc29yZmxvdy5mcmFtZXdv",
+ "cmtCDkZ1bmN0aW9uUHJvdG9zUAFaT2dpdGh1Yi5jb20vdGVuc29yZmxvdy90",
+ "ZW5zb3JmbG93L3RlbnNvcmZsb3cvZ28vY29yZS9mcmFtZXdvcmsvZnVuY3Rp",
+ "b25fZ29fcHJvdG/4AQFiBnByb3RvMw=="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { global::Tensorflow.AttrValueReflection.Descriptor, global::Tensorflow.NodeDefReflection.Descriptor, global::Tensorflow.OpDefReflection.Descriptor, },
new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.FunctionDefLibrary), global::Tensorflow.FunctionDefLibrary.Parser, new[]{ "Function", "Gradient" }, null, null, null, null),
- new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.FunctionDef), global::Tensorflow.FunctionDef.Parser, new[]{ "Signature", "Attr", "ArgAttr", "NodeDef", "Ret", "ControlRet" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.FunctionDef.Types.ArgAttrs), global::Tensorflow.FunctionDef.Types.ArgAttrs.Parser, new[]{ "Attr" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
- null, null, null, }),
+ new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.FunctionDef), global::Tensorflow.FunctionDef.Parser, new[]{ "Signature", "Attr", "ArgAttr", "ResourceArgUniqueId", "NodeDef", "Ret", "ControlRet" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.FunctionDef.Types.ArgAttrs), global::Tensorflow.FunctionDef.Types.ArgAttrs.Parser, new[]{ "Attr" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
+ null, null, null, null, }),
new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.GradientDef), global::Tensorflow.GradientDef.Parser, new[]{ "FunctionName", "GradientFunc" }, null, null, null, null)
}));
}
@@ -243,6 +247,7 @@ namespace Tensorflow {
signature_ = other.signature_ != null ? other.signature_.Clone() : null;
attr_ = other.attr_.Clone();
argAttr_ = other.argAttr_.Clone();
+ resourceArgUniqueId_ = other.resourceArgUniqueId_.Clone();
nodeDef_ = other.nodeDef_.Clone();
ret_ = other.ret_.Clone();
controlRet_ = other.controlRet_.Clone();
@@ -292,6 +297,27 @@ namespace Tensorflow {
get { return argAttr_; }
}
+ /// Field number for the "resource_arg_unique_id" field.
+ public const int ResourceArgUniqueIdFieldNumber = 8;
+ private static readonly pbc::MapField.Codec _map_resourceArgUniqueId_codec
+ = new pbc::MapField.Codec(pb::FieldCodec.ForUInt32(8, 0), pb::FieldCodec.ForUInt32(16, 0), 66);
+ private readonly pbc::MapField resourceArgUniqueId_ = new pbc::MapField();
+ ///
+ /// Unique IDs for each resource argument, used to track aliasing resources. If
+ /// Argument A and Argument B alias each other, then
+ /// resource_arg_unique_ids[A.index] == resource_arg_unique_ids[B.index].
+ ///
+ /// If this field is empty, none of the arguments could alias; otherwise, every
+ /// resource argument should have an entry in this field.
+ ///
+ /// When instantiated, the unique IDs will be attached to the _Arg nodes'
+ /// "_resource_arg_unique_id" attribute.
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::MapField ResourceArgUniqueId {
+ get { return resourceArgUniqueId_; }
+ }
+
/// Field number for the "node_def" field.
public const int NodeDefFieldNumber = 3;
private static readonly pb::FieldCodec _repeated_nodeDef_codec
@@ -351,6 +377,7 @@ namespace Tensorflow {
if (!object.Equals(Signature, other.Signature)) return false;
if (!Attr.Equals(other.Attr)) return false;
if (!ArgAttr.Equals(other.ArgAttr)) return false;
+ if (!ResourceArgUniqueId.Equals(other.ResourceArgUniqueId)) return false;
if(!nodeDef_.Equals(other.nodeDef_)) return false;
if (!Ret.Equals(other.Ret)) return false;
if (!ControlRet.Equals(other.ControlRet)) return false;
@@ -363,6 +390,7 @@ namespace Tensorflow {
if (signature_ != null) hash ^= Signature.GetHashCode();
hash ^= Attr.GetHashCode();
hash ^= ArgAttr.GetHashCode();
+ hash ^= ResourceArgUniqueId.GetHashCode();
hash ^= nodeDef_.GetHashCode();
hash ^= Ret.GetHashCode();
hash ^= ControlRet.GetHashCode();
@@ -388,6 +416,7 @@ namespace Tensorflow {
attr_.WriteTo(output, _map_attr_codec);
controlRet_.WriteTo(output, _map_controlRet_codec);
argAttr_.WriteTo(output, _map_argAttr_codec);
+ resourceArgUniqueId_.WriteTo(output, _map_resourceArgUniqueId_codec);
if (_unknownFields != null) {
_unknownFields.WriteTo(output);
}
@@ -401,6 +430,7 @@ namespace Tensorflow {
}
size += attr_.CalculateSize(_map_attr_codec);
size += argAttr_.CalculateSize(_map_argAttr_codec);
+ size += resourceArgUniqueId_.CalculateSize(_map_resourceArgUniqueId_codec);
size += nodeDef_.CalculateSize(_repeated_nodeDef_codec);
size += ret_.CalculateSize(_map_ret_codec);
size += controlRet_.CalculateSize(_map_controlRet_codec);
@@ -423,6 +453,7 @@ namespace Tensorflow {
}
attr_.Add(other.attr_);
argAttr_.Add(other.argAttr_);
+ resourceArgUniqueId_.Add(other.resourceArgUniqueId_);
nodeDef_.Add(other.nodeDef_);
ret_.Add(other.ret_);
controlRet_.Add(other.controlRet_);
@@ -464,6 +495,10 @@ namespace Tensorflow {
argAttr_.AddEntriesFrom(input, _map_argAttr_codec);
break;
}
+ case 66: {
+ resourceArgUniqueId_.AddEntriesFrom(input, _map_resourceArgUniqueId_codec);
+ break;
+ }
}
}
}
diff --git a/src/TensorFlowNET.Core/Protobuf/Gen.bat b/src/TensorFlowNET.Core/Protobuf/Gen.bat
index ad2acc36..745235af 100644
--- a/src/TensorFlowNET.Core/Protobuf/Gen.bat
+++ b/src/TensorFlowNET.Core/Protobuf/Gen.bat
@@ -1,6 +1,6 @@
@ECHO OFF
-set SRC_DIR=D:/SciSharp/tensorflow
+set SRC_DIR=D:/SciSharp/tensorflow-google
set DST_DIR=D:/SciSharp/TensorFlow.NET/src/TensorFlowNET.Core/Protobuf
protoc -I=%SRC_DIR% --csharp_out=%DST_DIR% tensorflow/core/framework/resource_handle.proto
@@ -39,5 +39,6 @@ protoc -I=%SRC_DIR% --csharp_out=%DST_DIR% tensorflow/core/protobuf/struct.proto
protoc -I=%SRC_DIR% --csharp_out=%DST_DIR% tensorflow/core/protobuf/verifier_config.proto
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
PAUSE
\ No newline at end of file
diff --git a/src/TensorFlowNET.Core/Protobuf/Graph.cs b/src/TensorFlowNET.Core/Protobuf/Graph.cs
index 2d5613c8..fb66636b 100644
--- a/src/TensorFlowNET.Core/Protobuf/Graph.cs
+++ b/src/TensorFlowNET.Core/Protobuf/Graph.cs
@@ -25,18 +25,18 @@ namespace Tensorflow {
byte[] descriptorData = global::System.Convert.FromBase64String(
string.Concat(
"CiV0ZW5zb3JmbG93L2NvcmUvZnJhbWV3b3JrL2dyYXBoLnByb3RvEgp0ZW5z",
- "b3JmbG93Gih0ZW5zb3JmbG93L2NvcmUvZnJhbWV3b3JrL25vZGVfZGVmLnBy",
- "b3RvGih0ZW5zb3JmbG93L2NvcmUvZnJhbWV3b3JrL2Z1bmN0aW9uLnByb3Rv",
+ "b3JmbG93Gih0ZW5zb3JmbG93L2NvcmUvZnJhbWV3b3JrL2Z1bmN0aW9uLnBy",
+ "b3RvGih0ZW5zb3JmbG93L2NvcmUvZnJhbWV3b3JrL25vZGVfZGVmLnByb3Rv",
"Gih0ZW5zb3JmbG93L2NvcmUvZnJhbWV3b3JrL3ZlcnNpb25zLnByb3RvIp0B",
"CghHcmFwaERlZhIhCgRub2RlGAEgAygLMhMudGVuc29yZmxvdy5Ob2RlRGVm",
"EigKCHZlcnNpb25zGAQgASgLMhYudGVuc29yZmxvdy5WZXJzaW9uRGVmEhMK",
"B3ZlcnNpb24YAyABKAVCAhgBEi8KB2xpYnJhcnkYAiABKAsyHi50ZW5zb3Jm",
- "bG93LkZ1bmN0aW9uRGVmTGlicmFyeUJrChhvcmcudGVuc29yZmxvdy5mcmFt",
- "ZXdvcmtCC0dyYXBoUHJvdG9zUAFaPWdpdGh1Yi5jb20vdGVuc29yZmxvdy90",
- "ZW5zb3JmbG93L3RlbnNvcmZsb3cvZ28vY29yZS9mcmFtZXdvcmv4AQFiBnBy",
- "b3RvMw=="));
+ "bG93LkZ1bmN0aW9uRGVmTGlicmFyeUJ6ChhvcmcudGVuc29yZmxvdy5mcmFt",
+ "ZXdvcmtCC0dyYXBoUHJvdG9zUAFaTGdpdGh1Yi5jb20vdGVuc29yZmxvdy90",
+ "ZW5zb3JmbG93L3RlbnNvcmZsb3cvZ28vY29yZS9mcmFtZXdvcmsvZ3JhcGhf",
+ "Z29fcHJvdG/4AQFiBnByb3RvMw=="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
- new pbr::FileDescriptor[] { global::Tensorflow.NodeDefReflection.Descriptor, global::Tensorflow.FunctionReflection.Descriptor, global::Tensorflow.VersionsReflection.Descriptor, },
+ new pbr::FileDescriptor[] { global::Tensorflow.FunctionReflection.Descriptor, global::Tensorflow.NodeDefReflection.Descriptor, global::Tensorflow.VersionsReflection.Descriptor, },
new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.GraphDef), global::Tensorflow.GraphDef.Parser, new[]{ "Node", "Versions", "Version", "Library" }, null, null, null, null)
}));
diff --git a/src/TensorFlowNET.Core/Protobuf/GraphTransferInfo.cs b/src/TensorFlowNET.Core/Protobuf/GraphTransferInfo.cs
index da76380e..7094e625 100644
--- a/src/TensorFlowNET.Core/Protobuf/GraphTransferInfo.cs
+++ b/src/TensorFlowNET.Core/Protobuf/GraphTransferInfo.cs
@@ -54,10 +54,10 @@ namespace Tensorflow {
"ZW5zb3JmbG93LkdyYXBoVHJhbnNmZXJHcmFwaE91dHB1dE5vZGVJbmZvEj4K",
"C2Rlc3RpbmF0aW9uGAcgASgOMikudGVuc29yZmxvdy5HcmFwaFRyYW5zZmVy",
"SW5mby5EZXN0aW5hdGlvbiIjCgtEZXN0aW5hdGlvbhIHCgNOT1AQABILCgdI",
- "RVhBR09OEAFCdgoYb3JnLnRlbnNvcmZsb3cuZnJhbWV3b3JrQhZHcmFwaFRy",
- "YW5zZmVySW5mb1Byb3RvUAFaPWdpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5z",
- "b3JmbG93L3RlbnNvcmZsb3cvZ28vY29yZS9mcmFtZXdvcmv4AQFiBnByb3Rv",
- "Mw=="));
+ "RVhBR09OEAFCkwEKGG9yZy50ZW5zb3JmbG93LmZyYW1ld29ya0IWR3JhcGhU",
+ "cmFuc2ZlckluZm9Qcm90b1ABWlpnaXRodWIuY29tL3RlbnNvcmZsb3cvdGVu",
+ "c29yZmxvdy90ZW5zb3JmbG93L2dvL2NvcmUvZnJhbWV3b3JrL2dyYXBoX3Ry",
+ "YW5zZmVyX2luZm9fZ29fcHJvdG/4AQFiBnByb3RvMw=="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { global::Tensorflow.TypesReflection.Descriptor, },
new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
diff --git a/src/TensorFlowNET.Core/Protobuf/KernelDef.cs b/src/TensorFlowNET.Core/Protobuf/KernelDef.cs
index 456f76bf..b5ec6882 100644
--- a/src/TensorFlowNET.Core/Protobuf/KernelDef.cs
+++ b/src/TensorFlowNET.Core/Protobuf/KernelDef.cs
@@ -32,10 +32,10 @@ namespace Tensorflow {
"BCADKAkSDQoFbGFiZWwYBSABKAkSEAoIcHJpb3JpdHkYBiABKAUaTQoOQXR0",
"ckNvbnN0cmFpbnQSDAoEbmFtZRgBIAEoCRItCg5hbGxvd2VkX3ZhbHVlcxgC",
"IAEoCzIVLnRlbnNvcmZsb3cuQXR0clZhbHVlIjMKCktlcm5lbExpc3QSJQoG",
- "a2VybmVsGAEgAygLMhUudGVuc29yZmxvdy5LZXJuZWxEZWZCbwoYb3JnLnRl",
- "bnNvcmZsb3cuZnJhbWV3b3JrQg9LZXJuZWxEZWZQcm90b3NQAVo9Z2l0aHVi",
- "LmNvbS90ZW5zb3JmbG93L3RlbnNvcmZsb3cvdGVuc29yZmxvdy9nby9jb3Jl",
- "L2ZyYW1ld29ya/gBAWIGcHJvdG8z"));
+ "a2VybmVsGAEgAygLMhUudGVuc29yZmxvdy5LZXJuZWxEZWZCgwEKGG9yZy50",
+ "ZW5zb3JmbG93LmZyYW1ld29ya0IPS2VybmVsRGVmUHJvdG9zUAFaUWdpdGh1",
+ "Yi5jb20vdGVuc29yZmxvdy90ZW5zb3JmbG93L3RlbnNvcmZsb3cvZ28vY29y",
+ "ZS9mcmFtZXdvcmsva2VybmVsX2RlZl9nb19wcm90b/gBAWIGcHJvdG8z"));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { global::Tensorflow.AttrValueReflection.Descriptor, },
new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
diff --git a/src/TensorFlowNET.Core/Protobuf/LogMemory.cs b/src/TensorFlowNET.Core/Protobuf/LogMemory.cs
index 30137bed..eb68b53a 100644
--- a/src/TensorFlowNET.Core/Protobuf/LogMemory.cs
+++ b/src/TensorFlowNET.Core/Protobuf/LogMemory.cs
@@ -40,10 +40,10 @@ namespace Tensorflow {
"aWQYBSABKAMSFgoOYWxsb2NhdG9yX25hbWUYBiABKAkifwoYTWVtb3J5TG9n",
"UmF3RGVhbGxvY2F0aW9uEg8KB3N0ZXBfaWQYASABKAMSEQoJb3BlcmF0aW9u",
"GAIgASgJEhUKDWFsbG9jYXRpb25faWQYAyABKAMSFgoOYWxsb2NhdG9yX25h",
- "bWUYBCABKAkSEAoIZGVmZXJyZWQYBSABKAhCbwoYb3JnLnRlbnNvcmZsb3cu",
- "ZnJhbWV3b3JrQg9Mb2dNZW1vcnlQcm90b3NQAVo9Z2l0aHViLmNvbS90ZW5z",
- "b3JmbG93L3RlbnNvcmZsb3cvdGVuc29yZmxvdy9nby9jb3JlL2ZyYW1ld29y",
- "a/gBAWIGcHJvdG8z"));
+ "bWUYBCABKAkSEAoIZGVmZXJyZWQYBSABKAhCgwEKGG9yZy50ZW5zb3JmbG93",
+ "LmZyYW1ld29ya0IPTG9nTWVtb3J5UHJvdG9zUAFaUWdpdGh1Yi5jb20vdGVu",
+ "c29yZmxvdy90ZW5zb3JmbG93L3RlbnNvcmZsb3cvZ28vY29yZS9mcmFtZXdv",
+ "cmsvbG9nX21lbW9yeV9nb19wcm90b/gBAWIGcHJvdG8z"));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { global::Tensorflow.TensorDescriptionReflection.Descriptor, },
new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
diff --git a/src/TensorFlowNET.Core/Protobuf/MetaGraph.cs b/src/TensorFlowNET.Core/Protobuf/MetaGraph.cs
index b5403d2e..6da24408 100644
--- a/src/TensorFlowNET.Core/Protobuf/MetaGraph.cs
+++ b/src/TensorFlowNET.Core/Protobuf/MetaGraph.cs
@@ -32,7 +32,7 @@ namespace Tensorflow {
"ZnJhbWV3b3JrL3R5cGVzLnByb3RvGjF0ZW5zb3JmbG93L2NvcmUvcHJvdG9i",
"dWYvc2F2ZWRfb2JqZWN0X2dyYXBoLnByb3RvGiR0ZW5zb3JmbG93L2NvcmUv",
"cHJvdG9idWYvc2F2ZXIucHJvdG8aJXRlbnNvcmZsb3cvY29yZS9wcm90b2J1",
- "Zi9zdHJ1Y3QucHJvdG8imwYKDE1ldGFHcmFwaERlZhI7Cg1tZXRhX2luZm9f",
+ "Zi9zdHJ1Y3QucHJvdG8iqAcKDE1ldGFHcmFwaERlZhI7Cg1tZXRhX2luZm9f",
"ZGVmGAEgASgLMiQudGVuc29yZmxvdy5NZXRhR3JhcGhEZWYuTWV0YUluZm9E",
"ZWYSJwoJZ3JhcGhfZGVmGAIgASgLMhQudGVuc29yZmxvdy5HcmFwaERlZhIn",
"CglzYXZlcl9kZWYYAyABKAsyFC50ZW5zb3JmbG93LlNhdmVyRGVmEkMKDmNv",
@@ -41,52 +41,55 @@ namespace Tensorflow {
"ZW5zb3JmbG93Lk1ldGFHcmFwaERlZi5TaWduYXR1cmVEZWZFbnRyeRIwCg5h",
"c3NldF9maWxlX2RlZhgGIAMoCzIYLnRlbnNvcmZsb3cuQXNzZXRGaWxlRGVm",
"EjYKEG9iamVjdF9ncmFwaF9kZWYYByABKAsyHC50ZW5zb3JmbG93LlNhdmVk",
- "T2JqZWN0R3JhcGga6QEKC01ldGFJbmZvRGVmEhoKEm1ldGFfZ3JhcGhfdmVy",
+ "T2JqZWN0R3JhcGga9gIKC01ldGFJbmZvRGVmEhoKEm1ldGFfZ3JhcGhfdmVy",
"c2lvbhgBIAEoCRIsChBzdHJpcHBlZF9vcF9saXN0GAIgASgLMhIudGVuc29y",
"Zmxvdy5PcExpc3QSJgoIYW55X2luZm8YAyABKAsyFC5nb29nbGUucHJvdG9i",
"dWYuQW55EgwKBHRhZ3MYBCADKAkSGgoSdGVuc29yZmxvd192ZXJzaW9uGAUg",
"ASgJEh4KFnRlbnNvcmZsb3dfZ2l0X3ZlcnNpb24YBiABKAkSHgoWc3RyaXBw",
- "ZWRfZGVmYXVsdF9hdHRycxgHIAEoCBpPChJDb2xsZWN0aW9uRGVmRW50cnkS",
- "CwoDa2V5GAEgASgJEigKBXZhbHVlGAIgASgLMhkudGVuc29yZmxvdy5Db2xs",
- "ZWN0aW9uRGVmOgI4ARpNChFTaWduYXR1cmVEZWZFbnRyeRILCgNrZXkYASAB",
- "KAkSJwoFdmFsdWUYAiABKAsyGC50ZW5zb3JmbG93LlNpZ25hdHVyZURlZjoC",
- "OAEi3wMKDUNvbGxlY3Rpb25EZWYSNwoJbm9kZV9saXN0GAEgASgLMiIudGVu",
- "c29yZmxvdy5Db2xsZWN0aW9uRGVmLk5vZGVMaXN0SAASOQoKYnl0ZXNfbGlz",
- "dBgCIAEoCzIjLnRlbnNvcmZsb3cuQ29sbGVjdGlvbkRlZi5CeXRlc0xpc3RI",
- "ABI5CgppbnQ2NF9saXN0GAMgASgLMiMudGVuc29yZmxvdy5Db2xsZWN0aW9u",
- "RGVmLkludDY0TGlzdEgAEjkKCmZsb2F0X2xpc3QYBCABKAsyIy50ZW5zb3Jm",
- "bG93LkNvbGxlY3Rpb25EZWYuRmxvYXRMaXN0SAASNQoIYW55X2xpc3QYBSAB",
- "KAsyIS50ZW5zb3JmbG93LkNvbGxlY3Rpb25EZWYuQW55TGlzdEgAGhkKCE5v",
- "ZGVMaXN0Eg0KBXZhbHVlGAEgAygJGhoKCUJ5dGVzTGlzdBINCgV2YWx1ZRgB",
- "IAMoDBoeCglJbnQ2NExpc3QSEQoFdmFsdWUYASADKANCAhABGh4KCUZsb2F0",
- "TGlzdBIRCgV2YWx1ZRgBIAMoAkICEAEaLgoHQW55TGlzdBIjCgV2YWx1ZRgB",
- "IAMoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnlCBgoEa2luZCLRAwoKVGVuc29y",
- "SW5mbxIOCgRuYW1lGAEgASgJSAASNgoKY29vX3NwYXJzZRgEIAEoCzIgLnRl",
- "bnNvcmZsb3cuVGVuc29ySW5mby5Db29TcGFyc2VIABJCChBjb21wb3NpdGVf",
- "dGVuc29yGAUgASgLMiYudGVuc29yZmxvdy5UZW5zb3JJbmZvLkNvbXBvc2l0",
- "ZVRlbnNvckgAEiMKBWR0eXBlGAIgASgOMhQudGVuc29yZmxvdy5EYXRhVHlw",
- "ZRIyCgx0ZW5zb3Jfc2hhcGUYAyABKAsyHC50ZW5zb3JmbG93LlRlbnNvclNo",
- "YXBlUHJvdG8aZQoJQ29vU3BhcnNlEhoKEnZhbHVlc190ZW5zb3JfbmFtZRgB",
- "IAEoCRIbChNpbmRpY2VzX3RlbnNvcl9uYW1lGAIgASgJEh8KF2RlbnNlX3No",
- "YXBlX3RlbnNvcl9uYW1lGAMgASgJGmsKD0NvbXBvc2l0ZVRlbnNvchIsCgl0",
- "eXBlX3NwZWMYASABKAsyGS50ZW5zb3JmbG93LlR5cGVTcGVjUHJvdG8SKgoK",
- "Y29tcG9uZW50cxgCIAMoCzIWLnRlbnNvcmZsb3cuVGVuc29ySW5mb0IKCghl",
- "bmNvZGluZyKgAgoMU2lnbmF0dXJlRGVmEjQKBmlucHV0cxgBIAMoCzIkLnRl",
- "bnNvcmZsb3cuU2lnbmF0dXJlRGVmLklucHV0c0VudHJ5EjYKB291dHB1dHMY",
- "AiADKAsyJS50ZW5zb3JmbG93LlNpZ25hdHVyZURlZi5PdXRwdXRzRW50cnkS",
- "EwoLbWV0aG9kX25hbWUYAyABKAkaRQoLSW5wdXRzRW50cnkSCwoDa2V5GAEg",
- "ASgJEiUKBXZhbHVlGAIgASgLMhYudGVuc29yZmxvdy5UZW5zb3JJbmZvOgI4",
- "ARpGCgxPdXRwdXRzRW50cnkSCwoDa2V5GAEgASgJEiUKBXZhbHVlGAIgASgL",
- "MhYudGVuc29yZmxvdy5UZW5zb3JJbmZvOgI4ASJNCgxBc3NldEZpbGVEZWYS",
- "KwoLdGVuc29yX2luZm8YASABKAsyFi50ZW5zb3JmbG93LlRlbnNvckluZm8S",
- "EAoIZmlsZW5hbWUYAiABKAlCbgoYb3JnLnRlbnNvcmZsb3cuZnJhbWV3b3Jr",
- "Qg9NZXRhR3JhcGhQcm90b3NQAVo8Z2l0aHViLmNvbS90ZW5zb3JmbG93L3Rl",
- "bnNvcmZsb3cvdGVuc29yZmxvdy9nby9jb3JlL3Byb3RvYnVm+AEBYgZwcm90",
- "bzM="));
+ "ZWRfZGVmYXVsdF9hdHRycxgHIAEoCBJTChBmdW5jdGlvbl9hbGlhc2VzGAgg",
+ "AygLMjkudGVuc29yZmxvdy5NZXRhR3JhcGhEZWYuTWV0YUluZm9EZWYuRnVu",
+ "Y3Rpb25BbGlhc2VzRW50cnkaNgoURnVuY3Rpb25BbGlhc2VzRW50cnkSCwoD",
+ "a2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARpPChJDb2xsZWN0aW9uRGVm",
+ "RW50cnkSCwoDa2V5GAEgASgJEigKBXZhbHVlGAIgASgLMhkudGVuc29yZmxv",
+ "dy5Db2xsZWN0aW9uRGVmOgI4ARpNChFTaWduYXR1cmVEZWZFbnRyeRILCgNr",
+ "ZXkYASABKAkSJwoFdmFsdWUYAiABKAsyGC50ZW5zb3JmbG93LlNpZ25hdHVy",
+ "ZURlZjoCOAEi3wMKDUNvbGxlY3Rpb25EZWYSNwoJbm9kZV9saXN0GAEgASgL",
+ "MiIudGVuc29yZmxvdy5Db2xsZWN0aW9uRGVmLk5vZGVMaXN0SAASOQoKYnl0",
+ "ZXNfbGlzdBgCIAEoCzIjLnRlbnNvcmZsb3cuQ29sbGVjdGlvbkRlZi5CeXRl",
+ "c0xpc3RIABI5CgppbnQ2NF9saXN0GAMgASgLMiMudGVuc29yZmxvdy5Db2xs",
+ "ZWN0aW9uRGVmLkludDY0TGlzdEgAEjkKCmZsb2F0X2xpc3QYBCABKAsyIy50",
+ "ZW5zb3JmbG93LkNvbGxlY3Rpb25EZWYuRmxvYXRMaXN0SAASNQoIYW55X2xp",
+ "c3QYBSABKAsyIS50ZW5zb3JmbG93LkNvbGxlY3Rpb25EZWYuQW55TGlzdEgA",
+ "GhkKCE5vZGVMaXN0Eg0KBXZhbHVlGAEgAygJGhoKCUJ5dGVzTGlzdBINCgV2",
+ "YWx1ZRgBIAMoDBoeCglJbnQ2NExpc3QSEQoFdmFsdWUYASADKANCAhABGh4K",
+ "CUZsb2F0TGlzdBIRCgV2YWx1ZRgBIAMoAkICEAEaLgoHQW55TGlzdBIjCgV2",
+ "YWx1ZRgBIAMoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnlCBgoEa2luZCLRAwoK",
+ "VGVuc29ySW5mbxIOCgRuYW1lGAEgASgJSAASNgoKY29vX3NwYXJzZRgEIAEo",
+ "CzIgLnRlbnNvcmZsb3cuVGVuc29ySW5mby5Db29TcGFyc2VIABJCChBjb21w",
+ "b3NpdGVfdGVuc29yGAUgASgLMiYudGVuc29yZmxvdy5UZW5zb3JJbmZvLkNv",
+ "bXBvc2l0ZVRlbnNvckgAEiMKBWR0eXBlGAIgASgOMhQudGVuc29yZmxvdy5E",
+ "YXRhVHlwZRIyCgx0ZW5zb3Jfc2hhcGUYAyABKAsyHC50ZW5zb3JmbG93LlRl",
+ "bnNvclNoYXBlUHJvdG8aZQoJQ29vU3BhcnNlEhoKEnZhbHVlc190ZW5zb3Jf",
+ "bmFtZRgBIAEoCRIbChNpbmRpY2VzX3RlbnNvcl9uYW1lGAIgASgJEh8KF2Rl",
+ "bnNlX3NoYXBlX3RlbnNvcl9uYW1lGAMgASgJGmsKD0NvbXBvc2l0ZVRlbnNv",
+ "chIsCgl0eXBlX3NwZWMYASABKAsyGS50ZW5zb3JmbG93LlR5cGVTcGVjUHJv",
+ "dG8SKgoKY29tcG9uZW50cxgCIAMoCzIWLnRlbnNvcmZsb3cuVGVuc29ySW5m",
+ "b0IKCghlbmNvZGluZyKgAgoMU2lnbmF0dXJlRGVmEjQKBmlucHV0cxgBIAMo",
+ "CzIkLnRlbnNvcmZsb3cuU2lnbmF0dXJlRGVmLklucHV0c0VudHJ5EjYKB291",
+ "dHB1dHMYAiADKAsyJS50ZW5zb3JmbG93LlNpZ25hdHVyZURlZi5PdXRwdXRz",
+ "RW50cnkSEwoLbWV0aG9kX25hbWUYAyABKAkaRQoLSW5wdXRzRW50cnkSCwoD",
+ "a2V5GAEgASgJEiUKBXZhbHVlGAIgASgLMhYudGVuc29yZmxvdy5UZW5zb3JJ",
+ "bmZvOgI4ARpGCgxPdXRwdXRzRW50cnkSCwoDa2V5GAEgASgJEiUKBXZhbHVl",
+ "GAIgASgLMhYudGVuc29yZmxvdy5UZW5zb3JJbmZvOgI4ASJNCgxBc3NldEZp",
+ "bGVEZWYSKwoLdGVuc29yX2luZm8YASABKAsyFi50ZW5zb3JmbG93LlRlbnNv",
+ "ckluZm8SEAoIZmlsZW5hbWUYAiABKAlCegoYb3JnLnRlbnNvcmZsb3cuZnJh",
+ "bWV3b3JrQg9NZXRhR3JhcGhQcm90b3NQAVpIZ2l0aHViLmNvbS90ZW5zb3Jm",
+ "bG93L3RlbnNvcmZsb3cvdGVuc29yZmxvdy9nby9jb3JlL2NvcmVfcHJvdG9z",
+ "X2dvX3Byb3Rv+AEBYgZwcm90bzM="));
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[] {
- new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.MetaGraphDef), global::Tensorflow.MetaGraphDef.Parser, new[]{ "MetaInfoDef", "GraphDef", "SaverDef", "CollectionDef", "SignatureDef", "AssetFileDef", "ObjectGraphDef" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.MetaGraphDef.Types.MetaInfoDef), global::Tensorflow.MetaGraphDef.Types.MetaInfoDef.Parser, new[]{ "MetaGraphVersion", "StrippedOpList", "AnyInfo", "Tags", "TensorflowVersion", "TensorflowGitVersion", "StrippedDefaultAttrs" }, null, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.MetaGraphDef), global::Tensorflow.MetaGraphDef.Parser, new[]{ "MetaInfoDef", "GraphDef", "SaverDef", "CollectionDef", "SignatureDef", "AssetFileDef", "ObjectGraphDef" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.MetaGraphDef.Types.MetaInfoDef), global::Tensorflow.MetaGraphDef.Types.MetaInfoDef.Parser, new[]{ "MetaGraphVersion", "StrippedOpList", "AnyInfo", "Tags", "TensorflowVersion", "TensorflowGitVersion", "StrippedDefaultAttrs", "FunctionAliases" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
null, null, }),
new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.CollectionDef), global::Tensorflow.CollectionDef.Parser, new[]{ "NodeList", "BytesList", "Int64List", "FloatList", "AnyList" }, new[]{ "Kind" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.CollectionDef.Types.NodeList), global::Tensorflow.CollectionDef.Types.NodeList.Parser, new[]{ "Value" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.CollectionDef.Types.BytesList), global::Tensorflow.CollectionDef.Types.BytesList.Parser, new[]{ "Value" }, null, null, null, null),
@@ -474,6 +477,7 @@ namespace Tensorflow {
tensorflowVersion_ = other.tensorflowVersion_;
tensorflowGitVersion_ = other.tensorflowGitVersion_;
strippedDefaultAttrs_ = other.strippedDefaultAttrs_;
+ functionAliases_ = other.functionAliases_.Clone();
_unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
}
@@ -592,6 +596,19 @@ namespace Tensorflow {
}
}
+ /// Field number for the "function_aliases" field.
+ public const int FunctionAliasesFieldNumber = 8;
+ private static readonly pbc::MapField.Codec _map_functionAliases_codec
+ = new pbc::MapField.Codec(pb::FieldCodec.ForString(10, ""), pb::FieldCodec.ForString(18, ""), 66);
+ private readonly pbc::MapField functionAliases_ = new pbc::MapField();
+ ///
+ /// FunctionDef name to aliases mapping.
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::MapField FunctionAliases {
+ get { return functionAliases_; }
+ }
+
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public override bool Equals(object other) {
return Equals(other as MetaInfoDef);
@@ -612,6 +629,7 @@ namespace Tensorflow {
if (TensorflowVersion != other.TensorflowVersion) return false;
if (TensorflowGitVersion != other.TensorflowGitVersion) return false;
if (StrippedDefaultAttrs != other.StrippedDefaultAttrs) return false;
+ if (!FunctionAliases.Equals(other.FunctionAliases)) return false;
return Equals(_unknownFields, other._unknownFields);
}
@@ -625,6 +643,7 @@ namespace Tensorflow {
if (TensorflowVersion.Length != 0) hash ^= TensorflowVersion.GetHashCode();
if (TensorflowGitVersion.Length != 0) hash ^= TensorflowGitVersion.GetHashCode();
if (StrippedDefaultAttrs != false) hash ^= StrippedDefaultAttrs.GetHashCode();
+ hash ^= FunctionAliases.GetHashCode();
if (_unknownFields != null) {
hash ^= _unknownFields.GetHashCode();
}
@@ -663,6 +682,7 @@ namespace Tensorflow {
output.WriteRawTag(56);
output.WriteBool(StrippedDefaultAttrs);
}
+ functionAliases_.WriteTo(output, _map_functionAliases_codec);
if (_unknownFields != null) {
_unknownFields.WriteTo(output);
}
@@ -690,6 +710,7 @@ namespace Tensorflow {
if (StrippedDefaultAttrs != false) {
size += 1 + 1;
}
+ size += functionAliases_.CalculateSize(_map_functionAliases_codec);
if (_unknownFields != null) {
size += _unknownFields.CalculateSize();
}
@@ -726,6 +747,7 @@ namespace Tensorflow {
if (other.StrippedDefaultAttrs != false) {
StrippedDefaultAttrs = other.StrippedDefaultAttrs;
}
+ functionAliases_.Add(other.functionAliases_);
_unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
}
@@ -771,6 +793,10 @@ namespace Tensorflow {
StrippedDefaultAttrs = input.ReadBool();
break;
}
+ case 66: {
+ functionAliases_.AddEntriesFrom(input, _map_functionAliases_codec);
+ break;
+ }
}
}
}
diff --git a/src/TensorFlowNET.Core/Protobuf/NodeDef.cs b/src/TensorFlowNET.Core/Protobuf/NodeDef.cs
index b0fcbfe8..fd6e2579 100644
--- a/src/TensorFlowNET.Core/Protobuf/NodeDef.cs
+++ b/src/TensorFlowNET.Core/Protobuf/NodeDef.cs
@@ -33,10 +33,10 @@ namespace Tensorflow {
"ZXJpbWVudGFsRGVidWdJbmZvGkIKCUF0dHJFbnRyeRILCgNrZXkYASABKAkS",
"JAoFdmFsdWUYAiABKAsyFS50ZW5zb3JmbG93LkF0dHJWYWx1ZToCOAEaUQoV",
"RXhwZXJpbWVudGFsRGVidWdJbmZvEhsKE29yaWdpbmFsX25vZGVfbmFtZXMY",
- "ASADKAkSGwoTb3JpZ2luYWxfZnVuY19uYW1lcxgCIAMoCUJpChhvcmcudGVu",
- "c29yZmxvdy5mcmFtZXdvcmtCCU5vZGVQcm90b1ABWj1naXRodWIuY29tL3Rl",
+ "ASADKAkSGwoTb3JpZ2luYWxfZnVuY19uYW1lcxgCIAMoCUJ7ChhvcmcudGVu",
+ "c29yZmxvdy5mcmFtZXdvcmtCCU5vZGVQcm90b1ABWk9naXRodWIuY29tL3Rl",
"bnNvcmZsb3cvdGVuc29yZmxvdy90ZW5zb3JmbG93L2dvL2NvcmUvZnJhbWV3",
- "b3Jr+AEBYgZwcm90bzM="));
+ "b3JrL25vZGVfZGVmX2dvX3Byb3Rv+AEBYgZwcm90bzM="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { global::Tensorflow.AttrValueReflection.Descriptor, },
new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
diff --git a/src/TensorFlowNET.Core/Protobuf/OpDef.cs b/src/TensorFlowNET.Core/Protobuf/OpDef.cs
index 2bb6c3e3..f42dac38 100644
--- a/src/TensorFlowNET.Core/Protobuf/OpDef.cs
+++ b/src/TensorFlowNET.Core/Protobuf/OpDef.cs
@@ -45,9 +45,10 @@ namespace Tensorflow {
"AxItCg5hbGxvd2VkX3ZhbHVlcxgHIAEoCzIVLnRlbnNvcmZsb3cuQXR0clZh",
"bHVlIjUKDU9wRGVwcmVjYXRpb24SDwoHdmVyc2lvbhgBIAEoBRITCgtleHBs",
"YW5hdGlvbhgCIAEoCSInCgZPcExpc3QSHQoCb3AYASADKAsyES50ZW5zb3Jm",
- "bG93Lk9wRGVmQmsKGG9yZy50ZW5zb3JmbG93LmZyYW1ld29ya0ILT3BEZWZQ",
- "cm90b3NQAVo9Z2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmZsb3cvdGVu",
- "c29yZmxvdy9nby9jb3JlL2ZyYW1ld29ya/gBAWIGcHJvdG8z"));
+ "bG93Lk9wRGVmQnsKGG9yZy50ZW5zb3JmbG93LmZyYW1ld29ya0ILT3BEZWZQ",
+ "cm90b3NQAVpNZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmZsb3cvdGVu",
+ "c29yZmxvdy9nby9jb3JlL2ZyYW1ld29yay9vcF9kZWZfZ29fcHJvdG/4AQFi",
+ "BnByb3RvMw=="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { global::Tensorflow.AttrValueReflection.Descriptor, global::Tensorflow.TypesReflection.Descriptor, },
new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
diff --git a/src/TensorFlowNET.Core/Protobuf/ResourceHandle.cs b/src/TensorFlowNET.Core/Protobuf/ResourceHandle.cs
index 4aa49bad..1ca38bee 100644
--- a/src/TensorFlowNET.Core/Protobuf/ResourceHandle.cs
+++ b/src/TensorFlowNET.Core/Protobuf/ResourceHandle.cs
@@ -27,16 +27,17 @@ namespace Tensorflow {
"Ci90ZW5zb3JmbG93L2NvcmUvZnJhbWV3b3JrL3Jlc291cmNlX2hhbmRsZS5w",
"cm90bxIKdGVuc29yZmxvdxosdGVuc29yZmxvdy9jb3JlL2ZyYW1ld29yay90",
"ZW5zb3Jfc2hhcGUucHJvdG8aJXRlbnNvcmZsb3cvY29yZS9mcmFtZXdvcmsv",
- "dHlwZXMucHJvdG8inwIKE1Jlc291cmNlSGFuZGxlUHJvdG8SDgoGZGV2aWNl",
+ "dHlwZXMucHJvdG8ipQIKE1Jlc291cmNlSGFuZGxlUHJvdG8SDgoGZGV2aWNl",
"GAEgASgJEhEKCWNvbnRhaW5lchgCIAEoCRIMCgRuYW1lGAMgASgJEhEKCWhh",
"c2hfY29kZRgEIAEoBBIXCg9tYXliZV90eXBlX25hbWUYBSABKAkSSAoRZHR5",
"cGVzX2FuZF9zaGFwZXMYBiADKAsyLS50ZW5zb3JmbG93LlJlc291cmNlSGFu",
"ZGxlUHJvdG8uRHR5cGVBbmRTaGFwZRphCg1EdHlwZUFuZFNoYXBlEiMKBWR0",
"eXBlGAEgASgOMhQudGVuc29yZmxvdy5EYXRhVHlwZRIrCgVzaGFwZRgCIAEo",
- "CzIcLnRlbnNvcmZsb3cuVGVuc29yU2hhcGVQcm90b0JuChhvcmcudGVuc29y",
- "Zmxvdy5mcmFtZXdvcmtCDlJlc291cmNlSGFuZGxlUAFaPWdpdGh1Yi5jb20v",
- "dGVuc29yZmxvdy90ZW5zb3JmbG93L3RlbnNvcmZsb3cvZ28vY29yZS9mcmFt",
- "ZXdvcmv4AQFiBnByb3RvMw=="));
+ "CzIcLnRlbnNvcmZsb3cuVGVuc29yU2hhcGVQcm90b0oECAcQCEKHAQoYb3Jn",
+ "LnRlbnNvcmZsb3cuZnJhbWV3b3JrQg5SZXNvdXJjZUhhbmRsZVABWlZnaXRo",
+ "dWIuY29tL3RlbnNvcmZsb3cvdGVuc29yZmxvdy90ZW5zb3JmbG93L2dvL2Nv",
+ "cmUvZnJhbWV3b3JrL3Jlc291cmNlX2hhbmRsZV9nb19wcm90b/gBAWIGcHJv",
+ "dG8z"));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { global::Tensorflow.TensorShapeReflection.Descriptor, global::Tensorflow.TypesReflection.Descriptor, },
new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
diff --git a/src/TensorFlowNET.Core/Protobuf/RewriterConfig.cs b/src/TensorFlowNET.Core/Protobuf/RewriterConfig.cs
index 89f8fddc..f2f90a12 100644
--- a/src/TensorFlowNET.Core/Protobuf/RewriterConfig.cs
+++ b/src/TensorFlowNET.Core/Protobuf/RewriterConfig.cs
@@ -29,62 +29,65 @@ namespace Tensorflow {
"dHJfdmFsdWUucHJvdG8aLnRlbnNvcmZsb3cvY29yZS9wcm90b2J1Zi92ZXJp",
"Zmllcl9jb25maWcucHJvdG8iOwoTQXV0b1BhcmFsbGVsT3B0aW9ucxIOCgZl",
"bmFibGUYASABKAgSFAoMbnVtX3JlcGxpY2FzGAIgASgFIisKFlNjb3BlZEFs",
- "bG9jYXRvck9wdGlvbnMSEQoJZW5hYmxlX29wGAEgAygJIogQCg5SZXdyaXRl",
+ "bG9jYXRvck9wdGlvbnMSEQoJZW5hYmxlX29wGAEgAygJIpURCg5SZXdyaXRl",
"ckNvbmZpZxI7ChBsYXlvdXRfb3B0aW1pemVyGAEgASgOMiEudGVuc29yZmxv",
"dy5SZXdyaXRlckNvbmZpZy5Ub2dnbGUSOwoQY29uc3RhbnRfZm9sZGluZxgD",
"IAEoDjIhLnRlbnNvcmZsb3cuUmV3cml0ZXJDb25maWcuVG9nZ2xlEj0KEnNo",
"YXBlX29wdGltaXphdGlvbhgNIAEoDjIhLnRlbnNvcmZsb3cuUmV3cml0ZXJD",
"b25maWcuVG9nZ2xlEjQKCXJlbWFwcGluZxgOIAEoDjIhLnRlbnNvcmZsb3cu",
- "UmV3cml0ZXJDb25maWcuVG9nZ2xlEkIKF2FyaXRobWV0aWNfb3B0aW1pemF0",
- "aW9uGAcgASgOMiEudGVuc29yZmxvdy5SZXdyaXRlckNvbmZpZy5Ub2dnbGUS",
- "QgoXZGVwZW5kZW5jeV9vcHRpbWl6YXRpb24YCCABKA4yIS50ZW5zb3JmbG93",
- "LlJld3JpdGVyQ29uZmlnLlRvZ2dsZRI8ChFsb29wX29wdGltaXphdGlvbhgJ",
- "IAEoDjIhLnRlbnNvcmZsb3cuUmV3cml0ZXJDb25maWcuVG9nZ2xlEkAKFWZ1",
- "bmN0aW9uX29wdGltaXphdGlvbhgKIAEoDjIhLnRlbnNvcmZsb3cuUmV3cml0",
- "ZXJDb25maWcuVG9nZ2xlEjkKDmRlYnVnX3N0cmlwcGVyGAsgASgOMiEudGVu",
- "c29yZmxvdy5SZXdyaXRlckNvbmZpZy5Ub2dnbGUSHQoVZGlzYWJsZV9tb2Rl",
- "bF9wcnVuaW5nGAIgASgIEkgKHXNjb3BlZF9hbGxvY2F0b3Jfb3B0aW1pemF0",
- "aW9uGA8gASgOMiEudGVuc29yZmxvdy5SZXdyaXRlckNvbmZpZy5Ub2dnbGUS",
- "QwoYcGluX3RvX2hvc3Rfb3B0aW1pemF0aW9uGBIgASgOMiEudGVuc29yZmxv",
- "dy5SZXdyaXRlckNvbmZpZy5Ub2dnbGUSQgoXaW1wbGVtZW50YXRpb25fc2Vs",
- "ZWN0b3IYFiABKA4yIS50ZW5zb3JmbG93LlJld3JpdGVyQ29uZmlnLlRvZ2ds",
- "ZRI/ChRhdXRvX21peGVkX3ByZWNpc2lvbhgXIAEoDjIhLnRlbnNvcmZsb3cu",
- "UmV3cml0ZXJDb25maWcuVG9nZ2xlEh4KFmRpc2FibGVfbWV0YV9vcHRpbWl6",
- "ZXIYEyABKAgSTwoZbWV0YV9vcHRpbWl6ZXJfaXRlcmF0aW9ucxgMIAEoDjIs",
- "LnRlbnNvcmZsb3cuUmV3cml0ZXJDb25maWcuTnVtSXRlcmF0aW9uc1R5cGUS",
- "FwoPbWluX2dyYXBoX25vZGVzGBEgASgFEkIKE21lbW9yeV9vcHRpbWl6YXRp",
- "b24YBCABKA4yJS50ZW5zb3JmbG93LlJld3JpdGVyQ29uZmlnLk1lbU9wdFR5",
- "cGUSLwonbWVtb3J5X29wdGltaXplcl90YXJnZXRfbm9kZV9uYW1lX3Njb3Bl",
- "GAYgASgJEiEKGW1ldGFfb3B0aW1pemVyX3RpbWVvdXRfbXMYFCABKAMSNgoN",
- "YXV0b19wYXJhbGxlbBgFIAEoCzIfLnRlbnNvcmZsb3cuQXV0b1BhcmFsbGVs",
- "T3B0aW9ucxIgChhmYWlsX29uX29wdGltaXplcl9lcnJvcnMYFSABKAgSQQoV",
- "c2NvcGVkX2FsbG9jYXRvcl9vcHRzGBAgASgLMiIudGVuc29yZmxvdy5TY29w",
- "ZWRBbGxvY2F0b3JPcHRpb25zEhIKCm9wdGltaXplcnMYZCADKAkSSwoRY3Vz",
- "dG9tX29wdGltaXplcnMYyAEgAygLMi8udGVuc29yZmxvdy5SZXdyaXRlckNv",
- "bmZpZy5DdXN0b21HcmFwaE9wdGltaXplchJECh9pbnRlcl9vcHRpbWl6ZXJf",
- "dmVyaWZpZXJfY29uZmlnGKwCIAEoCzIaLnRlbnNvcmZsb3cuVmVyaWZpZXJD",
- "b25maWcSRgohcG9zdF9vcHRpbWl6YXRpb25fdmVyaWZpZXJfY29uZmlnGK0C",
- "IAEoCzIaLnRlbnNvcmZsb3cuVmVyaWZpZXJDb25maWcaygEKFEN1c3RvbUdy",
- "YXBoT3B0aW1pemVyEgwKBG5hbWUYASABKAkSWAoNcGFyYW1ldGVyX21hcBgC",
- "IAMoCzJBLnRlbnNvcmZsb3cuUmV3cml0ZXJDb25maWcuQ3VzdG9tR3JhcGhP",
- "cHRpbWl6ZXIuUGFyYW1ldGVyTWFwRW50cnkaSgoRUGFyYW1ldGVyTWFwRW50",
- "cnkSCwoDa2V5GAEgASgJEiQKBXZhbHVlGAIgASgLMhUudGVuc29yZmxvdy5B",
- "dHRyVmFsdWU6AjgBIjYKBlRvZ2dsZRILCgdERUZBVUxUEAASBgoCT04QARIH",
- "CgNPRkYQAhIOCgpBR0dSRVNTSVZFEAMiPAoRTnVtSXRlcmF0aW9uc1R5cGUS",
- "FQoRREVGQVVMVF9OVU1fSVRFUlMQABIHCgNPTkUQARIHCgNUV08QAiKfAQoK",
- "TWVtT3B0VHlwZRITCg9ERUZBVUxUX01FTV9PUFQQABIOCgpOT19NRU1fT1BU",
- "EAESCgoGTUFOVUFMEAISFwoTU1dBUFBJTkdfSEVVUklTVElDUxAEEhwKGFJF",
- "Q09NUFVUQVRJT05fSEVVUklTVElDUxAFEhkKFVNDSEVEVUxJTkdfSEVVUklT",
- "VElDUxAGEg4KCkhFVVJJU1RJQ1MQA0JzChhvcmcudGVuc29yZmxvdy5mcmFt",
- "ZXdvcmtCFFJld3JpdGVyQ29uZmlnUHJvdG9zUAFaPGdpdGh1Yi5jb20vdGVu",
- "c29yZmxvdy90ZW5zb3JmbG93L3RlbnNvcmZsb3cvZ28vY29yZS9wcm90b2J1",
- "ZvgBAWIGcHJvdG8z"));
+ "UmV3cml0ZXJDb25maWcuVG9nZ2xlEkYKG2NvbW1vbl9zdWJncmFwaF9lbGlt",
+ "aW5hdGlvbhgYIAEoDjIhLnRlbnNvcmZsb3cuUmV3cml0ZXJDb25maWcuVG9n",
+ "Z2xlEkIKF2FyaXRobWV0aWNfb3B0aW1pemF0aW9uGAcgASgOMiEudGVuc29y",
+ "Zmxvdy5SZXdyaXRlckNvbmZpZy5Ub2dnbGUSQgoXZGVwZW5kZW5jeV9vcHRp",
+ "bWl6YXRpb24YCCABKA4yIS50ZW5zb3JmbG93LlJld3JpdGVyQ29uZmlnLlRv",
+ "Z2dsZRI8ChFsb29wX29wdGltaXphdGlvbhgJIAEoDjIhLnRlbnNvcmZsb3cu",
+ "UmV3cml0ZXJDb25maWcuVG9nZ2xlEkAKFWZ1bmN0aW9uX29wdGltaXphdGlv",
+ "bhgKIAEoDjIhLnRlbnNvcmZsb3cuUmV3cml0ZXJDb25maWcuVG9nZ2xlEjkK",
+ "DmRlYnVnX3N0cmlwcGVyGAsgASgOMiEudGVuc29yZmxvdy5SZXdyaXRlckNv",
+ "bmZpZy5Ub2dnbGUSHQoVZGlzYWJsZV9tb2RlbF9wcnVuaW5nGAIgASgIEkgK",
+ "HXNjb3BlZF9hbGxvY2F0b3Jfb3B0aW1pemF0aW9uGA8gASgOMiEudGVuc29y",
+ "Zmxvdy5SZXdyaXRlckNvbmZpZy5Ub2dnbGUSQwoYcGluX3RvX2hvc3Rfb3B0",
+ "aW1pemF0aW9uGBIgASgOMiEudGVuc29yZmxvdy5SZXdyaXRlckNvbmZpZy5U",
+ "b2dnbGUSQgoXaW1wbGVtZW50YXRpb25fc2VsZWN0b3IYFiABKA4yIS50ZW5z",
+ "b3JmbG93LlJld3JpdGVyQ29uZmlnLlRvZ2dsZRI/ChRhdXRvX21peGVkX3By",
+ "ZWNpc2lvbhgXIAEoDjIhLnRlbnNvcmZsb3cuUmV3cml0ZXJDb25maWcuVG9n",
+ "Z2xlEkMKGGF1dG9fbWl4ZWRfcHJlY2lzaW9uX21rbBgZIAEoDjIhLnRlbnNv",
+ "cmZsb3cuUmV3cml0ZXJDb25maWcuVG9nZ2xlEh4KFmRpc2FibGVfbWV0YV9v",
+ "cHRpbWl6ZXIYEyABKAgSTwoZbWV0YV9vcHRpbWl6ZXJfaXRlcmF0aW9ucxgM",
+ "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"));
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", "ArithmeticOptimization", "DependencyOptimization", "LoopOptimization", "FunctionOptimization", "DebugStripper", "DisableModelPruning", "ScopedAllocatorOptimization", "PinToHostOptimization", "ImplementationSelector", "AutoMixedPrecision", "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[]{ "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, })})
}));
}
#endregion
@@ -405,6 +408,7 @@ namespace Tensorflow {
constantFolding_ = other.constantFolding_;
shapeOptimization_ = other.shapeOptimization_;
remapping_ = other.remapping_;
+ commonSubgraphElimination_ = other.commonSubgraphElimination_;
arithmeticOptimization_ = other.arithmeticOptimization_;
dependencyOptimization_ = other.dependencyOptimization_;
loopOptimization_ = other.loopOptimization_;
@@ -415,6 +419,7 @@ namespace Tensorflow {
pinToHostOptimization_ = other.pinToHostOptimization_;
implementationSelector_ = other.implementationSelector_;
autoMixedPrecision_ = other.autoMixedPrecision_;
+ autoMixedPrecisionMkl_ = other.autoMixedPrecisionMkl_;
disableMetaOptimizer_ = other.disableMetaOptimizer_;
metaOptimizerIterations_ = other.metaOptimizerIterations_;
minGraphNodes_ = other.minGraphNodes_;
@@ -497,6 +502,21 @@ namespace Tensorflow {
}
}
+ /// Field number for the "common_subgraph_elimination" field.
+ public const int CommonSubgraphEliminationFieldNumber = 24;
+ private global::Tensorflow.RewriterConfig.Types.Toggle commonSubgraphElimination_ = global::Tensorflow.RewriterConfig.Types.Toggle.Default;
+ ///
+ /// Common subgraph elimination (default is ON)
+ /// e.g. Simplify arithmetic ops; merge ops with same value (like constants).
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public global::Tensorflow.RewriterConfig.Types.Toggle CommonSubgraphElimination {
+ get { return commonSubgraphElimination_; }
+ set {
+ commonSubgraphElimination_ = value;
+ }
+ }
+
/// Field number for the "arithmetic_optimization" field.
public const int ArithmeticOptimizationFieldNumber = 7;
private global::Tensorflow.RewriterConfig.Types.Toggle arithmeticOptimization_ = global::Tensorflow.RewriterConfig.Types.Toggle.Default;
@@ -631,8 +651,8 @@ namespace Tensorflow {
public const int AutoMixedPrecisionFieldNumber = 23;
private global::Tensorflow.RewriterConfig.Types.Toggle autoMixedPrecision_ = global::Tensorflow.RewriterConfig.Types.Toggle.Default;
///
- /// Optimize data types (default is OFF).
- /// e.g., This will try to use float16 on GPU which is faster.
+ /// Optimize data types for CUDA (default is OFF).
+ /// This will try to use float16 on GPU which is faster.
/// Note that this can change the numerical stability of the graph and may
/// require the use of loss scaling to maintain model convergence.
///
@@ -644,6 +664,22 @@ namespace Tensorflow {
}
}
+ /// Field number for the "auto_mixed_precision_mkl" field.
+ public const int AutoMixedPrecisionMklFieldNumber = 25;
+ private global::Tensorflow.RewriterConfig.Types.Toggle autoMixedPrecisionMkl_ = global::Tensorflow.RewriterConfig.Types.Toggle.Default;
+ ///
+ /// Optimize data types for MKL (default is OFF).
+ /// This will try to use bfloat16 on CPUs, which is faster.
+ /// Note that this can change the numerical stability of the graph.
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public global::Tensorflow.RewriterConfig.Types.Toggle AutoMixedPrecisionMkl {
+ get { return autoMixedPrecisionMkl_; }
+ set {
+ autoMixedPrecisionMkl_ = value;
+ }
+ }
+
/// Field number for the "disable_meta_optimizer" field.
public const int DisableMetaOptimizerFieldNumber = 19;
private bool disableMetaOptimizer_;
@@ -710,7 +746,7 @@ namespace Tensorflow {
public const int MemoryOptimizerTargetNodeNameScopeFieldNumber = 6;
private string memoryOptimizerTargetNodeNameScope_ = "";
///
- /// A node name scope for node names which are valid outputs of recompuations.
+ /// A node name scope for node names which are valid outputs of recomputations.
/// Inputs to nodes that match this scope may be recomputed (subject either to
/// manual annotation of those input nodes or to manual annotation and
/// heuristics depending on memory_optimization), but the nodes themselves will
@@ -868,6 +904,7 @@ namespace Tensorflow {
if (ConstantFolding != other.ConstantFolding) return false;
if (ShapeOptimization != other.ShapeOptimization) return false;
if (Remapping != other.Remapping) return false;
+ if (CommonSubgraphElimination != other.CommonSubgraphElimination) return false;
if (ArithmeticOptimization != other.ArithmeticOptimization) return false;
if (DependencyOptimization != other.DependencyOptimization) return false;
if (LoopOptimization != other.LoopOptimization) return false;
@@ -878,6 +915,7 @@ namespace Tensorflow {
if (PinToHostOptimization != other.PinToHostOptimization) return false;
if (ImplementationSelector != other.ImplementationSelector) return false;
if (AutoMixedPrecision != other.AutoMixedPrecision) return false;
+ if (AutoMixedPrecisionMkl != other.AutoMixedPrecisionMkl) return false;
if (DisableMetaOptimizer != other.DisableMetaOptimizer) return false;
if (MetaOptimizerIterations != other.MetaOptimizerIterations) return false;
if (MinGraphNodes != other.MinGraphNodes) return false;
@@ -901,6 +939,7 @@ namespace Tensorflow {
if (ConstantFolding != global::Tensorflow.RewriterConfig.Types.Toggle.Default) hash ^= ConstantFolding.GetHashCode();
if (ShapeOptimization != global::Tensorflow.RewriterConfig.Types.Toggle.Default) hash ^= ShapeOptimization.GetHashCode();
if (Remapping != global::Tensorflow.RewriterConfig.Types.Toggle.Default) hash ^= Remapping.GetHashCode();
+ if (CommonSubgraphElimination != global::Tensorflow.RewriterConfig.Types.Toggle.Default) hash ^= CommonSubgraphElimination.GetHashCode();
if (ArithmeticOptimization != global::Tensorflow.RewriterConfig.Types.Toggle.Default) hash ^= ArithmeticOptimization.GetHashCode();
if (DependencyOptimization != global::Tensorflow.RewriterConfig.Types.Toggle.Default) hash ^= DependencyOptimization.GetHashCode();
if (LoopOptimization != global::Tensorflow.RewriterConfig.Types.Toggle.Default) hash ^= LoopOptimization.GetHashCode();
@@ -911,6 +950,7 @@ namespace Tensorflow {
if (PinToHostOptimization != global::Tensorflow.RewriterConfig.Types.Toggle.Default) hash ^= PinToHostOptimization.GetHashCode();
if (ImplementationSelector != global::Tensorflow.RewriterConfig.Types.Toggle.Default) hash ^= ImplementationSelector.GetHashCode();
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 (MetaOptimizerIterations != global::Tensorflow.RewriterConfig.Types.NumIterationsType.DefaultNumIters) hash ^= MetaOptimizerIterations.GetHashCode();
if (MinGraphNodes != 0) hash ^= MinGraphNodes.GetHashCode();
@@ -1029,6 +1069,14 @@ namespace Tensorflow {
output.WriteRawTag(184, 1);
output.WriteEnum((int) AutoMixedPrecision);
}
+ if (CommonSubgraphElimination != global::Tensorflow.RewriterConfig.Types.Toggle.Default) {
+ output.WriteRawTag(192, 1);
+ output.WriteEnum((int) CommonSubgraphElimination);
+ }
+ if (AutoMixedPrecisionMkl != global::Tensorflow.RewriterConfig.Types.Toggle.Default) {
+ output.WriteRawTag(200, 1);
+ output.WriteEnum((int) AutoMixedPrecisionMkl);
+ }
optimizers_.WriteTo(output, _repeated_optimizers_codec);
customOptimizers_.WriteTo(output, _repeated_customOptimizers_codec);
if (interOptimizerVerifierConfig_ != null) {
@@ -1059,6 +1107,9 @@ namespace Tensorflow {
if (Remapping != global::Tensorflow.RewriterConfig.Types.Toggle.Default) {
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Remapping);
}
+ if (CommonSubgraphElimination != global::Tensorflow.RewriterConfig.Types.Toggle.Default) {
+ size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) CommonSubgraphElimination);
+ }
if (ArithmeticOptimization != global::Tensorflow.RewriterConfig.Types.Toggle.Default) {
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ArithmeticOptimization);
}
@@ -1089,6 +1140,9 @@ namespace Tensorflow {
if (AutoMixedPrecision != global::Tensorflow.RewriterConfig.Types.Toggle.Default) {
size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) AutoMixedPrecision);
}
+ if (AutoMixedPrecisionMkl != global::Tensorflow.RewriterConfig.Types.Toggle.Default) {
+ size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) AutoMixedPrecisionMkl);
+ }
if (DisableMetaOptimizer != false) {
size += 2 + 1;
}
@@ -1147,6 +1201,9 @@ namespace Tensorflow {
if (other.Remapping != global::Tensorflow.RewriterConfig.Types.Toggle.Default) {
Remapping = other.Remapping;
}
+ if (other.CommonSubgraphElimination != global::Tensorflow.RewriterConfig.Types.Toggle.Default) {
+ CommonSubgraphElimination = other.CommonSubgraphElimination;
+ }
if (other.ArithmeticOptimization != global::Tensorflow.RewriterConfig.Types.Toggle.Default) {
ArithmeticOptimization = other.ArithmeticOptimization;
}
@@ -1177,6 +1234,9 @@ namespace Tensorflow {
if (other.AutoMixedPrecision != global::Tensorflow.RewriterConfig.Types.Toggle.Default) {
AutoMixedPrecision = other.AutoMixedPrecision;
}
+ if (other.AutoMixedPrecisionMkl != global::Tensorflow.RewriterConfig.Types.Toggle.Default) {
+ AutoMixedPrecisionMkl = other.AutoMixedPrecisionMkl;
+ }
if (other.DisableMetaOptimizer != false) {
DisableMetaOptimizer = other.DisableMetaOptimizer;
}
@@ -1333,6 +1393,14 @@ namespace Tensorflow {
AutoMixedPrecision = (global::Tensorflow.RewriterConfig.Types.Toggle) input.ReadEnum();
break;
}
+ case 192: {
+ CommonSubgraphElimination = (global::Tensorflow.RewriterConfig.Types.Toggle) input.ReadEnum();
+ break;
+ }
+ case 200: {
+ AutoMixedPrecisionMkl = (global::Tensorflow.RewriterConfig.Types.Toggle) input.ReadEnum();
+ break;
+ }
case 802: {
optimizers_.AddEntriesFrom(input, _repeated_optimizers_codec);
break;
diff --git a/src/TensorFlowNET.Core/Protobuf/SavedObjectGraph.cs b/src/TensorFlowNET.Core/Protobuf/SavedObjectGraph.cs
index 9150764b..b8d9a0db 100644
--- a/src/TensorFlowNET.Core/Protobuf/SavedObjectGraph.cs
+++ b/src/TensorFlowNET.Core/Protobuf/SavedObjectGraph.cs
@@ -25,18 +25,18 @@ namespace Tensorflow {
byte[] descriptorData = global::System.Convert.FromBase64String(
string.Concat(
"CjF0ZW5zb3JmbG93L2NvcmUvcHJvdG9idWYvc2F2ZWRfb2JqZWN0X2dyYXBo",
- "LnByb3RvEgp0ZW5zb3JmbG93GjV0ZW5zb3JmbG93L2NvcmUvcHJvdG9idWYv",
- "dHJhY2thYmxlX29iamVjdF9ncmFwaC5wcm90bxoldGVuc29yZmxvdy9jb3Jl",
- "L3Byb3RvYnVmL3N0cnVjdC5wcm90bxosdGVuc29yZmxvdy9jb3JlL2ZyYW1l",
- "d29yay90ZW5zb3Jfc2hhcGUucHJvdG8aJXRlbnNvcmZsb3cvY29yZS9mcmFt",
- "ZXdvcmsvdHlwZXMucHJvdG8aKHRlbnNvcmZsb3cvY29yZS9mcmFtZXdvcmsv",
- "dmVyc2lvbnMucHJvdG8aKHRlbnNvcmZsb3cvY29yZS9mcmFtZXdvcmsvdmFy",
- "aWFibGUucHJvdG8i6AEKEFNhdmVkT2JqZWN0R3JhcGgSJgoFbm9kZXMYASAD",
+ "LnByb3RvEgp0ZW5zb3JmbG93Gix0ZW5zb3JmbG93L2NvcmUvZnJhbWV3b3Jr",
+ "L3RlbnNvcl9zaGFwZS5wcm90bxoldGVuc29yZmxvdy9jb3JlL2ZyYW1ld29y",
+ "ay90eXBlcy5wcm90bxoodGVuc29yZmxvdy9jb3JlL2ZyYW1ld29yay92YXJp",
+ "YWJsZS5wcm90bxoodGVuc29yZmxvdy9jb3JlL2ZyYW1ld29yay92ZXJzaW9u",
+ "cy5wcm90bxoldGVuc29yZmxvdy9jb3JlL3Byb3RvYnVmL3N0cnVjdC5wcm90",
+ "bxo1dGVuc29yZmxvdy9jb3JlL3Byb3RvYnVmL3RyYWNrYWJsZV9vYmplY3Rf",
+ "Z3JhcGgucHJvdG8i6AEKEFNhdmVkT2JqZWN0R3JhcGgSJgoFbm9kZXMYASAD",
"KAsyFy50ZW5zb3JmbG93LlNhdmVkT2JqZWN0Ek8KEmNvbmNyZXRlX2Z1bmN0",
"aW9ucxgCIAMoCzIzLnRlbnNvcmZsb3cuU2F2ZWRPYmplY3RHcmFwaC5Db25j",
"cmV0ZUZ1bmN0aW9uc0VudHJ5GlsKFkNvbmNyZXRlRnVuY3Rpb25zRW50cnkS",
"CwoDa2V5GAEgASgJEjAKBXZhbHVlGAIgASgLMiEudGVuc29yZmxvdy5TYXZl",
- "ZENvbmNyZXRlRnVuY3Rpb246AjgBIr0ECgtTYXZlZE9iamVjdBJSCghjaGls",
+ "ZENvbmNyZXRlRnVuY3Rpb246AjgBItkFCgtTYXZlZE9iamVjdBJSCghjaGls",
"ZHJlbhgBIAMoCzJALnRlbnNvcmZsb3cuVHJhY2thYmxlT2JqZWN0R3JhcGgu",
"VHJhY2thYmxlT2JqZWN0Lk9iamVjdFJlZmVyZW5jZRJeCg5zbG90X3Zhcmlh",
"YmxlcxgDIAMoCzJGLnRlbnNvcmZsb3cuVHJhY2thYmxlT2JqZWN0R3JhcGgu",
@@ -48,35 +48,42 @@ namespace Tensorflow {
"RwoWYmFyZV9jb25jcmV0ZV9mdW5jdGlvbhgIIAEoCzIlLnRlbnNvcmZsb3cu",
"U2F2ZWRCYXJlQ29uY3JldGVGdW5jdGlvbkgAEi0KCGNvbnN0YW50GAkgASgL",
"MhkudGVuc29yZmxvdy5TYXZlZENvbnN0YW50SAASLQoIcmVzb3VyY2UYCiAB",
- "KAsyGS50ZW5zb3JmbG93LlNhdmVkUmVzb3VyY2VIAEIGCgRraW5kSgQIAhAD",
- "UgphdHRyaWJ1dGVzImAKD1NhdmVkVXNlck9iamVjdBISCgppZGVudGlmaWVy",
- "GAEgASgJEicKB3ZlcnNpb24YAiABKAsyFi50ZW5zb3JmbG93LlZlcnNpb25E",
- "ZWYSEAoIbWV0YWRhdGEYAyABKAkiKgoKU2F2ZWRBc3NldBIcChRhc3NldF9m",
- "aWxlX2RlZl9pbmRleBgBIAEoBSJcCg1TYXZlZEZ1bmN0aW9uEhoKEmNvbmNy",
- "ZXRlX2Z1bmN0aW9ucxgBIAMoCRIvCg1mdW5jdGlvbl9zcGVjGAIgASgLMhgu",
- "dGVuc29yZmxvdy5GdW5jdGlvblNwZWMiqAEKFVNhdmVkQ29uY3JldGVGdW5j",
- "dGlvbhIUCgxib3VuZF9pbnB1dHMYAiADKAUSQgodY2Fub25pY2FsaXplZF9p",
- "bnB1dF9zaWduYXR1cmUYAyABKAsyGy50ZW5zb3JmbG93LlN0cnVjdHVyZWRW",
- "YWx1ZRI1ChBvdXRwdXRfc2lnbmF0dXJlGAQgASgLMhsudGVuc29yZmxvdy5T",
- "dHJ1Y3R1cmVkVmFsdWUifAoZU2F2ZWRCYXJlQ29uY3JldGVGdW5jdGlvbhIe",
- "ChZjb25jcmV0ZV9mdW5jdGlvbl9uYW1lGAEgASgJEhkKEWFyZ3VtZW50X2tl",
- "eXdvcmRzGAIgAygJEiQKHGFsbG93ZWRfcG9zaXRpb25hbF9hcmd1bWVudHMY",
- "AyABKAMiIgoNU2F2ZWRDb25zdGFudBIRCglvcGVyYXRpb24YASABKAki9gEK",
- "DVNhdmVkVmFyaWFibGUSIwoFZHR5cGUYASABKA4yFC50ZW5zb3JmbG93LkRh",
- "dGFUeXBlEisKBXNoYXBlGAIgASgLMhwudGVuc29yZmxvdy5UZW5zb3JTaGFw",
- "ZVByb3RvEhEKCXRyYWluYWJsZRgDIAEoCBI8Cg9zeW5jaHJvbml6YXRpb24Y",
- "BCABKA4yIy50ZW5zb3JmbG93LlZhcmlhYmxlU3luY2hyb25pemF0aW9uEjQK",
- "C2FnZ3JlZ2F0aW9uGAUgASgOMh8udGVuc29yZmxvdy5WYXJpYWJsZUFnZ3Jl",
- "Z2F0aW9uEgwKBG5hbWUYBiABKAkilQEKDEZ1bmN0aW9uU3BlYxIwCgtmdWxs",
- "YXJnc3BlYxgBIAEoCzIbLnRlbnNvcmZsb3cuU3RydWN0dXJlZFZhbHVlEhEK",
- "CWlzX21ldGhvZBgCIAEoCBI0Cg9pbnB1dF9zaWduYXR1cmUYBSABKAsyGy50",
- "ZW5zb3JmbG93LlN0cnVjdHVyZWRWYWx1ZUoECAMQBEoECAQQBSIfCg1TYXZl",
- "ZFJlc291cmNlEg4KBmRldmljZRgBIAEoCUID+AEBYgZwcm90bzM="));
+ "KAsyGS50ZW5zb3JmbG93LlNhdmVkUmVzb3VyY2VIABJGChBzYXZlYWJsZV9v",
+ "YmplY3RzGAsgAygLMiwudGVuc29yZmxvdy5TYXZlZE9iamVjdC5TYXZlYWJs",
+ "ZU9iamVjdHNFbnRyeRpSChRTYXZlYWJsZU9iamVjdHNFbnRyeRILCgNrZXkY",
+ "ASABKAkSKQoFdmFsdWUYAiABKAsyGi50ZW5zb3JmbG93LlNhdmVhYmxlT2Jq",
+ "ZWN0OgI4AUIGCgRraW5kSgQIAhADUgphdHRyaWJ1dGVzImAKD1NhdmVkVXNl",
+ "ck9iamVjdBISCgppZGVudGlmaWVyGAEgASgJEicKB3ZlcnNpb24YAiABKAsy",
+ "Fi50ZW5zb3JmbG93LlZlcnNpb25EZWYSEAoIbWV0YWRhdGEYAyABKAkiKgoK",
+ "U2F2ZWRBc3NldBIcChRhc3NldF9maWxlX2RlZl9pbmRleBgBIAEoBSJcCg1T",
+ "YXZlZEZ1bmN0aW9uEhoKEmNvbmNyZXRlX2Z1bmN0aW9ucxgBIAMoCRIvCg1m",
+ "dW5jdGlvbl9zcGVjGAIgASgLMhgudGVuc29yZmxvdy5GdW5jdGlvblNwZWMi",
+ "qAEKFVNhdmVkQ29uY3JldGVGdW5jdGlvbhIUCgxib3VuZF9pbnB1dHMYAiAD",
+ "KAUSQgodY2Fub25pY2FsaXplZF9pbnB1dF9zaWduYXR1cmUYAyABKAsyGy50",
+ "ZW5zb3JmbG93LlN0cnVjdHVyZWRWYWx1ZRI1ChBvdXRwdXRfc2lnbmF0dXJl",
+ "GAQgASgLMhsudGVuc29yZmxvdy5TdHJ1Y3R1cmVkVmFsdWUifAoZU2F2ZWRC",
+ "YXJlQ29uY3JldGVGdW5jdGlvbhIeChZjb25jcmV0ZV9mdW5jdGlvbl9uYW1l",
+ "GAEgASgJEhkKEWFyZ3VtZW50X2tleXdvcmRzGAIgAygJEiQKHGFsbG93ZWRf",
+ "cG9zaXRpb25hbF9hcmd1bWVudHMYAyABKAMiIgoNU2F2ZWRDb25zdGFudBIR",
+ "CglvcGVyYXRpb24YASABKAki9gEKDVNhdmVkVmFyaWFibGUSIwoFZHR5cGUY",
+ "ASABKA4yFC50ZW5zb3JmbG93LkRhdGFUeXBlEisKBXNoYXBlGAIgASgLMhwu",
+ "dGVuc29yZmxvdy5UZW5zb3JTaGFwZVByb3RvEhEKCXRyYWluYWJsZRgDIAEo",
+ "CBI8Cg9zeW5jaHJvbml6YXRpb24YBCABKA4yIy50ZW5zb3JmbG93LlZhcmlh",
+ "YmxlU3luY2hyb25pemF0aW9uEjQKC2FnZ3JlZ2F0aW9uGAUgASgOMh8udGVu",
+ "c29yZmxvdy5WYXJpYWJsZUFnZ3JlZ2F0aW9uEgwKBG5hbWUYBiABKAkilQEK",
+ "DEZ1bmN0aW9uU3BlYxIwCgtmdWxsYXJnc3BlYxgBIAEoCzIbLnRlbnNvcmZs",
+ "b3cuU3RydWN0dXJlZFZhbHVlEhEKCWlzX21ldGhvZBgCIAEoCBI0Cg9pbnB1",
+ "dF9zaWduYXR1cmUYBSABKAsyGy50ZW5zb3JmbG93LlN0cnVjdHVyZWRWYWx1",
+ "ZUoECAMQBEoECAQQBSIfCg1TYXZlZFJlc291cmNlEg4KBmRldmljZRgBIAEo",
+ "CSJBCg5TYXZlYWJsZU9iamVjdBIVCg1zYXZlX2Z1bmN0aW9uGAIgASgFEhgK",
+ "EHJlc3RvcmVfZnVuY3Rpb24YAyABKAVCTVpIZ2l0aHViLmNvbS90ZW5zb3Jm",
+ "bG93L3RlbnNvcmZsb3cvdGVuc29yZmxvdy9nby9jb3JlL2NvcmVfcHJvdG9z",
+ "X2dvX3Byb3Rv+AEBYgZwcm90bzM="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
- new pbr::FileDescriptor[] { global::Tensorflow.TrackableObjectGraphReflection.Descriptor, global::Tensorflow.StructReflection.Descriptor, global::Tensorflow.TensorShapeReflection.Descriptor, global::Tensorflow.TypesReflection.Descriptor, global::Tensorflow.VersionsReflection.Descriptor, global::Tensorflow.VariableReflection.Descriptor, },
+ 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[] {
new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.SavedObjectGraph), global::Tensorflow.SavedObjectGraph.Parser, new[]{ "Nodes", "ConcreteFunctions" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
- new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.SavedObject), global::Tensorflow.SavedObject.Parser, new[]{ "Children", "SlotVariables", "UserObject", "Asset", "Function", "Variable", "BareConcreteFunction", "Constant", "Resource" }, new[]{ "Kind" }, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.SavedObject), global::Tensorflow.SavedObject.Parser, new[]{ "Children", "SlotVariables", "UserObject", "Asset", "Function", "Variable", "BareConcreteFunction", "Constant", "Resource", "SaveableObjects" }, new[]{ "Kind" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.SavedUserObject), global::Tensorflow.SavedUserObject.Parser, new[]{ "Identifier", "Version", "Metadata" }, null, null, null, null),
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),
@@ -85,7 +92,8 @@ namespace Tensorflow {
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.SavedResource), global::Tensorflow.SavedResource.Parser, new[]{ "Device" }, null, null, 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)
}));
}
#endregion
@@ -270,6 +278,7 @@ namespace Tensorflow {
public SavedObject(SavedObject other) : this() {
children_ = other.children_.Clone();
slotVariables_ = other.slotVariables_.Clone();
+ saveableObjects_ = other.saveableObjects_.Clone();
switch (other.KindCase) {
case KindOneofCase.UserObject:
UserObject = other.UserObject.Clone();
@@ -412,6 +421,16 @@ namespace Tensorflow {
}
}
+ /// Field number for the "saveable_objects" field.
+ public const int SaveableObjectsFieldNumber = 11;
+ private static readonly pbc::MapField.Codec _map_saveableObjects_codec
+ = new pbc::MapField.Codec(pb::FieldCodec.ForString(10, ""), pb::FieldCodec.ForMessage(18, global::Tensorflow.SaveableObject.Parser), 90);
+ private readonly pbc::MapField saveableObjects_ = new pbc::MapField();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::MapField SaveableObjects {
+ get { return saveableObjects_; }
+ }
+
private object kind_;
/// Enum of possible cases for the "kind" oneof.
public enum KindOneofCase {
@@ -458,6 +477,7 @@ namespace Tensorflow {
if (!object.Equals(BareConcreteFunction, other.BareConcreteFunction)) return false;
if (!object.Equals(Constant, other.Constant)) return false;
if (!object.Equals(Resource, other.Resource)) return false;
+ if (!SaveableObjects.Equals(other.SaveableObjects)) return false;
if (KindCase != other.KindCase) return false;
return Equals(_unknownFields, other._unknownFields);
}
@@ -474,6 +494,7 @@ namespace Tensorflow {
if (kindCase_ == KindOneofCase.BareConcreteFunction) hash ^= BareConcreteFunction.GetHashCode();
if (kindCase_ == KindOneofCase.Constant) hash ^= Constant.GetHashCode();
if (kindCase_ == KindOneofCase.Resource) hash ^= Resource.GetHashCode();
+ hash ^= SaveableObjects.GetHashCode();
hash ^= (int) kindCase_;
if (_unknownFields != null) {
hash ^= _unknownFields.GetHashCode();
@@ -518,6 +539,7 @@ namespace Tensorflow {
output.WriteRawTag(82);
output.WriteMessage(Resource);
}
+ saveableObjects_.WriteTo(output, _map_saveableObjects_codec);
if (_unknownFields != null) {
_unknownFields.WriteTo(output);
}
@@ -549,6 +571,7 @@ namespace Tensorflow {
if (kindCase_ == KindOneofCase.Resource) {
size += 1 + pb::CodedOutputStream.ComputeMessageSize(Resource);
}
+ size += saveableObjects_.CalculateSize(_map_saveableObjects_codec);
if (_unknownFields != null) {
size += _unknownFields.CalculateSize();
}
@@ -562,6 +585,7 @@ namespace Tensorflow {
}
children_.Add(other.children_);
slotVariables_.Add(other.slotVariables_);
+ saveableObjects_.Add(other.saveableObjects_);
switch (other.KindCase) {
case KindOneofCase.UserObject:
if (UserObject == null) {
@@ -689,6 +713,10 @@ namespace Tensorflow {
Resource = subBuilder;
break;
}
+ case 90: {
+ saveableObjects_.AddEntriesFrom(input, _map_saveableObjects_codec);
+ break;
+ }
}
}
}
@@ -2358,6 +2386,166 @@ namespace Tensorflow {
}
+ public sealed partial class SaveableObject : pb::IMessage {
+ private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SaveableObject());
+ 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::Tensorflow.SavedObjectGraphReflection.Descriptor.MessageTypes[11]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public SaveableObject() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public SaveableObject(SaveableObject other) : this() {
+ saveFunction_ = other.saveFunction_;
+ restoreFunction_ = other.restoreFunction_;
+ _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public SaveableObject Clone() {
+ return new SaveableObject(this);
+ }
+
+ /// Field number for the "save_function" field.
+ public const int SaveFunctionFieldNumber = 2;
+ private int saveFunction_;
+ ///
+ /// Node ids of concrete functions for saving and loading from a checkpoint.
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int SaveFunction {
+ get { return saveFunction_; }
+ set {
+ saveFunction_ = value;
+ }
+ }
+
+ /// Field number for the "restore_function" field.
+ public const int RestoreFunctionFieldNumber = 3;
+ private int restoreFunction_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int RestoreFunction {
+ get { return restoreFunction_; }
+ set {
+ restoreFunction_ = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override bool Equals(object other) {
+ return Equals(other as SaveableObject);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public bool Equals(SaveableObject other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (SaveFunction != other.SaveFunction) return false;
+ if (RestoreFunction != other.RestoreFunction) return false;
+ return Equals(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (SaveFunction != 0) hash ^= SaveFunction.GetHashCode();
+ if (RestoreFunction != 0) hash ^= RestoreFunction.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 (SaveFunction != 0) {
+ output.WriteRawTag(16);
+ output.WriteInt32(SaveFunction);
+ }
+ if (RestoreFunction != 0) {
+ output.WriteRawTag(24);
+ output.WriteInt32(RestoreFunction);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(output);
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int CalculateSize() {
+ int size = 0;
+ if (SaveFunction != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(SaveFunction);
+ }
+ if (RestoreFunction != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(RestoreFunction);
+ }
+ if (_unknownFields != null) {
+ size += _unknownFields.CalculateSize();
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void MergeFrom(SaveableObject other) {
+ if (other == null) {
+ return;
+ }
+ if (other.SaveFunction != 0) {
+ SaveFunction = other.SaveFunction;
+ }
+ if (other.RestoreFunction != 0) {
+ RestoreFunction = other.RestoreFunction;
+ }
+ _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: {
+ SaveFunction = input.ReadInt32();
+ break;
+ }
+ case 24: {
+ RestoreFunction = input.ReadInt32();
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
#endregion
}
diff --git a/src/TensorFlowNET.Core/Protobuf/Saver.cs b/src/TensorFlowNET.Core/Protobuf/Saver.cs
index 1394ea91..78b6cd88 100644
--- a/src/TensorFlowNET.Core/Protobuf/Saver.cs
+++ b/src/TensorFlowNET.Core/Protobuf/Saver.cs
@@ -31,9 +31,10 @@ namespace Tensorflow {
"KAgSJQoda2VlcF9jaGVja3BvaW50X2V2ZXJ5X25faG91cnMYBiABKAISPQoH",
"dmVyc2lvbhgHIAEoDjIsLnRlbnNvcmZsb3cuU2F2ZXJEZWYuQ2hlY2twb2lu",
"dEZvcm1hdFZlcnNpb24iNQoXQ2hlY2twb2ludEZvcm1hdFZlcnNpb24SCgoG",
- "TEVHQUNZEAASBgoCVjEQARIGCgJWMhACQmUKE29yZy50ZW5zb3JmbG93LnV0",
- "aWxCC1NhdmVyUHJvdG9zUAFaPGdpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5z",
- "b3JmbG93L3RlbnNvcmZsb3cvZ28vY29yZS9wcm90b2J1ZvgBAWIGcHJvdG8z"));
+ "TEVHQUNZEAASBgoCVjEQARIGCgJWMhACQnEKE29yZy50ZW5zb3JmbG93LnV0",
+ "aWxCC1NhdmVyUHJvdG9zUAFaSGdpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5z",
+ "b3JmbG93L3RlbnNvcmZsb3cvZ28vY29yZS9jb3JlX3Byb3Rvc19nb19wcm90",
+ "b/gBAWIGcHJvdG8z"));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { },
new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
diff --git a/src/TensorFlowNET.Core/Protobuf/StepStats.cs b/src/TensorFlowNET.Core/Protobuf/StepStats.cs
index 6cb12f01..bff1645d 100644
--- a/src/TensorFlowNET.Core/Protobuf/StepStats.cs
+++ b/src/TensorFlowNET.Core/Protobuf/StepStats.cs
@@ -58,10 +58,10 @@ namespace Tensorflow {
"cxgDIAMoCzIsLnRlbnNvcmZsb3cuRGV2aWNlU3RlcFN0YXRzLlRocmVhZE5h",
"bWVzRW50cnkaMgoQVGhyZWFkTmFtZXNFbnRyeRILCgNrZXkYASABKA0SDQoF",
"dmFsdWUYAiABKAk6AjgBIjsKCVN0ZXBTdGF0cxIuCglkZXZfc3RhdHMYASAD",
- "KAsyGy50ZW5zb3JmbG93LkRldmljZVN0ZXBTdGF0c0JvChhvcmcudGVuc29y",
- "Zmxvdy5mcmFtZXdvcmtCD1N0ZXBTdGF0c1Byb3Rvc1ABWj1naXRodWIuY29t",
- "L3RlbnNvcmZsb3cvdGVuc29yZmxvdy90ZW5zb3JmbG93L2dvL2NvcmUvZnJh",
- "bWV3b3Jr+AEBYgZwcm90bzM="));
+ "KAsyGy50ZW5zb3JmbG93LkRldmljZVN0ZXBTdGF0c0KDAQoYb3JnLnRlbnNv",
+ "cmZsb3cuZnJhbWV3b3JrQg9TdGVwU3RhdHNQcm90b3NQAVpRZ2l0aHViLmNv",
+ "bS90ZW5zb3JmbG93L3RlbnNvcmZsb3cvdGVuc29yZmxvdy9nby9jb3JlL2Zy",
+ "YW1ld29yay9zdGVwX3N0YXRzX2dvX3Byb3Rv+AEBYgZwcm90bzM="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { global::Tensorflow.AllocationDescriptionReflection.Descriptor, global::Tensorflow.TensorDescriptionReflection.Descriptor, },
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 803bc864..7641547a 100644
--- a/src/TensorFlowNET.Core/Protobuf/Struct.cs
+++ b/src/TensorFlowNET.Core/Protobuf/Struct.cs
@@ -25,46 +25,56 @@ namespace Tensorflow {
byte[] descriptorData = global::System.Convert.FromBase64String(
string.Concat(
"CiV0ZW5zb3JmbG93L2NvcmUvcHJvdG9idWYvc3RydWN0LnByb3RvEgp0ZW5z",
- "b3JmbG93Gix0ZW5zb3JmbG93L2NvcmUvZnJhbWV3b3JrL3RlbnNvcl9zaGFw",
- "ZS5wcm90bxoldGVuc29yZmxvdy9jb3JlL2ZyYW1ld29yay90eXBlcy5wcm90",
- "byLHBAoPU3RydWN0dXJlZFZhbHVlEisKCm5vbmVfdmFsdWUYASABKAsyFS50",
- "ZW5zb3JmbG93Lk5vbmVWYWx1ZUgAEhcKDWZsb2F0NjRfdmFsdWUYCyABKAFI",
- "ABIVCgtpbnQ2NF92YWx1ZRgMIAEoEkgAEhYKDHN0cmluZ192YWx1ZRgNIAEo",
- "CUgAEhQKCmJvb2xfdmFsdWUYDiABKAhIABI6ChJ0ZW5zb3Jfc2hhcGVfdmFs",
- "dWUYHyABKAsyHC50ZW5zb3JmbG93LlRlbnNvclNoYXBlUHJvdG9IABIyChJ0",
- "ZW5zb3JfZHR5cGVfdmFsdWUYICABKA4yFC50ZW5zb3JmbG93LkRhdGFUeXBl",
- "SAASOAoRdGVuc29yX3NwZWNfdmFsdWUYISABKAsyGy50ZW5zb3JmbG93LlRl",
- "bnNvclNwZWNQcm90b0gAEjQKD3R5cGVfc3BlY192YWx1ZRgiIAEoCzIZLnRl",
- "bnNvcmZsb3cuVHlwZVNwZWNQcm90b0gAEisKCmxpc3RfdmFsdWUYMyABKAsy",
- "FS50ZW5zb3JmbG93Lkxpc3RWYWx1ZUgAEi0KC3R1cGxlX3ZhbHVlGDQgASgL",
- "MhYudGVuc29yZmxvdy5UdXBsZVZhbHVlSAASKwoKZGljdF92YWx1ZRg1IAEo",
- "CzIVLnRlbnNvcmZsb3cuRGljdFZhbHVlSAASOAoRbmFtZWRfdHVwbGVfdmFs",
- "dWUYNiABKAsyGy50ZW5zb3JmbG93Lk5hbWVkVHVwbGVWYWx1ZUgAQgYKBGtp",
- "bmQiCwoJTm9uZVZhbHVlIjgKCUxpc3RWYWx1ZRIrCgZ2YWx1ZXMYASADKAsy",
- "Gy50ZW5zb3JmbG93LlN0cnVjdHVyZWRWYWx1ZSI5CgpUdXBsZVZhbHVlEisK",
- "BnZhbHVlcxgBIAMoCzIbLnRlbnNvcmZsb3cuU3RydWN0dXJlZFZhbHVlIooB",
- "CglEaWN0VmFsdWUSMQoGZmllbGRzGAEgAygLMiEudGVuc29yZmxvdy5EaWN0",
- "VmFsdWUuRmllbGRzRW50cnkaSgoLRmllbGRzRW50cnkSCwoDa2V5GAEgASgJ",
- "EioKBXZhbHVlGAIgASgLMhsudGVuc29yZmxvdy5TdHJ1Y3R1cmVkVmFsdWU6",
- "AjgBIkQKCVBhaXJWYWx1ZRILCgNrZXkYASABKAkSKgoFdmFsdWUYAiABKAsy",
- "Gy50ZW5zb3JmbG93LlN0cnVjdHVyZWRWYWx1ZSJGCg9OYW1lZFR1cGxlVmFs",
- "dWUSDAoEbmFtZRgBIAEoCRIlCgZ2YWx1ZXMYAiADKAsyFS50ZW5zb3JmbG93",
- "LlBhaXJWYWx1ZSJxCg9UZW5zb3JTcGVjUHJvdG8SDAoEbmFtZRgBIAEoCRIr",
- "CgVzaGFwZRgCIAEoCzIcLnRlbnNvcmZsb3cuVGVuc29yU2hhcGVQcm90bxIj",
- "CgVkdHlwZRgDIAEoDjIULnRlbnNvcmZsb3cuRGF0YVR5cGUiigMKDVR5cGVT",
- "cGVjUHJvdG8SQAoPdHlwZV9zcGVjX2NsYXNzGAEgASgOMicudGVuc29yZmxv",
- "dy5UeXBlU3BlY1Byb3RvLlR5cGVTcGVjQ2xhc3MSLwoKdHlwZV9zdGF0ZRgC",
- "IAEoCzIbLnRlbnNvcmZsb3cuU3RydWN0dXJlZFZhbHVlEhwKFHR5cGVfc3Bl",
- "Y19jbGFzc19uYW1lGAMgASgJIucBCg1UeXBlU3BlY0NsYXNzEgsKB1VOS05P",
- "V04QABIWChJTUEFSU0VfVEVOU09SX1NQRUMQARIXChNJTkRFWEVEX1NMSUNF",
- "U19TUEVDEAISFgoSUkFHR0VEX1RFTlNPUl9TUEVDEAMSFQoRVEVOU09SX0FS",
- "UkFZX1NQRUMQBBIVChFEQVRBX0RBVEFTRVRfU1BFQxAFEhYKEkRBVEFfSVRF",
- "UkFUT1JfU1BFQxAGEhEKDU9QVElPTkFMX1NQRUMQBxIUChBQRVJfUkVQTElD",
- "QV9TUEVDEAgSEQoNVkFSSUFCTEVfU1BFQxAJYgZwcm90bzM="));
+ "b3JmbG93GiZ0ZW5zb3JmbG93L2NvcmUvZnJhbWV3b3JrL3RlbnNvci5wcm90",
+ "bxosdGVuc29yZmxvdy9jb3JlL2ZyYW1ld29yay90ZW5zb3Jfc2hhcGUucHJv",
+ "dG8aJXRlbnNvcmZsb3cvY29yZS9mcmFtZXdvcmsvdHlwZXMucHJvdG8ikAUK",
+ "D1N0cnVjdHVyZWRWYWx1ZRIrCgpub25lX3ZhbHVlGAEgASgLMhUudGVuc29y",
+ "Zmxvdy5Ob25lVmFsdWVIABIXCg1mbG9hdDY0X3ZhbHVlGAsgASgBSAASFQoL",
+ "aW50NjRfdmFsdWUYDCABKBJIABIWCgxzdHJpbmdfdmFsdWUYDSABKAlIABIU",
+ "Cgpib29sX3ZhbHVlGA4gASgISAASOgoSdGVuc29yX3NoYXBlX3ZhbHVlGB8g",
+ "ASgLMhwudGVuc29yZmxvdy5UZW5zb3JTaGFwZVByb3RvSAASMgoSdGVuc29y",
+ "X2R0eXBlX3ZhbHVlGCAgASgOMhQudGVuc29yZmxvdy5EYXRhVHlwZUgAEjgK",
+ "EXRlbnNvcl9zcGVjX3ZhbHVlGCEgASgLMhsudGVuc29yZmxvdy5UZW5zb3JT",
+ "cGVjUHJvdG9IABI0Cg90eXBlX3NwZWNfdmFsdWUYIiABKAsyGS50ZW5zb3Jm",
+ "bG93LlR5cGVTcGVjUHJvdG9IABJHChlib3VuZGVkX3RlbnNvcl9zcGVjX3Zh",
+ "bHVlGCMgASgLMiIudGVuc29yZmxvdy5Cb3VuZGVkVGVuc29yU3BlY1Byb3Rv",
+ "SAASKwoKbGlzdF92YWx1ZRgzIAEoCzIVLnRlbnNvcmZsb3cuTGlzdFZhbHVl",
+ "SAASLQoLdHVwbGVfdmFsdWUYNCABKAsyFi50ZW5zb3JmbG93LlR1cGxlVmFs",
+ "dWVIABIrCgpkaWN0X3ZhbHVlGDUgASgLMhUudGVuc29yZmxvdy5EaWN0VmFs",
+ "dWVIABI4ChFuYW1lZF90dXBsZV92YWx1ZRg2IAEoCzIbLnRlbnNvcmZsb3cu",
+ "TmFtZWRUdXBsZVZhbHVlSABCBgoEa2luZCILCglOb25lVmFsdWUiOAoJTGlz",
+ "dFZhbHVlEisKBnZhbHVlcxgBIAMoCzIbLnRlbnNvcmZsb3cuU3RydWN0dXJl",
+ "ZFZhbHVlIjkKClR1cGxlVmFsdWUSKwoGdmFsdWVzGAEgAygLMhsudGVuc29y",
+ "Zmxvdy5TdHJ1Y3R1cmVkVmFsdWUiigEKCURpY3RWYWx1ZRIxCgZmaWVsZHMY",
+ "ASADKAsyIS50ZW5zb3JmbG93LkRpY3RWYWx1ZS5GaWVsZHNFbnRyeRpKCgtG",
+ "aWVsZHNFbnRyeRILCgNrZXkYASABKAkSKgoFdmFsdWUYAiABKAsyGy50ZW5z",
+ "b3JmbG93LlN0cnVjdHVyZWRWYWx1ZToCOAEiRAoJUGFpclZhbHVlEgsKA2tl",
+ "eRgBIAEoCRIqCgV2YWx1ZRgCIAEoCzIbLnRlbnNvcmZsb3cuU3RydWN0dXJl",
+ "ZFZhbHVlIkYKD05hbWVkVHVwbGVWYWx1ZRIMCgRuYW1lGAEgASgJEiUKBnZh",
+ "bHVlcxgCIAMoCzIVLnRlbnNvcmZsb3cuUGFpclZhbHVlInEKD1RlbnNvclNw",
+ "ZWNQcm90bxIMCgRuYW1lGAEgASgJEisKBXNoYXBlGAIgASgLMhwudGVuc29y",
+ "Zmxvdy5UZW5zb3JTaGFwZVByb3RvEiMKBWR0eXBlGAMgASgOMhQudGVuc29y",
+ "Zmxvdy5EYXRhVHlwZSLMAQoWQm91bmRlZFRlbnNvclNwZWNQcm90bxIMCgRu",
+ "YW1lGAEgASgJEisKBXNoYXBlGAIgASgLMhwudGVuc29yZmxvdy5UZW5zb3JT",
+ "aGFwZVByb3RvEiMKBWR0eXBlGAMgASgOMhQudGVuc29yZmxvdy5EYXRhVHlw",
+ "ZRIoCgdtaW5pbXVtGAQgASgLMhcudGVuc29yZmxvdy5UZW5zb3JQcm90bxIo",
+ "CgdtYXhpbXVtGAUgASgLMhcudGVuc29yZmxvdy5UZW5zb3JQcm90byKiAwoN",
+ "VHlwZVNwZWNQcm90bxJACg90eXBlX3NwZWNfY2xhc3MYASABKA4yJy50ZW5z",
+ "b3JmbG93LlR5cGVTcGVjUHJvdG8uVHlwZVNwZWNDbGFzcxIvCgp0eXBlX3N0",
+ "YXRlGAIgASgLMhsudGVuc29yZmxvdy5TdHJ1Y3R1cmVkVmFsdWUSHAoUdHlw",
+ "ZV9zcGVjX2NsYXNzX25hbWUYAyABKAki/wEKDVR5cGVTcGVjQ2xhc3MSCwoH",
+ "VU5LTk9XThAAEhYKElNQQVJTRV9URU5TT1JfU1BFQxABEhcKE0lOREVYRURf",
+ "U0xJQ0VTX1NQRUMQAhIWChJSQUdHRURfVEVOU09SX1NQRUMQAxIVChFURU5T",
+ "T1JfQVJSQVlfU1BFQxAEEhUKEURBVEFfREFUQVNFVF9TUEVDEAUSFgoSREFU",
+ "QV9JVEVSQVRPUl9TUEVDEAYSEQoNT1BUSU9OQUxfU1BFQxAHEhQKEFBFUl9S",
+ "RVBMSUNBX1NQRUMQCBIRCg1WQVJJQUJMRV9TUEVDEAkSFgoSUk9XX1BBUlRJ",
+ "VElPTl9TUEVDEApCSlpIZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmZs",
+ "b3cvdGVuc29yZmxvdy9nby9jb3JlL2NvcmVfcHJvdG9zX2dvX3Byb3RvYgZw",
+ "cm90bzM="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
- new pbr::FileDescriptor[] { global::Tensorflow.TensorShapeReflection.Descriptor, global::Tensorflow.TypesReflection.Descriptor, },
+ new pbr::FileDescriptor[] { global::Tensorflow.TensorReflection.Descriptor, global::Tensorflow.TensorShapeReflection.Descriptor, global::Tensorflow.TypesReflection.Descriptor, },
new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
- new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.StructuredValue), global::Tensorflow.StructuredValue.Parser, new[]{ "NoneValue", "Float64Value", "Int64Value", "StringValue", "BoolValue", "TensorShapeValue", "TensorDtypeValue", "TensorSpecValue", "TypeSpecValue", "ListValue", "TupleValue", "DictValue", "NamedTupleValue" }, new[]{ "Kind" }, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.StructuredValue), global::Tensorflow.StructuredValue.Parser, new[]{ "NoneValue", "Float64Value", "Int64Value", "StringValue", "BoolValue", "TensorShapeValue", "TensorDtypeValue", "TensorSpecValue", "TypeSpecValue", "BoundedTensorSpecValue", "ListValue", "TupleValue", "DictValue", "NamedTupleValue" }, new[]{ "Kind" }, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.NoneValue), global::Tensorflow.NoneValue.Parser, null, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.ListValue), global::Tensorflow.ListValue.Parser, new[]{ "Values" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.TupleValue), global::Tensorflow.TupleValue.Parser, new[]{ "Values" }, null, null, null, null),
@@ -72,6 +82,7 @@ namespace Tensorflow {
new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.PairValue), global::Tensorflow.PairValue.Parser, new[]{ "Key", "Value" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.NamedTupleValue), global::Tensorflow.NamedTupleValue.Parser, new[]{ "Name", "Values" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.TensorSpecProto), global::Tensorflow.TensorSpecProto.Parser, new[]{ "Name", "Shape", "Dtype" }, null, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.BoundedTensorSpecProto), global::Tensorflow.BoundedTensorSpecProto.Parser, new[]{ "Name", "Shape", "Dtype", "Minimum", "Maximum" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.TypeSpecProto), global::Tensorflow.TypeSpecProto.Parser, new[]{ "TypeSpecClass", "TypeState", "TypeSpecClassName" }, null, new[]{ typeof(global::Tensorflow.TypeSpecProto.Types.TypeSpecClass) }, null, null)
}));
}
@@ -158,6 +169,9 @@ namespace Tensorflow {
case KindOneofCase.TypeSpecValue:
TypeSpecValue = other.TypeSpecValue.Clone();
break;
+ case KindOneofCase.BoundedTensorSpecValue:
+ BoundedTensorSpecValue = other.BoundedTensorSpecValue.Clone();
+ break;
case KindOneofCase.ListValue:
ListValue = other.ListValue.Clone();
break;
@@ -312,6 +326,20 @@ namespace Tensorflow {
}
}
+ /// Field number for the "bounded_tensor_spec_value" field.
+ public const int BoundedTensorSpecValueFieldNumber = 35;
+ ///
+ /// Represents a value for tf.BoundedTensorSpec.
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public global::Tensorflow.BoundedTensorSpecProto BoundedTensorSpecValue {
+ get { return kindCase_ == KindOneofCase.BoundedTensorSpecValue ? (global::Tensorflow.BoundedTensorSpecProto) kind_ : null; }
+ set {
+ kind_ = value;
+ kindCase_ = value == null ? KindOneofCase.None : KindOneofCase.BoundedTensorSpecValue;
+ }
+ }
+
/// Field number for the "list_value" field.
public const int ListValueFieldNumber = 51;
///
@@ -381,6 +409,7 @@ namespace Tensorflow {
TensorDtypeValue = 32,
TensorSpecValue = 33,
TypeSpecValue = 34,
+ BoundedTensorSpecValue = 35,
ListValue = 51,
TupleValue = 52,
DictValue = 53,
@@ -420,6 +449,7 @@ namespace Tensorflow {
if (TensorDtypeValue != other.TensorDtypeValue) return false;
if (!object.Equals(TensorSpecValue, other.TensorSpecValue)) return false;
if (!object.Equals(TypeSpecValue, other.TypeSpecValue)) return false;
+ if (!object.Equals(BoundedTensorSpecValue, other.BoundedTensorSpecValue)) return false;
if (!object.Equals(ListValue, other.ListValue)) return false;
if (!object.Equals(TupleValue, other.TupleValue)) return false;
if (!object.Equals(DictValue, other.DictValue)) return false;
@@ -440,6 +470,7 @@ namespace Tensorflow {
if (kindCase_ == KindOneofCase.TensorDtypeValue) hash ^= TensorDtypeValue.GetHashCode();
if (kindCase_ == KindOneofCase.TensorSpecValue) hash ^= TensorSpecValue.GetHashCode();
if (kindCase_ == KindOneofCase.TypeSpecValue) hash ^= TypeSpecValue.GetHashCode();
+ if (kindCase_ == KindOneofCase.BoundedTensorSpecValue) hash ^= BoundedTensorSpecValue.GetHashCode();
if (kindCase_ == KindOneofCase.ListValue) hash ^= ListValue.GetHashCode();
if (kindCase_ == KindOneofCase.TupleValue) hash ^= TupleValue.GetHashCode();
if (kindCase_ == KindOneofCase.DictValue) hash ^= DictValue.GetHashCode();
@@ -494,6 +525,10 @@ namespace Tensorflow {
output.WriteRawTag(146, 2);
output.WriteMessage(TypeSpecValue);
}
+ if (kindCase_ == KindOneofCase.BoundedTensorSpecValue) {
+ output.WriteRawTag(154, 2);
+ output.WriteMessage(BoundedTensorSpecValue);
+ }
if (kindCase_ == KindOneofCase.ListValue) {
output.WriteRawTag(154, 3);
output.WriteMessage(ListValue);
@@ -545,6 +580,9 @@ namespace Tensorflow {
if (kindCase_ == KindOneofCase.TypeSpecValue) {
size += 2 + pb::CodedOutputStream.ComputeMessageSize(TypeSpecValue);
}
+ if (kindCase_ == KindOneofCase.BoundedTensorSpecValue) {
+ size += 2 + pb::CodedOutputStream.ComputeMessageSize(BoundedTensorSpecValue);
+ }
if (kindCase_ == KindOneofCase.ListValue) {
size += 2 + pb::CodedOutputStream.ComputeMessageSize(ListValue);
}
@@ -608,6 +646,12 @@ namespace Tensorflow {
}
TypeSpecValue.MergeFrom(other.TypeSpecValue);
break;
+ case KindOneofCase.BoundedTensorSpecValue:
+ if (BoundedTensorSpecValue == null) {
+ BoundedTensorSpecValue = new global::Tensorflow.BoundedTensorSpecProto();
+ }
+ BoundedTensorSpecValue.MergeFrom(other.BoundedTensorSpecValue);
+ break;
case KindOneofCase.ListValue:
if (ListValue == null) {
ListValue = new global::Tensorflow.ListValue();
@@ -702,6 +746,15 @@ namespace Tensorflow {
TypeSpecValue = subBuilder;
break;
}
+ case 282: {
+ global::Tensorflow.BoundedTensorSpecProto subBuilder = new global::Tensorflow.BoundedTensorSpecProto();
+ if (kindCase_ == KindOneofCase.BoundedTensorSpecValue) {
+ subBuilder.MergeFrom(BoundedTensorSpecValue);
+ }
+ input.ReadMessage(subBuilder);
+ BoundedTensorSpecValue = subBuilder;
+ break;
+ }
case 410: {
global::Tensorflow.ListValue subBuilder = new global::Tensorflow.ListValue();
if (kindCase_ == KindOneofCase.ListValue) {
@@ -1540,7 +1593,7 @@ namespace Tensorflow {
}
///
- /// A protobuf to tf.TensorSpec.
+ /// A protobuf to represent tf.TensorSpec.
///
public sealed partial class TensorSpecProto : pb::IMessage {
private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new TensorSpecProto());
@@ -1733,6 +1786,268 @@ namespace Tensorflow {
}
+ ///
+ /// A protobuf to represent tf.BoundedTensorSpec.
+ ///
+ public sealed partial class BoundedTensorSpecProto : pb::IMessage {
+ private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new BoundedTensorSpecProto());
+ 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::Tensorflow.StructReflection.Descriptor.MessageTypes[8]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public BoundedTensorSpecProto() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public BoundedTensorSpecProto(BoundedTensorSpecProto other) : this() {
+ name_ = other.name_;
+ shape_ = other.shape_ != null ? other.shape_.Clone() : null;
+ dtype_ = other.dtype_;
+ minimum_ = other.minimum_ != null ? other.minimum_.Clone() : null;
+ maximum_ = other.maximum_ != null ? other.maximum_.Clone() : null;
+ _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public BoundedTensorSpecProto Clone() {
+ return new BoundedTensorSpecProto(this);
+ }
+
+ /// Field number for the "name" field.
+ public const int NameFieldNumber = 1;
+ private string name_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public string Name {
+ get { return name_; }
+ set {
+ name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// Field number for the "shape" field.
+ public const int ShapeFieldNumber = 2;
+ private global::Tensorflow.TensorShapeProto shape_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public global::Tensorflow.TensorShapeProto Shape {
+ get { return shape_; }
+ set {
+ shape_ = value;
+ }
+ }
+
+ /// Field number for the "dtype" field.
+ public const int DtypeFieldNumber = 3;
+ private global::Tensorflow.DataType dtype_ = global::Tensorflow.DataType.DtInvalid;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public global::Tensorflow.DataType Dtype {
+ get { return dtype_; }
+ set {
+ dtype_ = value;
+ }
+ }
+
+ /// Field number for the "minimum" field.
+ public const int MinimumFieldNumber = 4;
+ private global::Tensorflow.TensorProto minimum_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public global::Tensorflow.TensorProto Minimum {
+ get { return minimum_; }
+ set {
+ minimum_ = value;
+ }
+ }
+
+ /// Field number for the "maximum" field.
+ public const int MaximumFieldNumber = 5;
+ private global::Tensorflow.TensorProto maximum_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public global::Tensorflow.TensorProto Maximum {
+ get { return maximum_; }
+ set {
+ maximum_ = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override bool Equals(object other) {
+ return Equals(other as BoundedTensorSpecProto);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public bool Equals(BoundedTensorSpecProto other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Name != other.Name) return false;
+ if (!object.Equals(Shape, other.Shape)) return false;
+ if (Dtype != other.Dtype) return false;
+ if (!object.Equals(Minimum, other.Minimum)) return false;
+ if (!object.Equals(Maximum, other.Maximum)) return false;
+ return Equals(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Name.Length != 0) hash ^= Name.GetHashCode();
+ if (shape_ != null) hash ^= Shape.GetHashCode();
+ if (Dtype != global::Tensorflow.DataType.DtInvalid) hash ^= Dtype.GetHashCode();
+ if (minimum_ != null) hash ^= Minimum.GetHashCode();
+ if (maximum_ != null) hash ^= Maximum.GetHashCode();
+ if (_unknownFields != null) {
+ hash ^= _unknownFields.GetHashCode();
+ }
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Name.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(Name);
+ }
+ if (shape_ != null) {
+ output.WriteRawTag(18);
+ output.WriteMessage(Shape);
+ }
+ if (Dtype != global::Tensorflow.DataType.DtInvalid) {
+ output.WriteRawTag(24);
+ output.WriteEnum((int) Dtype);
+ }
+ if (minimum_ != null) {
+ output.WriteRawTag(34);
+ output.WriteMessage(Minimum);
+ }
+ if (maximum_ != null) {
+ output.WriteRawTag(42);
+ output.WriteMessage(Maximum);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(output);
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int CalculateSize() {
+ int size = 0;
+ if (Name.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
+ }
+ if (shape_ != null) {
+ size += 1 + pb::CodedOutputStream.ComputeMessageSize(Shape);
+ }
+ if (Dtype != global::Tensorflow.DataType.DtInvalid) {
+ size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Dtype);
+ }
+ if (minimum_ != null) {
+ size += 1 + pb::CodedOutputStream.ComputeMessageSize(Minimum);
+ }
+ if (maximum_ != null) {
+ size += 1 + pb::CodedOutputStream.ComputeMessageSize(Maximum);
+ }
+ if (_unknownFields != null) {
+ size += _unknownFields.CalculateSize();
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void MergeFrom(BoundedTensorSpecProto other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Name.Length != 0) {
+ Name = other.Name;
+ }
+ if (other.shape_ != null) {
+ if (shape_ == null) {
+ Shape = new global::Tensorflow.TensorShapeProto();
+ }
+ Shape.MergeFrom(other.Shape);
+ }
+ if (other.Dtype != global::Tensorflow.DataType.DtInvalid) {
+ Dtype = other.Dtype;
+ }
+ if (other.minimum_ != null) {
+ if (minimum_ == null) {
+ Minimum = new global::Tensorflow.TensorProto();
+ }
+ Minimum.MergeFrom(other.Minimum);
+ }
+ if (other.maximum_ != null) {
+ if (maximum_ == null) {
+ Maximum = new global::Tensorflow.TensorProto();
+ }
+ Maximum.MergeFrom(other.Maximum);
+ }
+ _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
+ break;
+ case 10: {
+ Name = input.ReadString();
+ break;
+ }
+ case 18: {
+ if (shape_ == null) {
+ Shape = new global::Tensorflow.TensorShapeProto();
+ }
+ input.ReadMessage(Shape);
+ break;
+ }
+ case 24: {
+ Dtype = (global::Tensorflow.DataType) input.ReadEnum();
+ break;
+ }
+ case 34: {
+ if (minimum_ == null) {
+ Minimum = new global::Tensorflow.TensorProto();
+ }
+ input.ReadMessage(Minimum);
+ break;
+ }
+ case 42: {
+ if (maximum_ == null) {
+ Maximum = new global::Tensorflow.TensorProto();
+ }
+ input.ReadMessage(Maximum);
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
///
/// Represents a tf.TypeSpec
///
@@ -1744,7 +2059,7 @@ namespace Tensorflow {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public static pbr::MessageDescriptor Descriptor {
- get { return global::Tensorflow.StructReflection.Descriptor.MessageTypes[8]; }
+ get { return global::Tensorflow.StructReflection.Descriptor.MessageTypes[9]; }
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -1976,6 +2291,10 @@ namespace Tensorflow {
/// tf.VariableSpec
///
[pbr::OriginalName("VARIABLE_SPEC")] VariableSpec = 9,
+ ///
+ /// RowPartitionSpec from ragged/row_partition.py
+ ///
+ [pbr::OriginalName("ROW_PARTITION_SPEC")] RowPartitionSpec = 10,
}
}
diff --git a/src/TensorFlowNET.Core/Protobuf/Summary.cs b/src/TensorFlowNET.Core/Protobuf/Summary.cs
index 4a7248c9..27d87a58 100644
--- a/src/TensorFlowNET.Core/Protobuf/Summary.cs
+++ b/src/TensorFlowNET.Core/Protobuf/Summary.cs
@@ -30,33 +30,37 @@ namespace Tensorflow {
"hwEKDkhpc3RvZ3JhbVByb3RvEgsKA21pbhgBIAEoARILCgNtYXgYAiABKAES",
"CwoDbnVtGAMgASgBEgsKA3N1bRgEIAEoARITCgtzdW1fc3F1YXJlcxgFIAEo",
"ARIYCgxidWNrZXRfbGltaXQYBiADKAFCAhABEhIKBmJ1Y2tldBgHIAMoAUIC",
- "EAEitQEKD1N1bW1hcnlNZXRhZGF0YRI7CgtwbHVnaW5fZGF0YRgBIAEoCzIm",
+ "EAEi4AEKD1N1bW1hcnlNZXRhZGF0YRI7CgtwbHVnaW5fZGF0YRgBIAEoCzIm",
"LnRlbnNvcmZsb3cuU3VtbWFyeU1ldGFkYXRhLlBsdWdpbkRhdGESFAoMZGlz",
- "cGxheV9uYW1lGAIgASgJEhsKE3N1bW1hcnlfZGVzY3JpcHRpb24YAyABKAka",
- "MgoKUGx1Z2luRGF0YRITCgtwbHVnaW5fbmFtZRgBIAEoCRIPCgdjb250ZW50",
- "GAIgASgMIt4ECgdTdW1tYXJ5EigKBXZhbHVlGAEgAygLMhkudGVuc29yZmxv",
- "dy5TdW1tYXJ5LlZhbHVlGlgKBUltYWdlEg4KBmhlaWdodBgBIAEoBRINCgV3",
- "aWR0aBgCIAEoBRISCgpjb2xvcnNwYWNlGAMgASgFEhwKFGVuY29kZWRfaW1h",
- "Z2Vfc3RyaW5nGAQgASgMGn0KBUF1ZGlvEhMKC3NhbXBsZV9yYXRlGAEgASgC",
- "EhQKDG51bV9jaGFubmVscxgCIAEoAxIVCg1sZW5ndGhfZnJhbWVzGAMgASgD",
- "EhwKFGVuY29kZWRfYXVkaW9fc3RyaW5nGAQgASgMEhQKDGNvbnRlbnRfdHlw",
- "ZRgFIAEoCRrPAgoFVmFsdWUSEQoJbm9kZV9uYW1lGAcgASgJEgsKA3RhZxgB",
- "IAEoCRItCghtZXRhZGF0YRgJIAEoCzIbLnRlbnNvcmZsb3cuU3VtbWFyeU1l",
- "dGFkYXRhEhYKDHNpbXBsZV92YWx1ZRgCIAEoAkgAEiYKHG9ic29sZXRlX29s",
- "ZF9zdHlsZV9oaXN0b2dyYW0YAyABKAxIABIqCgVpbWFnZRgEIAEoCzIZLnRl",
- "bnNvcmZsb3cuU3VtbWFyeS5JbWFnZUgAEisKBWhpc3RvGAUgASgLMhoudGVu",
- "c29yZmxvdy5IaXN0b2dyYW1Qcm90b0gAEioKBWF1ZGlvGAYgASgLMhkudGVu",
- "c29yZmxvdy5TdW1tYXJ5LkF1ZGlvSAASKQoGdGVuc29yGAggASgLMhcudGVu",
- "c29yZmxvdy5UZW5zb3JQcm90b0gAQgcKBXZhbHVlQm0KGG9yZy50ZW5zb3Jm",
- "bG93LmZyYW1ld29ya0INU3VtbWFyeVByb3Rvc1ABWj1naXRodWIuY29tL3Rl",
- "bnNvcmZsb3cvdGVuc29yZmxvdy90ZW5zb3JmbG93L2dvL2NvcmUvZnJhbWV3",
- "b3Jr+AEBYgZwcm90bzM="));
+ "cGxheV9uYW1lGAIgASgJEhsKE3N1bW1hcnlfZGVzY3JpcHRpb24YAyABKAkS",
+ "KQoKZGF0YV9jbGFzcxgEIAEoDjIVLnRlbnNvcmZsb3cuRGF0YUNsYXNzGjIK",
+ "ClBsdWdpbkRhdGESEwoLcGx1Z2luX25hbWUYASABKAkSDwoHY29udGVudBgC",
+ "IAEoDCLeBAoHU3VtbWFyeRIoCgV2YWx1ZRgBIAMoCzIZLnRlbnNvcmZsb3cu",
+ "U3VtbWFyeS5WYWx1ZRpYCgVJbWFnZRIOCgZoZWlnaHQYASABKAUSDQoFd2lk",
+ "dGgYAiABKAUSEgoKY29sb3JzcGFjZRgDIAEoBRIcChRlbmNvZGVkX2ltYWdl",
+ "X3N0cmluZxgEIAEoDBp9CgVBdWRpbxITCgtzYW1wbGVfcmF0ZRgBIAEoAhIU",
+ "CgxudW1fY2hhbm5lbHMYAiABKAMSFQoNbGVuZ3RoX2ZyYW1lcxgDIAEoAxIc",
+ "ChRlbmNvZGVkX2F1ZGlvX3N0cmluZxgEIAEoDBIUCgxjb250ZW50X3R5cGUY",
+ "BSABKAkazwIKBVZhbHVlEhEKCW5vZGVfbmFtZRgHIAEoCRILCgN0YWcYASAB",
+ "KAkSLQoIbWV0YWRhdGEYCSABKAsyGy50ZW5zb3JmbG93LlN1bW1hcnlNZXRh",
+ "ZGF0YRIWCgxzaW1wbGVfdmFsdWUYAiABKAJIABImChxvYnNvbGV0ZV9vbGRf",
+ "c3R5bGVfaGlzdG9ncmFtGAMgASgMSAASKgoFaW1hZ2UYBCABKAsyGS50ZW5z",
+ "b3JmbG93LlN1bW1hcnkuSW1hZ2VIABIrCgVoaXN0bxgFIAEoCzIaLnRlbnNv",
+ "cmZsb3cuSGlzdG9ncmFtUHJvdG9IABIqCgVhdWRpbxgGIAEoCzIZLnRlbnNv",
+ "cmZsb3cuU3VtbWFyeS5BdWRpb0gAEikKBnRlbnNvchgIIAEoCzIXLnRlbnNv",
+ "cmZsb3cuVGVuc29yUHJvdG9IAEIHCgV2YWx1ZSpvCglEYXRhQ2xhc3MSFgoS",
+ "REFUQV9DTEFTU19VTktOT1dOEAASFQoRREFUQV9DTEFTU19TQ0FMQVIQARIV",
+ "ChFEQVRBX0NMQVNTX1RFTlNPUhACEhwKGERBVEFfQ0xBU1NfQkxPQl9TRVFV",
+ "RU5DRRADQn4KGG9yZy50ZW5zb3JmbG93LmZyYW1ld29ya0INU3VtbWFyeVBy",
+ "b3Rvc1ABWk5naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yZmxvdy90ZW5z",
+ "b3JmbG93L2dvL2NvcmUvZnJhbWV3b3JrL3N1bW1hcnlfZ29fcHJvdG/4AQFi",
+ "BnByb3RvMw=="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { global::Tensorflow.TensorReflection.Descriptor, },
- new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
+ new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Tensorflow.DataClass), }, null, new pbr::GeneratedClrTypeInfo[] {
new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.SummaryDescription), global::Tensorflow.SummaryDescription.Parser, new[]{ "TypeHint" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.HistogramProto), global::Tensorflow.HistogramProto.Parser, new[]{ "Min", "Max", "Num", "Sum", "SumSquares", "BucketLimit", "Bucket" }, null, null, null, null),
- new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.SummaryMetadata), global::Tensorflow.SummaryMetadata.Parser, new[]{ "PluginData", "DisplayName", "SummaryDescription" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.SummaryMetadata.Types.PluginData), global::Tensorflow.SummaryMetadata.Types.PluginData.Parser, new[]{ "PluginName", "Content" }, null, null, null, null)}),
+ new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.SummaryMetadata), global::Tensorflow.SummaryMetadata.Parser, new[]{ "PluginData", "DisplayName", "SummaryDescription", "DataClass" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.SummaryMetadata.Types.PluginData), global::Tensorflow.SummaryMetadata.Types.PluginData.Parser, new[]{ "PluginName", "Content" }, null, null, null, null)}),
new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.Summary), global::Tensorflow.Summary.Parser, new[]{ "Value" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.Summary.Types.Image), global::Tensorflow.Summary.Types.Image.Parser, new[]{ "Height", "Width", "Colorspace", "EncodedImageString" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.Summary.Types.Audio), global::Tensorflow.Summary.Types.Audio.Parser, new[]{ "SampleRate", "NumChannels", "LengthFrames", "EncodedAudioString", "ContentType" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.Summary.Types.Value), global::Tensorflow.Summary.Types.Value.Parser, new[]{ "NodeName", "Tag", "Metadata", "SimpleValue", "ObsoleteOldStyleHistogram", "Image", "Histo", "Audio", "Tensor" }, new[]{ "Value" }, null, null, null)})
@@ -65,6 +69,35 @@ namespace Tensorflow {
#endregion
}
+ #region Enums
+ public enum DataClass {
+ ///
+ /// Unknown data class, used (implicitly) for legacy data. Will not be
+ /// processed by data ingestion pipelines.
+ ///
+ [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.
+ ///
+ [pbr::OriginalName("DATA_CLASS_SCALAR")] Scalar = 1,
+ ///
+ /// Tensor time series. Each `Value` for the corresponding tag must have
+ /// `tensor` set. The tensor value is arbitrary, but should be small to
+ /// accommodate direct storage in database backends: an upper bound of a few
+ /// kilobytes is a reasonable rule of thumb.
+ ///
+ [pbr::OriginalName("DATA_CLASS_TENSOR")] Tensor = 2,
+ ///
+ /// Blob sequence time series. Each `Value` for the corresponding tag must
+ /// have `tensor` set to a rank-1 tensor of bytestring dtype.
+ ///
+ [pbr::OriginalName("DATA_CLASS_BLOB_SEQUENCE")] BlobSequence = 3,
+ }
+
+ #endregion
+
#region Messages
///
/// Metadata associated with a series of Summary data
@@ -528,6 +561,7 @@ namespace Tensorflow {
pluginData_ = other.pluginData_ != null ? other.pluginData_.Clone() : null;
displayName_ = other.displayName_;
summaryDescription_ = other.summaryDescription_;
+ dataClass_ = other.dataClass_;
_unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
}
@@ -578,6 +612,23 @@ namespace Tensorflow {
}
}
+ /// Field number for the "data_class" field.
+ public const int DataClassFieldNumber = 4;
+ private global::Tensorflow.DataClass dataClass_ = global::Tensorflow.DataClass.Unknown;
+ ///
+ /// Class of data stored in this time series. Required for compatibility with
+ /// TensorBoard's generic data facilities (`DataProvider`, et al.). This value
+ /// imposes constraints on the dtype and shape of the corresponding tensor
+ /// values. See `DataClass` docs for details.
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public global::Tensorflow.DataClass DataClass {
+ get { return dataClass_; }
+ set {
+ dataClass_ = value;
+ }
+ }
+
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public override bool Equals(object other) {
return Equals(other as SummaryMetadata);
@@ -594,6 +645,7 @@ namespace Tensorflow {
if (!object.Equals(PluginData, other.PluginData)) return false;
if (DisplayName != other.DisplayName) return false;
if (SummaryDescription != other.SummaryDescription) return false;
+ if (DataClass != other.DataClass) return false;
return Equals(_unknownFields, other._unknownFields);
}
@@ -603,6 +655,7 @@ namespace Tensorflow {
if (pluginData_ != null) hash ^= PluginData.GetHashCode();
if (DisplayName.Length != 0) hash ^= DisplayName.GetHashCode();
if (SummaryDescription.Length != 0) hash ^= SummaryDescription.GetHashCode();
+ if (DataClass != global::Tensorflow.DataClass.Unknown) hash ^= DataClass.GetHashCode();
if (_unknownFields != null) {
hash ^= _unknownFields.GetHashCode();
}
@@ -628,6 +681,10 @@ namespace Tensorflow {
output.WriteRawTag(26);
output.WriteString(SummaryDescription);
}
+ if (DataClass != global::Tensorflow.DataClass.Unknown) {
+ output.WriteRawTag(32);
+ output.WriteEnum((int) DataClass);
+ }
if (_unknownFields != null) {
_unknownFields.WriteTo(output);
}
@@ -645,6 +702,9 @@ namespace Tensorflow {
if (SummaryDescription.Length != 0) {
size += 1 + pb::CodedOutputStream.ComputeStringSize(SummaryDescription);
}
+ if (DataClass != global::Tensorflow.DataClass.Unknown) {
+ size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) DataClass);
+ }
if (_unknownFields != null) {
size += _unknownFields.CalculateSize();
}
@@ -668,6 +728,9 @@ namespace Tensorflow {
if (other.SummaryDescription.Length != 0) {
SummaryDescription = other.SummaryDescription;
}
+ if (other.DataClass != global::Tensorflow.DataClass.Unknown) {
+ DataClass = other.DataClass;
+ }
_unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
}
@@ -694,6 +757,10 @@ namespace Tensorflow {
SummaryDescription = input.ReadString();
break;
}
+ case 32: {
+ DataClass = (global::Tensorflow.DataClass) input.ReadEnum();
+ break;
+ }
}
}
}
diff --git a/src/TensorFlowNET.Core/Protobuf/Tensor.cs b/src/TensorFlowNET.Core/Protobuf/Tensor.cs
index d8a3d297..f7db83e1 100644
--- a/src/TensorFlowNET.Core/Protobuf/Tensor.cs
+++ b/src/TensorFlowNET.Core/Protobuf/Tensor.cs
@@ -42,9 +42,10 @@ namespace Tensorflow {
"X3ZhbBgQIAMoDUICEAESFgoKdWludDY0X3ZhbBgRIAMoBEICEAEiZwoWVmFy",
"aWFudFRlbnNvckRhdGFQcm90bxIRCgl0eXBlX25hbWUYASABKAkSEAoIbWV0",
"YWRhdGEYAiABKAwSKAoHdGVuc29ycxgDIAMoCzIXLnRlbnNvcmZsb3cuVGVu",
- "c29yUHJvdG9CbAoYb3JnLnRlbnNvcmZsb3cuZnJhbWV3b3JrQgxUZW5zb3JQ",
- "cm90b3NQAVo9Z2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmZsb3cvdGVu",
- "c29yZmxvdy9nby9jb3JlL2ZyYW1ld29ya/gBAWIGcHJvdG8z"));
+ "c29yUHJvdG9CfAoYb3JnLnRlbnNvcmZsb3cuZnJhbWV3b3JrQgxUZW5zb3JQ",
+ "cm90b3NQAVpNZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmZsb3cvdGVu",
+ "c29yZmxvdy9nby9jb3JlL2ZyYW1ld29yay90ZW5zb3JfZ29fcHJvdG/4AQFi",
+ "BnByb3RvMw=="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { global::Tensorflow.ResourceHandleReflection.Descriptor, global::Tensorflow.TensorShapeReflection.Descriptor, global::Tensorflow.TypesReflection.Descriptor, },
new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
diff --git a/src/TensorFlowNET.Core/Protobuf/TensorDescription.cs b/src/TensorFlowNET.Core/Protobuf/TensorDescription.cs
index ffe2e511..0af19768 100644
--- a/src/TensorFlowNET.Core/Protobuf/TensorDescription.cs
+++ b/src/TensorFlowNET.Core/Protobuf/TensorDescription.cs
@@ -25,19 +25,19 @@ namespace Tensorflow {
byte[] descriptorData = global::System.Convert.FromBase64String(
string.Concat(
"CjJ0ZW5zb3JmbG93L2NvcmUvZnJhbWV3b3JrL3RlbnNvcl9kZXNjcmlwdGlv",
- "bi5wcm90bxIKdGVuc29yZmxvdxoldGVuc29yZmxvdy9jb3JlL2ZyYW1ld29y",
- "ay90eXBlcy5wcm90bxosdGVuc29yZmxvdy9jb3JlL2ZyYW1ld29yay90ZW5z",
- "b3Jfc2hhcGUucHJvdG8aNnRlbnNvcmZsb3cvY29yZS9mcmFtZXdvcmsvYWxs",
- "b2NhdGlvbl9kZXNjcmlwdGlvbi5wcm90byKoAQoRVGVuc29yRGVzY3JpcHRp",
+ "bi5wcm90bxIKdGVuc29yZmxvdxo2dGVuc29yZmxvdy9jb3JlL2ZyYW1ld29y",
+ "ay9hbGxvY2F0aW9uX2Rlc2NyaXB0aW9uLnByb3RvGix0ZW5zb3JmbG93L2Nv",
+ "cmUvZnJhbWV3b3JrL3RlbnNvcl9zaGFwZS5wcm90bxoldGVuc29yZmxvdy9j",
+ "b3JlL2ZyYW1ld29yay90eXBlcy5wcm90byKoAQoRVGVuc29yRGVzY3JpcHRp",
"b24SIwoFZHR5cGUYASABKA4yFC50ZW5zb3JmbG93LkRhdGFUeXBlEisKBXNo",
"YXBlGAIgASgLMhwudGVuc29yZmxvdy5UZW5zb3JTaGFwZVByb3RvEkEKFmFs",
"bG9jYXRpb25fZGVzY3JpcHRpb24YBCABKAsyIS50ZW5zb3JmbG93LkFsbG9j",
- "YXRpb25EZXNjcmlwdGlvbkJ3ChhvcmcudGVuc29yZmxvdy5mcmFtZXdvcmtC",
- "F1RlbnNvckRlc2NyaXB0aW9uUHJvdG9zUAFaPWdpdGh1Yi5jb20vdGVuc29y",
- "Zmxvdy90ZW5zb3JmbG93L3RlbnNvcmZsb3cvZ28vY29yZS9mcmFtZXdvcmv4",
- "AQFiBnByb3RvMw=="));
+ "YXRpb25EZXNjcmlwdGlvbkKTAQoYb3JnLnRlbnNvcmZsb3cuZnJhbWV3b3Jr",
+ "QhdUZW5zb3JEZXNjcmlwdGlvblByb3Rvc1ABWllnaXRodWIuY29tL3RlbnNv",
+ "cmZsb3cvdGVuc29yZmxvdy90ZW5zb3JmbG93L2dvL2NvcmUvZnJhbWV3b3Jr",
+ "L3RlbnNvcl9kZXNjcmlwdGlvbl9nb19wcm90b/gBAWIGcHJvdG8z"));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
- new pbr::FileDescriptor[] { global::Tensorflow.TypesReflection.Descriptor, global::Tensorflow.TensorShapeReflection.Descriptor, global::Tensorflow.AllocationDescriptionReflection.Descriptor, },
+ new pbr::FileDescriptor[] { global::Tensorflow.AllocationDescriptionReflection.Descriptor, global::Tensorflow.TensorShapeReflection.Descriptor, global::Tensorflow.TypesReflection.Descriptor, },
new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.TensorDescription), global::Tensorflow.TensorDescription.Parser, new[]{ "Dtype", "Shape", "AllocationDescription" }, null, null, null, null)
}));
diff --git a/src/TensorFlowNET.Core/Protobuf/TensorShape.cs b/src/TensorFlowNET.Core/Protobuf/TensorShape.cs
index fb275568..dec408f5 100644
--- a/src/TensorFlowNET.Core/Protobuf/TensorShape.cs
+++ b/src/TensorFlowNET.Core/Protobuf/TensorShape.cs
@@ -28,9 +28,10 @@ namespace Tensorflow {
"bxIKdGVuc29yZmxvdyJ6ChBUZW5zb3JTaGFwZVByb3RvEi0KA2RpbRgCIAMo",
"CzIgLnRlbnNvcmZsb3cuVGVuc29yU2hhcGVQcm90by5EaW0SFAoMdW5rbm93",
"bl9yYW5rGAMgASgIGiEKA0RpbRIMCgRzaXplGAEgASgDEgwKBG5hbWUYAiAB",
- "KAlCcQoYb3JnLnRlbnNvcmZsb3cuZnJhbWV3b3JrQhFUZW5zb3JTaGFwZVBy",
- "b3Rvc1ABWj1naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yZmxvdy90ZW5z",
- "b3JmbG93L2dvL2NvcmUvZnJhbWV3b3Jr+AEBYgZwcm90bzM="));
+ "KAlChwEKGG9yZy50ZW5zb3JmbG93LmZyYW1ld29ya0IRVGVuc29yU2hhcGVQ",
+ "cm90b3NQAVpTZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmZsb3cvdGVu",
+ "c29yZmxvdy9nby9jb3JlL2ZyYW1ld29yay90ZW5zb3Jfc2hhcGVfZ29fcHJv",
+ "dG/4AQFiBnByb3RvMw=="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { },
new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
diff --git a/src/TensorFlowNET.Core/Protobuf/TensorSlice.cs b/src/TensorFlowNET.Core/Protobuf/TensorSlice.cs
index 06b2e12a..fe505f71 100644
--- a/src/TensorFlowNET.Core/Protobuf/TensorSlice.cs
+++ b/src/TensorFlowNET.Core/Protobuf/TensorSlice.cs
@@ -28,9 +28,10 @@ namespace Tensorflow {
"bxIKdGVuc29yZmxvdyKAAQoQVGVuc29yU2xpY2VQcm90bxIzCgZleHRlbnQY",
"ASADKAsyIy50ZW5zb3JmbG93LlRlbnNvclNsaWNlUHJvdG8uRXh0ZW50GjcK",
"BkV4dGVudBINCgVzdGFydBgBIAEoAxIQCgZsZW5ndGgYAiABKANIAEIMCgpo",
- "YXNfbGVuZ3RoQnEKGG9yZy50ZW5zb3JmbG93LmZyYW1ld29ya0IRVGVuc29y",
- "U2xpY2VQcm90b3NQAVo9Z2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmZs",
- "b3cvdGVuc29yZmxvdy9nby9jb3JlL2ZyYW1ld29ya/gBAWIGcHJvdG8z"));
+ "YXNfbGVuZ3RoQocBChhvcmcudGVuc29yZmxvdy5mcmFtZXdvcmtCEVRlbnNv",
+ "clNsaWNlUHJvdG9zUAFaU2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jm",
+ "bG93L3RlbnNvcmZsb3cvZ28vY29yZS9mcmFtZXdvcmsvdGVuc29yX3NsaWNl",
+ "X2dvX3Byb3Rv+AEBYgZwcm90bzM="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { },
new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
diff --git a/src/TensorFlowNET.Core/Protobuf/TrackableObjectGraph.cs b/src/TensorFlowNET.Core/Protobuf/TrackableObjectGraph.cs
index 97cd0027..036f8275 100644
--- a/src/TensorFlowNET.Core/Protobuf/TrackableObjectGraph.cs
+++ b/src/TensorFlowNET.Core/Protobuf/TrackableObjectGraph.cs
@@ -39,8 +39,9 @@ namespace Tensorflow {
"bGxfbmFtZRgCIAEoCRIWCg5jaGVja3BvaW50X2tleRgDIAEoCRIYChBvcHRp",
"b25hbF9yZXN0b3JlGAQgASgIGmwKFVNsb3RWYXJpYWJsZVJlZmVyZW5jZRIh",
"ChlvcmlnaW5hbF92YXJpYWJsZV9ub2RlX2lkGAEgASgFEhEKCXNsb3RfbmFt",
- "ZRgCIAEoCRIdChVzbG90X3ZhcmlhYmxlX25vZGVfaWQYAyABKAVCA/gBAWIG",
- "cHJvdG8z"));
+ "ZRgCIAEoCRIdChVzbG90X3ZhcmlhYmxlX25vZGVfaWQYAyABKAVCTVpIZ2l0",
+ "aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmZsb3cvdGVuc29yZmxvdy9nby9j",
+ "b3JlL2NvcmVfcHJvdG9zX2dvX3Byb3Rv+AEBYgZwcm90bzM="));
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 e21e4614..6483cddf 100644
--- a/src/TensorFlowNET.Core/Protobuf/Types.cs
+++ b/src/TensorFlowNET.Core/Protobuf/Types.cs
@@ -43,9 +43,10 @@ namespace Tensorflow {
"X1JFRhB0EhEKDURUX1VJTlQxNl9SRUYQdRIVChFEVF9DT01QTEVYMTI4X1JF",
"RhB2Eg8KC0RUX0hBTEZfUkVGEHcSEwoPRFRfUkVTT1VSQ0VfUkVGEHgSEgoO",
"RFRfVkFSSUFOVF9SRUYQeRIRCg1EVF9VSU5UMzJfUkVGEHoSEQoNRFRfVUlO",
- "VDY0X1JFRhB7QmsKGG9yZy50ZW5zb3JmbG93LmZyYW1ld29ya0ILVHlwZXNQ",
- "cm90b3NQAVo9Z2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmZsb3cvdGVu",
- "c29yZmxvdy9nby9jb3JlL2ZyYW1ld29ya/gBAWIGcHJvdG8z"));
+ "VDY0X1JFRhB7QnoKGG9yZy50ZW5zb3JmbG93LmZyYW1ld29ya0ILVHlwZXNQ",
+ "cm90b3NQAVpMZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmZsb3cvdGVu",
+ "c29yZmxvdy9nby9jb3JlL2ZyYW1ld29yay90eXBlc19nb19wcm90b/gBAWIG",
+ "cHJvdG8z"));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { },
new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Tensorflow.DataType), }, null, null));
diff --git a/src/TensorFlowNET.Core/Protobuf/Variable.cs b/src/TensorFlowNET.Core/Protobuf/Variable.cs
index b6548acb..145c3625 100644
--- a/src/TensorFlowNET.Core/Protobuf/Variable.cs
+++ b/src/TensorFlowNET.Core/Protobuf/Variable.cs
@@ -42,9 +42,10 @@ namespace Tensorflow {
"ZWdhdGlvbhIdChlWQVJJQUJMRV9BR0dSRUdBVElPTl9OT05FEAASHAoYVkFS",
"SUFCTEVfQUdHUkVHQVRJT05fU1VNEAESHQoZVkFSSUFCTEVfQUdHUkVHQVRJ",
"T05fTUVBThACEisKJ1ZBUklBQkxFX0FHR1JFR0FUSU9OX09OTFlfRklSU1Rf",
- "UkVQTElDQRADQm4KGG9yZy50ZW5zb3JmbG93LmZyYW1ld29ya0IOVmFyaWFi",
- "bGVQcm90b3NQAVo9Z2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmZsb3cv",
- "dGVuc29yZmxvdy9nby9jb3JlL2ZyYW1ld29ya/gBAWIGcHJvdG8z"));
+ "UkVQTElDQRADQoABChhvcmcudGVuc29yZmxvdy5mcmFtZXdvcmtCDlZhcmlh",
+ "YmxlUHJvdG9zUAFaT2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3JmbG93",
+ "L3RlbnNvcmZsb3cvZ28vY29yZS9mcmFtZXdvcmsvdmFyaWFibGVfZ29fcHJv",
+ "dG/4AQFiBnByb3RvMw=="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { },
new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Tensorflow.VariableSynchronization), typeof(global::Tensorflow.VariableAggregation), }, null, new pbr::GeneratedClrTypeInfo[] {
diff --git a/src/TensorFlowNET.Core/Protobuf/VerifierConfig.cs b/src/TensorFlowNET.Core/Protobuf/VerifierConfig.cs
index 738fc147..07431234 100644
--- a/src/TensorFlowNET.Core/Protobuf/VerifierConfig.cs
+++ b/src/TensorFlowNET.Core/Protobuf/VerifierConfig.cs
@@ -28,10 +28,10 @@ namespace Tensorflow {
"b3RvEgp0ZW5zb3JmbG93IpsBCg5WZXJpZmllckNvbmZpZxIiChp2ZXJpZmlj",
"YXRpb25fdGltZW91dF9pbl9tcxgBIAEoAxI9ChJzdHJ1Y3R1cmVfdmVyaWZp",
"ZXIYAiABKA4yIS50ZW5zb3JmbG93LlZlcmlmaWVyQ29uZmlnLlRvZ2dsZSIm",
- "CgZUb2dnbGUSCwoHREVGQVVMVBAAEgYKAk9OEAESBwoDT0ZGEAJCcwoYb3Jn",
+ "CgZUb2dnbGUSCwoHREVGQVVMVBAAEgYKAk9OEAESBwoDT0ZGEAJCfwoYb3Jn",
"LnRlbnNvcmZsb3cuZnJhbWV3b3JrQhRWZXJpZmllckNvbmZpZ1Byb3Rvc1AB",
- "WjxnaXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yZmxvdy90ZW5zb3JmbG93",
- "L2dvL2NvcmUvcHJvdG9idWb4AQFiBnByb3RvMw=="));
+ "WkhnaXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yZmxvdy90ZW5zb3JmbG93",
+ "L2dvL2NvcmUvY29yZV9wcm90b3NfZ29fcHJvdG/4AQFiBnByb3RvMw=="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { },
new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
diff --git a/src/TensorFlowNET.Core/Protobuf/Versions.cs b/src/TensorFlowNET.Core/Protobuf/Versions.cs
index d98b4e12..3cd00765 100644
--- a/src/TensorFlowNET.Core/Protobuf/Versions.cs
+++ b/src/TensorFlowNET.Core/Protobuf/Versions.cs
@@ -26,10 +26,10 @@ namespace Tensorflow {
string.Concat(
"Cih0ZW5zb3JmbG93L2NvcmUvZnJhbWV3b3JrL3ZlcnNpb25zLnByb3RvEgp0",
"ZW5zb3JmbG93IksKClZlcnNpb25EZWYSEAoIcHJvZHVjZXIYASABKAUSFAoM",
- "bWluX2NvbnN1bWVyGAIgASgFEhUKDWJhZF9jb25zdW1lcnMYAyADKAVCbgoY",
- "b3JnLnRlbnNvcmZsb3cuZnJhbWV3b3JrQg5WZXJzaW9uc1Byb3Rvc1ABWj1n",
- "aXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yZmxvdy90ZW5zb3JmbG93L2dv",
- "L2NvcmUvZnJhbWV3b3Jr+AEBYgZwcm90bzM="));
+ "bWluX2NvbnN1bWVyGAIgASgFEhUKDWJhZF9jb25zdW1lcnMYAyADKAVCgAEK",
+ "GG9yZy50ZW5zb3JmbG93LmZyYW1ld29ya0IOVmVyc2lvbnNQcm90b3NQAVpP",
+ "Z2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmZsb3cvdGVuc29yZmxvdy9n",
+ "by9jb3JlL2ZyYW1ld29yay92ZXJzaW9uc19nb19wcm90b/gBAWIGcHJvdG8z"));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { },
new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {