From 166ec9273bed0a66428f96ef712468ce6f1f15a0 Mon Sep 17 00:00:00 2001 From: Adam Pocock Date: Tue, 6 Apr 2021 11:00:21 -0400 Subject: [PATCH 1/3] Fixing SavedModelBundleTest.pythonTfFunction. --- .../org/tensorflow/SavedModelBundleTest.java | 15 ++++++++++----- .../model/saved_model.pb | Bin 19119 -> 19241 bytes .../saved_model_using_python/source_model.py | 12 ++++++++---- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/tensorflow-core/tensorflow-core-api/src/test/java/org/tensorflow/SavedModelBundleTest.java b/tensorflow-core/tensorflow-core-api/src/test/java/org/tensorflow/SavedModelBundleTest.java index ff93e317805..032c835c0cc 100644 --- a/tensorflow-core/tensorflow-core-api/src/test/java/org/tensorflow/SavedModelBundleTest.java +++ b/tensorflow-core/tensorflow-core-api/src/test/java/org/tensorflow/SavedModelBundleTest.java @@ -290,7 +290,7 @@ public void pythonTfFunction() { * Signature name used for saving 'add', argument names 'a' and 'b' */ ConcreteFunction add = bundle.function("add"); - Map args = new HashMap(); + Map args = new HashMap<>(); try (TFloat32 a = TFloat32.scalarOf(10.0f); TFloat32 b = TFloat32.scalarOf(15.5f)) { args.put("a", a); @@ -301,14 +301,19 @@ public void pythonTfFunction() { assertEquals(25.5f, c.getFloat()); } } + args.clear(); // variable unwrapping happens in Session, which is used by ConcreteFunction.call ConcreteFunction getVariable = bundle.function("get_variable"); - try (TFloat32 v = (TFloat32) getVariable.call(new HashMap<>()) - .get(getVariable.signature().outputNames().iterator().next())) { - assertEquals(2f, v.getFloat()); + try (TFloat32 dummy = TFloat32.scalarOf(1.0f)) { + args.put("dummy",dummy); + // TF functions always require an input, so we supply a dummy one here + // This test actually checks that resource variables can be loaded correctly. + try (TFloat32 v = (TFloat32) getVariable.call(args) + .get(getVariable.signature().outputNames().iterator().next())) { + assertEquals(2f, v.getFloat()); + } } - } } diff --git a/tensorflow-core/tensorflow-core-api/src/test/resources/saved_model_using_python/model/saved_model.pb b/tensorflow-core/tensorflow-core-api/src/test/resources/saved_model_using_python/model/saved_model.pb index d9498dd4b74db0225ba8436f188f8076b614fc46..5b030a151cdf34c9947ed3baeed06a1063a356ff 100644 GIT binary patch literal 19241 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 M$I)(gUQzh}A5=y&g#Z8m literal 19119 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 Date: Tue, 6 Apr 2021 11:08:28 -0400 Subject: [PATCH 2/3] Fixed 3 javadoc errors in tensorflow-core-api's hand written code. --- .../src/main/java/org/tensorflow/TensorMapper.java | 2 +- .../src/main/java/org/tensorflow/op/core/Zeros.java | 4 ++-- .../src/main/java/org/tensorflow/types/family/TType.java | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/TensorMapper.java b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/TensorMapper.java index 2c67fcac807..9896f55b55b 100644 --- a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/TensorMapper.java +++ b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/TensorMapper.java @@ -26,7 +26,7 @@ *

Usage of this class is reserved for internal purposes only. * * @param tensor type mapped by this object - * @see {@link TType} + * @see TType */ public abstract class TensorMapper { diff --git a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/core/Zeros.java b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/core/Zeros.java index 5fdfc948381..bb6f693a9c6 100644 --- a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/core/Zeros.java +++ b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/core/Zeros.java @@ -30,9 +30,9 @@ * An operator creating a constant initialized with zeros of the shape given by `dims`. * *

For example, the following expression - *

{@code tf.zeros(tf.constant(shape), TFloat32.class)
+ *
{@code tf.zeros(tf.constant(shape), TFloat32.class)}
* is the equivalent of - *
{@code tf.fill(tf.constant(shape), tf.constant(0.0f))
+ *
{@code tf.fill(tf.constant(shape), tf.constant(0.0f))}
* * @param constant type */ diff --git a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/family/TType.java b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/family/TType.java index 2fc423b914e..9349fbb59ea 100644 --- a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/family/TType.java +++ b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/family/TType.java @@ -28,7 +28,7 @@ * *

Subinterfaces of {@code TType} are propagated as a generic parameter to various entities of * TensorFlow to identify the type of the tensor they carry. For example, a - * {@link org.tensorflow.Operand Operand} is an operand which outputs a 32-bit floating + * {@link org.tensorflow.Operand Operand<TFloat32>} is an operand which outputs a 32-bit floating * point tensor. This parameter ensure type-compatibility between operands of a computation at * compile-time. For example: * From f3fb5cc4fa3142a1022086c504397c73b4e12bfe Mon Sep 17 00:00:00 2001 From: Adam Pocock Date: Tue, 6 Apr 2021 12:58:50 -0400 Subject: [PATCH 3/3] Changing the surefire parameters for tensorflow-core-api. --- tensorflow-core/tensorflow-core-api/pom.xml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tensorflow-core/tensorflow-core-api/pom.xml b/tensorflow-core/tensorflow-core-api/pom.xml index 5941659a2af..e2c8e06725a 100644 --- a/tensorflow-core/tensorflow-core-api/pom.xml +++ b/tensorflow-core/tensorflow-core-api/pom.xml @@ -388,8 +388,10 @@ - - + + ${project.build.directory}/${project.artifactId}-${project.version}-${native.classifier}.jar