From ef0ce67a2e79628380729cf16fb0cd4d99cbe6a3 Mon Sep 17 00:00:00 2001 From: Jim Clarke Date: Tue, 28 Jul 2020 16:26:34 -0400 Subject: [PATCH 01/33] Initial checkin of Keras Optimzers and helper classes. Fixed dependencies in pom.xml --- tensorflow-keras/pom.xml | 140 ++- .../java/org/tensorflow/keras/backend/K.java | 713 +++++++++++ .../keras/backend/tf/ConfusionMatrix.java | 193 +++ .../keras/backend/tf/ControlDependencies.java | 84 ++ .../org/tensorflow/keras/backend/tf/NN.java | 134 +++ .../keras/backend/tf/SparseTensor.java | 64 + .../tensorflow/keras/backend/tf/Tuple.java | 109 ++ .../keras/backend/tf/WeightsBroadcastOps.java | 158 +++ .../tensorflow/keras/optimizer/AdaDelta.java | 202 ++++ .../tensorflow/keras/optimizer/AdaGrad.java | 167 +++ .../tensorflow/keras/optimizer/AdaGradDA.java | 191 +++ .../org/tensorflow/keras/optimizer/Adam.java | 182 +++ .../tensorflow/keras/optimizer/Adamax.java | 283 +++++ .../org/tensorflow/keras/optimizer/Ftrl.java | 360 ++++++ .../org/tensorflow/keras/optimizer/Nadam.java | 402 +++++++ .../keras/optimizer/OptimizerInterface.java | 59 + .../keras/optimizer/Optimizers.java | 124 ++ .../tensorflow/keras/optimizer/RMSProp.java | 201 ++++ .../org/tensorflow/keras/optimizer/SGD.java | 199 +++ .../java/org/tensorflow/keras/utils/ND.java | 717 +++++++++++ .../keras/utils/PlaceholderStringFormat.java | 81 ++ .../tensorflow/keras/utils/PrintUtils.java | 152 +++ .../tensorflow/keras/utils/ProgressBar.java | 311 +++++ .../tensorflow/keras/utils/ShapeUtils.java | 110 ++ .../org/tensorflow/keras/utils/SmartCond.java | 107 ++ .../tensorflow/keras/utils/SymbolicShape.java | 92 ++ .../keras/utils/SymbolicShapeDict.java | 58 + .../org/tensorflow/keras/utils/TypeUtils.java | 98 ++ .../keras/optimizers/AdaDeltaTest.java | 226 ++++ .../keras/optimizers/AdaGradDATest.java | 126 ++ .../keras/optimizers/AdaGradTest.java | 170 +++ .../tensorflow/keras/optimizers/AdamTest.java | 263 ++++ .../keras/optimizers/AdamaxTest.java | 242 ++++ .../tensorflow/keras/optimizers/FtrlTest.java | 352 ++++++ .../keras/optimizers/NadamTest.java | 286 +++++ .../keras/optimizers/RMSPropTest.java | 307 +++++ .../tensorflow/keras/optimizers/SGDTest.java | 227 ++++ .../keras/utils/EagerTestSession.java | 747 ++++++++++++ .../keras/utils/GraphTestSession.java | 1066 +++++++++++++++++ .../tensorflow/keras/utils/SmartCondTest.java | 247 ++++ .../tensorflow/keras/utils/TestSession.java | 618 ++++++++++ .../tensorflow/keras/utils/TypeUtilTest.java | 234 ++++ 42 files changed, 10760 insertions(+), 42 deletions(-) create mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/backend/K.java create mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/ConfusionMatrix.java create mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/ControlDependencies.java create mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/NN.java create mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/SparseTensor.java create mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/Tuple.java create mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/WeightsBroadcastOps.java create mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/AdaDelta.java create mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/AdaGrad.java create mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/AdaGradDA.java create mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/Adam.java create mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/Adamax.java create mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/Ftrl.java create mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/Nadam.java create mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/OptimizerInterface.java create mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/Optimizers.java create mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/RMSProp.java create mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/SGD.java create mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/utils/ND.java create mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/utils/PlaceholderStringFormat.java create mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/utils/PrintUtils.java create mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/utils/ProgressBar.java create mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/utils/ShapeUtils.java create mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/utils/SmartCond.java create mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/utils/SymbolicShape.java create mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/utils/SymbolicShapeDict.java create mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/utils/TypeUtils.java create mode 100644 tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaDeltaTest.java create mode 100644 tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaGradDATest.java create mode 100644 tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaGradTest.java create mode 100644 tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdamTest.java create mode 100644 tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdamaxTest.java create mode 100644 tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/FtrlTest.java create mode 100644 tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/NadamTest.java create mode 100644 tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/RMSPropTest.java create mode 100644 tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/SGDTest.java create mode 100644 tensorflow-keras/src/test/java/org/tensorflow/keras/utils/EagerTestSession.java create mode 100644 tensorflow-keras/src/test/java/org/tensorflow/keras/utils/GraphTestSession.java create mode 100644 tensorflow-keras/src/test/java/org/tensorflow/keras/utils/SmartCondTest.java create mode 100644 tensorflow-keras/src/test/java/org/tensorflow/keras/utils/TestSession.java create mode 100644 tensorflow-keras/src/test/java/org/tensorflow/keras/utils/TypeUtilTest.java diff --git a/tensorflow-keras/pom.xml b/tensorflow-keras/pom.xml index 4dd41d6a36b..c314b53bcc0 100644 --- a/tensorflow-keras/pom.xml +++ b/tensorflow-keras/pom.xml @@ -14,53 +14,109 @@ limitations under the License. ======================================================================= --> - + - 4.0.0 + 4.0.0 - - org.tensorflow - tensorflow-java - 0.2.0-SNAPSHOT - - tensorflow-keras - jar + + org.tensorflow + tensorflow-java + 0.2.0-SNAPSHOT + + tensorflow-keras + jar - TensorFlow Keras Library - Java implementation of the TensorFlow Keras API + TensorFlow Keras Library + + + + Java implementation of the TensorFlow Keras API - - - org.junit.jupiter - junit-jupiter-api - test - - - org.junit.jupiter - junit-jupiter-engine - test - - + + + org.tensorflow + tensorflow-core-api + ${project.version} + + + org.tensorflow + tensorflow-core-generator + ${project.version} + + + org.tensorflow + tensorflow-framework + ${project.version} + + + org.tensorflow + ndarray + ${project.version} + + + + com.google.protobuf + protobuf-java + 3.11.4 + - - - - org.apache.maven.plugins - maven-surefire-plugin - 2.22.2 - - 1 - false - -Xmx2G -XX:MaxPermSize=256m - false - - **/*Test.java - - - - - + + org.json + json + 20190722 + + + + org.apache.commons + commons-csv + 1.8 + + + + org.tensorflow + tensorflow-core-platform + ${project.version} + + + org.junit.jupiter + junit-jupiter-api + test + + + org.junit.jupiter + junit-jupiter-engine + test + + + + + org.tensorflow + tensorflow-core-platform${javacpp.platform.extension} + ${project.version} + test + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.22.2 + + 1 + false + -Xmx2G -XX:MaxPermSize=256m + false + + **/*Test.java + + + + + diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/K.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/K.java new file mode 100644 index 00000000000..51a5fdaa5ff --- /dev/null +++ b/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/K.java @@ -0,0 +1,713 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.backend; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import org.tensorflow.DataType; +import org.tensorflow.EagerSession; +import org.tensorflow.ExecutionEnvironment; +import org.tensorflow.Graph; +import org.tensorflow.Operand; +import org.tensorflow.Session; +import org.tensorflow.Tensor; +import org.tensorflow.keras.backend.tf.ConfusionMatrix; +import org.tensorflow.keras.backend.tf.NN; +import org.tensorflow.keras.backend.tf.Tuple; +import org.tensorflow.ndarray.NdArraySequence; +import org.tensorflow.ndarray.Shape; +import org.tensorflow.op.Ops; +import org.tensorflow.op.core.ReduceSum; +import org.tensorflow.op.core.Squeeze; +import org.tensorflow.op.core.Variable; +import org.tensorflow.op.math.Mean; +import org.tensorflow.op.nn.SoftmaxCrossEntropyWithLogits; +import org.tensorflow.types.TBfloat16; +import org.tensorflow.types.TBool; +import org.tensorflow.types.TFloat16; +import org.tensorflow.types.TFloat32; +import org.tensorflow.types.TFloat64; +import org.tensorflow.types.TInt32; +import org.tensorflow.types.TInt64; +import org.tensorflow.types.TUint8; +import org.tensorflow.types.family.TNumber; +import org.tensorflow.types.family.TType; + +/** Keras backend methods */ +public class K { + + public static final double Epsilon = 1e-7; + public static final float EpsilonF = 1e-7F; + + public static final double epsilon() { + return Epsilon; + } + + public static final Operand epsilonConstant(Ops tf) { + return tf.constant(Epsilon); + } + + public static final Operand epsilonConstant(Ops tf, DataType dtype) { + return tf.dtypes.cast(tf.constant(Epsilon), dtype); + } + + public static final Operand one(Ops tf) { + return tf.constant(1); + } + + public static final Operand one(Ops tf, DataType dtype) { + return tf.dtypes.cast(tf.constant(1), dtype); + } + + public static final Operand minusOne(Ops tf) { + return tf.constant(-1); + } + + public static final Operand minusOne(Ops tf, DataType dtype) { + return tf.dtypes.cast(tf.constant(-1), dtype); + } + + public static final Operand zero(Ops tf) { + return tf.constant(0); + } + + public static final Operand zero(Ops tf, DataType dtype) { + return tf.dtypes.cast(tf.constant(0), dtype); + } + + public static final Operand constant(Ops tf, double number, DataType dtype) { + return tf.dtypes.cast(tf.constant(number), dtype); + } + + public static Operand clip(Ops tf, Operand x, double minValue, double maxValue) { + assert x != null : "Operand x must not be null"; + DataType dtype = x.asOutput().dataType(); + if (maxValue < minValue) { + double tmp = maxValue; + maxValue = minValue; + minValue = tmp; + } + Operand minValueConstant = tf.dtypes.cast(tf.constant(minValue), dtype); + Operand maxValueConstant = tf.dtypes.cast(tf.constant(maxValue), dtype); + return tf.clipByValue(x, minValueConstant, maxValueConstant); + } + + public static Operand mean(Ops tf, Operand x) { + return mean(tf, x, null, false); + } + + public static Operand mean(Ops tf, Operand x, Operand axis) { + return mean(tf, x, axis, false); + } + + public static Operand mean(Ops tf, Operand x, boolean keepDims) { + return mean(tf, x, null, keepDims); + } + + public static Operand mean(Ops tf, Operand x, Operand axis, boolean keepDims) { + if (x.asOutput().dataType() == TBool.DTYPE) { + x = tf.dtypes.cast(x, TFloat32.DTYPE); + } + if (axis == null) { + axis = allAxis(tf, x); + } + return tf.math.mean(x, axis, Mean.keepDims(keepDims)); + } + + // alias for mean + public static Operand reduceMean(Ops tf, Operand x, Operand axis, boolean keepDims) { + return mean(tf, x, axis, keepDims); + } + + public static Operand maximum(Ops tf, Operand x, Operand y) { + y = tf.dtypes.cast(y, x.asOutput().dataType()); + return tf.math.maximum(x, y); + } + + public static Operand sqrt(Ops tf, Operand x) { + DataType dType = x.asOutput().dataType(); + Operand zero = tf.dtypes.cast(tf.constant(0), dType); + Operand inf = tf.dtypes.cast(tf.constant(Float.POSITIVE_INFINITY), dType); + x = tf.clipByValue(x, zero, inf); + return tf.math.sqrt(x); + } + + public static Shape merge(Shape a, Shape b) { + assert a.numDimensions() == b.numDimensions() + : String.format("Shapes %s and %s are incompatible", a, b); + long[] array = new long[a.numDimensions()]; + for (int i = 0; i < a.numDimensions(); i++) { + if (a.size(i) != Shape.UNKNOWN_SIZE) { + if (b.size(i) != Shape.UNKNOWN_SIZE) { + assert a.size(i) == b.size(i) : String.format("Shapes %s and %s are incompatible", a, b); + } + array[i] = a.size(i); + } else { + array[i] = b.size(i); + } + } + return Shape.of(array); + } + + // this is from nn in Python, I could not find it in the Java frameworks. + public static Operand sigmoidCrossEntropyWithLogits(Ops tf, Operand labels, Operand logits) { + Shape lablesShape = labels.asOutput().shape(); + Shape logitsShape = logits.asOutput().shape(); + Shape newShape = merge(lablesShape, logitsShape); + + Operand zeros = tf.dtypes.cast(tf.zerosLike(logits), logits.asOutput().dataType()); + Operand cond = tf.math.greaterEqual(logits, zeros); + + Operand relu_logits = tf.select(cond, logits, zeros); + Operand neg_abs_logits = tf.select(cond, tf.math.neg(logits), logits); + return tf.math.add( + tf.math.sub(relu_logits, tf.math.mul(logits, labels)), + tf.math.log1p(tf.math.exp(neg_abs_logits))); + } + + // TODO need to walk back identity until it hits something else + // not sure how to get the input nodes for the Operand. + private static Operand backtrackIdentity(Operand output) { + // while(!output.op().type().equals("Identity")) + // output = output.op().output(0); + return output; + } + + public static Operand binary_crossentropy( + Ops tf, Operand target, Operand output, boolean fromLogits) { + if (fromLogits) { + return sigmoidCrossEntropyWithLogits(tf, target, output); + } + + if (!(output instanceof Variable) && (!tf.scope().env().isEager())) { + // output = backtrackIdentity(output); // TODO - this does not work, goes infinite loop + if (output.op().type().equals("Sigmoid")) { + assert output.op().numOutputs() == 1; + output = output.op().output(0); + return sigmoidCrossEntropyWithLogits(tf, target, output); + } + } + DataType dtype = output.asOutput().dataType(); + Operand one = one(tf, dtype); + Operand epsilonConst = K.epsilonConstant(tf, dtype); + Operand oneMinusEpsilonConst = tf.math.sub(one, epsilonConst); + output = tf.clipByValue(output, epsilonConst, oneMinusEpsilonConst); + + // Compute cross entropy from probabilities. + Operand bce = tf.math.mul(target, tf.math.log(tf.math.add(output, epsilonConst))); + bce = + tf.math.add( + bce, + tf.math.mul( + tf.math.sub(one, target), + tf.math.log(tf.math.add(tf.math.sub(one, output), epsilonConst)))); + Operand result = tf.math.neg(bce); + return result; + } + + public static Operand categorical_crossentropy( + Ops tf, Operand target, Operand output, boolean fromLogits) { + return categorical_crossentropy(tf, target, output, fromLogits, -1); + } + + public static Operand categorical_crossentropy( + Ops tf, Operand target, Operand output, boolean fromLogits, int axis) { + + if (fromLogits) { + return softmax_cross_entropy_with_logits(tf, target, output); + } + if (!(output instanceof Variable) && (!tf.scope().env().isEager())) { + // TODO output = backtrackIdentity(output); doesn't seem to work with Java version. + if (output.op().type().equals("Softmax")) { + assert output.op().numOutputs() == 1; + output = output.op().output(0); + Operand op = softmax_cross_entropy_with_logits(tf, target, output); + return op; + } + } + DataType dtype = output.asOutput().dataType(); + Operand one = one(tf, dtype); + Operand epsilonConst = K.epsilonConstant(tf, dtype); + Operand oneMinusepsilonConst = tf.math.sub(one, epsilonConst); + output = + tf.math.div( + output, tf.reduceSum(output, tf.constant(axis), ReduceSum.keepDims(Boolean.TRUE))); + output = tf.clipByValue(output, epsilonConst, oneMinusepsilonConst); + + // Compute cross entropy from probabilities. + Operand cce = + tf.reduceSum( + tf.math.mul(target, tf.math.log(output)), + tf.constant(axis), + ReduceSum.keepDims(Boolean.FALSE)); + return tf.math.neg(cce); + } + + public static Operand flatten(Ops tf, Operand t) { + Shape shape = Shape.of(1L); + return tf.reshape(t, tf.constant(shape)); + } + + public static Operand sparse_categorical_crossentropy( + Ops tf, Operand target, Operand output, boolean fromLogits, int axis) { + DataType dType = output.asOutput().dataType(); + if (!(output instanceof Variable) && (!tf.scope().env().isEager())) { + // TODO output = backtrackIdentity(output); doesn't seem to work with Java version. + if (output.op().type().equals("Softmax")) { + // assert output.op().numOutputs() == 1; + // When softmax activation function is used for output operation, we + // use logits from the softmax function directly to compute loss in order + // to prevent collapsing zero when training. + // TODO assert len(output.op.inputs) == 1 + // TODO output = output.op.inputs[0] + fromLogits = true; + } + } + if (!fromLogits) { + Operand epsilonConst = epsilonConstant(tf, dType); + Operand one = one(tf, dType); + Operand oneMinusEpsilonConst = tf.math.sub(one, epsilonConst); + output = tf.clipByValue(output, epsilonConst, oneMinusEpsilonConst); + output = tf.math.log(output); + } + Shape outputShape = output.asOutput().shape(); + int outputRank = outputShape.numDimensions(); + axis %= outputRank; + if (axis < 0) { + axis += outputRank; + } + if (axis != outputRank - 1) { + int[] axisNew = moveAxisToEnd(axis, outputRank); + output = tf.linalg.transpose(output, tf.constant(axisNew)); + } + + target = tf.dtypes.cast(target, TInt64.DTYPE); + // TODO Try to adjust the shape so that rank of labels = rank of logits - 1. + outputShape = output.asOutput().shape(); + Shape targetShape = target.asOutput().shape(); + int targetRank = targetShape.numDimensions(); + + boolean updateShape = targetRank != outputRank - 1; + if (updateShape) { // TODO check to see if this is right + target = tf.reshape(target, tf.constant(-1L)); // flatten + output = + tf.reshape( + output, + tf.constant(new long[] {-1L, outputShape.size(outputShape.numDimensions() - 1)})); + } + + // call nn.nn.sparse_softmax_cross_entropy_with_logits_v2 + Operand loss = NN.sparse_softmax_cross_entropy_with_logits(tf, target, output); + if (updateShape && outputRank >= 3) { + long[] dims = outputShape.asArray(); + long[] newDims = new long[dims.length - 1]; + System.arraycopy(dims, 0, newDims, 0, newDims.length); + loss = tf.reshape(loss, tf.constant(newDims)); + } + return loss; + } + + private static int[] allAxis(Operand op) { + int rank = op.asOutput().shape().numDimensions(); + int[] ranks = new int[rank]; + for (int i = 0; i < rank; i++) { + ranks[i] = i; + } + return ranks; + } + + public static Operand allAxis(Ops tf, Operand op) { + int[] ranks = allAxis(op); + return tf.constant(ranks); + } + + // TODO shouldn't these be in tensorflow itself under nn? + private static Operand moveDimToEnd( + Ops tf, Operand tensor, int dim_index, Operand rank) { + Operand one = one(tf, TInt32.DTYPE); + List> concatList = + Arrays.asList( + tf.range(tf.constant(dim_index), one, one), + tf.range(tf.constant(dim_index + 1), rank, one)); + return tf.linalg.transpose( + tensor, + (Operand) tf.concat((Iterable>) concatList, (Operand) tf.constant(0))); + } + + private static Operand flattenOuterDims( + Ops tf, Operand logits) { + Operand zero = zero(tf, TInt64.DTYPE); + Operand one = one(tf, TInt64.DTYPE); + Operand minusOne = tf.constant(-1); + + // Shape logitsShape = logits.asOutput().shape(); + // long lastDimSize = logitsShape.size(logitsShape.numDimensions()-1); + // if(!tf.scope().env().isEager()) { + Shape shape = logits.asOutput().shape(); + int ndims = shape.numDimensions(); + if (!shape.hasUnknownDimension()) { + long product = 1L; + boolean productValid = true; + for (int i = ndims - 2; i >= 0; i--) { + long d = shape.size(i); + if (d == Shape.UNKNOWN_SIZE) { + productValid = false; + break; + } + product *= d; + } + if (productValid) { + Shape outputShape = Shape.of(product, shape.size(ndims - 1)); + return tf.reshape(logits, tf.constant(outputShape.asArray())); + } + } + // } + + Operand rank = tf.dtypes.cast(tf.rank(logits), TInt64.DTYPE); + Operand rankMinusOne = tf.math.sub(rank, one); + + Operand last_dim_size = tf.slice(tf.shape(logits), rankMinusOne, tf.constant(1)); + Operand concat = + tf.concat(Arrays.asList(tf.constant(new int[] {-1}), last_dim_size), tf.constant(0)); + return tf.reshape(zero, concat); + } + + private static int[] moveAxisToEnd(int axis, int outputRank) { + int[] axisNew = new int[outputRank]; + for (int i = 0; i < axis; i++) { + axisNew[i] = i; + } + for (int i = axis + 1; i < outputRank; i++) { + axisNew[i - 1] = i; + } + axisNew[outputRank - 1] = axis; + return axisNew; + } + + // TODO, maybe part of Shape ?? + private static boolean shapeIsCompatible(Shape a, Shape b) { + if (a.numDimensions() != b.numDimensions()) { + return false; + } + for (int i = 0; i < a.numDimensions(); i++) { + long aSize = a.size(i); + long bSize = b.size(i); + if (aSize != Shape.UNKNOWN_SIZE && bSize != Shape.UNKNOWN_SIZE && aSize != bSize) { + return false; + } + } + return true; + } + + // TODO these are "nn" ops + public static Operand softmax_cross_entropy_with_logits(Ops tf, Operand labels, Operand logits) { + return softmax_cross_entropy_with_logits(tf, labels, logits, -1); + } + + public static Operand softmax_cross_entropy_with_logits( + Ops tf, Operand labels, Operand logits, int axis) { + axis = axis % logits.asOutput().shape().numDimensions(); + if (axis < 0) { + axis += logits.asOutput().shape().numDimensions(); + } + + Operand minusOne = tf.constant(-1); + Operand precise_logits = logits; + Operand one = tf.constant(1L); + + boolean convertToFloat32 = + logits.asOutput().dataType() == TFloat16.DTYPE + || logits.asOutput().dataType() == TBfloat16.DTYPE; + if (convertToFloat32) { + precise_logits = tf.dtypes.cast(logits, TFloat32.DTYPE); + } + DataType dtype = precise_logits.asOutput().dataType(); + labels = tf.dtypes.cast(labels, dtype); + Operand inputRank = tf.dtypes.cast(tf.rank(precise_logits), TInt64.DTYPE); + Operand inputRankMinusOne = tf.dtypes.cast(tf.math.sub(inputRank, one), TInt64.DTYPE); + Shape shape = logits.asOutput().shape(); + + // Move the dim to the end if dim is not the last dimension. + if (axis != -1 && axis != precise_logits.asOutput().shape().numDimensions() - 1) { + precise_logits = moveDimToEnd(tf, precise_logits, axis, inputRank); + labels = moveDimToEnd(tf, labels, axis, inputRank); + } + + Shape inputShape = precise_logits.asOutput().shape(); + precise_logits = flattenOuterDims(tf, precise_logits); + labels = flattenOuterDims(tf, labels); + SoftmaxCrossEntropyWithLogits smax = + tf.nn.softmaxCrossEntropyWithLogits(precise_logits, labels); + Operand cost = smax.loss(); + Operand outputShape = + tf.slice( + tf.constant(inputShape.asArray()), + tf.constant(new long[] {0}), + tf.constant(new long[] {inputShape.numDimensions() - 1})); + cost = tf.reshape(cost, outputShape); + if (tf.scope().env().isGraph() && !shape.hasUnknownDimension()) { + long[] array = shape.asArray(); + long[] newArray = new long[array.length - 1]; + if (axis < 0) { + axis = shape.numDimensions() + axis; + } + for (int i = 0; i < axis; i++) { + newArray[i] = shape.size(i); + } + for (int i = axis + 1; i < shape.numDimensions(); i++) { + newArray[i - 1] = shape.size(i); + } + Shape newShape = Shape.of(newArray); + cost = tf.reshape(cost, tf.constant(newShape.asArray())); + } + + if (convertToFloat32) { + cost = tf.dtypes.cast(cost, logits.asOutput().dataType()); + } + return cost; + } + + public static Operand map( + Operand input, Function, Operand> mapFunc) { + return null; + } + + public static long[] concatenate(long first, long... remaining) { + long[] dims = new long[remaining.length + 1]; + System.arraycopy(remaining, 0, dims, 1, remaining.length); + dims[0] = first; + return dims; + } + + private static Map> uidMap = new HashMap<>(); + + /** + * Associates a string prefix with an integer counter in a TensorFlow graph. + * + *

Example: + * + *

+   * get_uid('dense')
+   * 1
+   * get_uid('dense')
+   * 2
+   * 
+ * + * @param tf the TensorFlow Ops + * @param prefix String prefix to index. + * @return Unique integer ID. + */ + public static int getUid(Ops tf, String prefix) { + ExecutionEnvironment env = tf.scope().env(); + Map uids = uidMap.get(env); + if (uids == null) { + uids = new HashMap<>(); + uidMap.put(env, uids); + } + Integer id = uids.get(prefix); + if (id == null) { + id = 0; + } else { + id++; + } + + uids.put(prefix, id); + return id; + } + + /** + * returns the larger DataType between the two. + * + * @param a the first DataType to compare + * @param b the second DataType to compare + * @return the wider DataType + */ + public DataType wider(DataType a, DataType b) { + return a.byteSize() < b.byteSize() ? b : a; + } + + /** + * returns the smaller DataType between the two. + * + * @param a the first DataType to compare + * @param b the second DataType to compare + * @return the smaller DataType + */ + public DataType narrower(DataType a, DataType b) { + return a.byteSize() > b.byteSize() ? b : a; + } + + public NdArraySequence getTensorValue(Ops tf, Operand operand) { + DataType dtype = operand.asOutput().dataType(); + if (tf.scope().env().isGraph()) { + try (Session session = new Session((Graph) tf.scope().env())) { + if (dtype.equals(TInt32.DTYPE)) { + try (Tensor result = + session.runner().fetch(operand).run().get(0).expect(TInt32.DTYPE)) { + return result.data().scalars(); + } + } else if (dtype.equals(TInt64.DTYPE)) { + try (Tensor result = + session.runner().fetch(operand).run().get(0).expect(TInt64.DTYPE)) { + return result.data().scalars(); + } + } else if (dtype.equals(TUint8.DTYPE)) { + try (Tensor result = + session.runner().fetch(operand).run().get(0).expect(TUint8.DTYPE)) { + return result.data().scalars(); + } + } else if (dtype.equals(TBfloat16.DTYPE)) { + try (Tensor result = + session.runner().fetch(operand).run().get(0).expect(TBfloat16.DTYPE)) { + return result.data().scalars(); + } + } else if (dtype.equals(TFloat16.DTYPE)) { + try (Tensor result = + session.runner().fetch(operand).run().get(0).expect(TFloat16.DTYPE)) { + return result.data().scalars(); + } + } else if (dtype.equals(TFloat32.DTYPE)) { + try (Tensor result = + session.runner().fetch(operand).run().get(0).expect(TFloat32.DTYPE)) { + return result.data().scalars(); + } + } else if (dtype.equals(TFloat64.DTYPE)) { + try (Tensor result = + session.runner().fetch(operand).run().get(0).expect(TFloat64.DTYPE)) { + return result.data().scalars(); + } + } else { + return null; + } + } + } else { + try (EagerSession session = EagerSession.create()) { + if (dtype.equals(TInt32.DTYPE)) { + return ((Operand) operand).data().scalars(); + } else if (dtype.equals(TInt64.DTYPE)) { + return ((Operand) operand).data().scalars(); + } else if (dtype.equals(TUint8.DTYPE)) { + return ((Operand) operand).data().scalars(); + } else if (dtype.equals(TBfloat16.DTYPE)) { + return ((Operand) operand).data().scalars(); + } else if (dtype.equals(TFloat16.DTYPE)) { + return ((Operand) operand).data().scalars(); + } else if (dtype.equals(TFloat32.DTYPE)) { + return ((Operand) operand).data().scalars(); + } else if (dtype.equals(TFloat64.DTYPE)) { + return ((Operand) operand).data().scalars(); + } else { + return null; + } + } + } + } + + /** + * Squeeze or expand last dimension if needed. 1. Squeezes last dim of `y_pred` or `y_true` if + * their rank differs by 1 (using `confusion_matrix.remove_squeezable_dimensions`). 2. Squeezes or + * expands last dim of `sample_weight` if its rank differs by 1 from the new rank of `y_pred`. If + * `sample_weight` is scalar, it is kept scalar. + * + * @param tf the TensorVlow Ops + * @param yPred Predicted values, a `Tensor` of arbitrary dimensions. + * @param yTrue Optional label `Tensor` whose dimensions match `y_pred`. + * @return Tuple of `y_pred`, `y_true` and `sample_weight`. Each of them possibly has the last + * dimension squeezed, `sample_weight` could be extended by one dimension. If `sample_weight` + * is null, (y_pred, y_true) is returned. + */ + public static Tuple squeezeOrExpandDimensions(Ops tf, Operand yTrue, Operand yPred) { + return squeezeOrExpandDimensions(tf, yTrue, yPred, null); + } + + /** + * Squeeze or expand last dimension if needed. 1. Squeezes last dim of `y_pred` or `y_true` if + * their rank differs by 1 (using `confusion_matrix.remove_squeezable_dimensions`). 2. Squeezes or + * expands last dim of `sample_weight` if its rank differs by 1 from the new rank of `y_pred`. If + * `sample_weight` is scalar, it is kept scalar. + * + * @param tf the TensorVlow Ops + * @param yPred Predicted values, a `Tensor` of arbitrary dimensions. + * @param yTrue Optional label `Tensor` whose dimensions match `y_pred`. + * @param sampleWeight Optional weight scalar or `Tensor` whose dimensions match `y_pred`. + * @return Tuple of `y_pred`, `y_true` and `sample_weight`. Each of them possibly has the last + * dimension squeezed, `sample_weight` could be extended by one dimension. If `sample_weight` + * is null, (y_pred, y_true) is returned. + */ + public static Tuple squeezeOrExpandDimensions( + Ops tf, Operand yTrue, Operand yPred, Operand sampleWeight) { + Tuple tuple = new Tuple(yTrue, yPred); + Shape ypredShape = yPred.asOutput().shape(); + long ypredRank = ypredShape.numDimensions(); + + if (yTrue != null) { + Shape ytrueShape = yTrue.asOutput().shape(); + long ytrueRank = ytrueShape.numDimensions(); + if (ytrueRank != Shape.UNKNOWN_SIZE && ypredRank != Shape.UNKNOWN_SIZE) { + // Use static rank for `y_true` and `y_pred`. + if (ypredRank - ytrueRank != 1 || ypredShape.size(-1) == 1) { + // y_true, y_pred = confusion_matrix.remove_squeezable_dimensions(y_true, y_pred) + tuple = ConfusionMatrix.removeSqueezableDimensions(tf, yTrue, yPred); + } + } else { // use dynamic rank + tuple = ConfusionMatrix.removeSqueezableDimensions(tf, yTrue, yPred); + } + } + if (sampleWeight == null) { + return tuple; + } + Shape weightsShape = sampleWeight.asOutput().shape(); + long weightsRank = weightsShape.numDimensions(); + if (weightsRank == 0) { // scalar + return new Tuple(yTrue, yPred, sampleWeight); + } + + if (ypredRank != Shape.UNKNOWN_SIZE && weightsRank != Shape.UNKNOWN_SIZE) { + + if (weightsRank - ypredRank == 1) { + sampleWeight = tf.squeeze(sampleWeight); + } else if (ypredRank - weightsRank == 1) { + sampleWeight = tf.expandDims(sampleWeight, tf.constant(-1L)); + } + return new Tuple(yTrue, yPred, sampleWeight); + } + // Use dynamic rank. + Operand weightsRankTensor = tf.rank(sampleWeight); + Operand rankDiff = tf.math.sub(weightsRankTensor, tf.rank(yPred)); + sampleWeight = + tf.select( + tf.math.equal(weightsRankTensor, tf.constant(0)), + sampleWeight, + maybeAdjustWeights(tf, sampleWeight, rankDiff)); + return new Tuple(yTrue, yPred, sampleWeight); + } + + private static Operand maybeAdjustWeights(Ops tf, Operand sampleWeight, Operand rankDiff) { + return tf.select( + tf.math.equal(rankDiff, tf.constant(1)), + tf.squeeze(sampleWeight, Squeeze.axis(Arrays.asList(-1L))), + maybeExpandWeights(tf, sampleWeight, rankDiff)); + } + + private static Operand maybeExpandWeights(Ops tf, Operand sampleWeight, Operand rankDiff) { + return tf.select( + tf.math.equal(rankDiff, tf.constant(-1)), + tf.expandDims(sampleWeight, tf.constant(-1)), + sampleWeight); + } +} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/ConfusionMatrix.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/ConfusionMatrix.java new file mode 100644 index 00000000000..2860adb9d8b --- /dev/null +++ b/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/ConfusionMatrix.java @@ -0,0 +1,193 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.backend.tf; + +import org.tensorflow.keras.backend.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import org.tensorflow.DataType; +import org.tensorflow.Operand; +import org.tensorflow.keras.utils.ShapeUtils; +import org.tensorflow.ndarray.Shape; +import org.tensorflow.op.Op; +import org.tensorflow.op.Ops; +import org.tensorflow.op.core.Squeeze; +import org.tensorflow.op.core.Stack; +import org.tensorflow.types.TInt64; +import org.tensorflow.types.family.TNumber; +import org.tensorflow.types.family.TType; + +/** ConfusionMatrix operations */ +public class ConfusionMatrix { + + /** + * Squeeze last dim if ranks differ from expected by exactly 1. + * + * @param tf the TensorFlowOps + * @param labels Label values, a `Tensor` whose dimensions match `predictions`. + * @param predictions Predicted values, a `Tensor` of arbitrary dimensions. + * @return `labels` and `predictions`, possibly with last dim squeezed. + */ + public static Tuple removeSqueezableDimensions(Ops tf, Operand labels, Operand predictions) { + return removeSqueezableDimensions(tf, labels, predictions, 0); + } + + /** + * Squeeze last dim if ranks differ from expected by exactly 1. + * + * @param tf the TensorFlowOps + * @param labels Label values, a `Tensor` whose dimensions match `predictions`. + * @param predictions Predicted values, a `Tensor` of arbitrary dimensions. + * @param expectedRankDiff Expected result of `rank(predictions) - rank(labels)`. + * @return `labels` and `predictions`, possibly with last dim squeezed. + */ + public static Tuple removeSqueezableDimensions( + Ops tf, Operand labels, Operand predictions, int expectedRankDiff) { + + tf = tf.withSubScope("removeSqueezableDimensions"); + Shape predictionsShape = predictions.asOutput().shape(); + int predictionsRank = predictionsShape.numDimensions(); + Shape labelsShape = labels.asOutput().shape(); + int labelsRank = labelsShape.numDimensions(); + + if (predictionsRank != Shape.UNKNOWN_SIZE && labelsRank != Shape.UNKNOWN_SIZE) { + // Use static rank. + int rankDiff = predictionsRank - labelsRank; + if (rankDiff == expectedRankDiff + 1 + && ShapeUtils.isCompatible(predictionsShape.size(-1), 1)) { + predictions = tf.squeeze(predictions); + } else if (rankDiff == expectedRankDiff - 1 + && ShapeUtils.isCompatible(labelsShape.size(-1), 1)) { + labels = tf.squeeze(labels); + } + return new Tuple(labels, predictions); + } + // Use dynamic rank. + Operand rankDiff = tf.math.sub(tf.rank(predictions), tf.rank(labels)); + if (predictionsRank == Shape.UNKNOWN_SIZE + && ShapeUtils.isCompatible(predictionsShape.size(-1), 1)) { + /** + * TODO, if we ever get a select that does lazy evaluation, but for now do the tf.squeeze + * predictions = tf.select( tf.math.equal(tf.constant(expectedRankDiff+1),rankDiff ), + * tf.squeeze(predictions, Squeeze.axis(Arrays.asList(-1L))), predictions ); * + */ + predictions = tf.squeeze(predictions, Squeeze.axis(Arrays.asList(-1L))); + } + if (labelsRank == Shape.UNKNOWN_SIZE && ShapeUtils.isCompatible(labelsShape.size(-1), 1)) { + /** + * TODO, if we ever get a select that does lazy evaluation labels = tf.select( + * tf.math.equal(tf.constant(expectedRankDiff+1),rankDiff ), tf.squeeze(labels, + * Squeeze.axis(Arrays.asList(-1L))), predictions ); * + */ + labels = tf.squeeze(labels, Squeeze.axis(Arrays.asList(-1L))); + } + return new Tuple(labels, predictions); + } + + /** + * Computes the confusion matrix from predictions and labels. + * + * @param tf the TensorFlow Ops + * @param labels 1-D `Tensor` of real labels for the classification task. + * @param predictions 1-D `Tensor` of predictions for a given classification. + * @param numClasses The possible number of labels the classification task can have. + * @param weights optional weights to be applied to the confusion matris + * @param dtype Data type of the confusion matrix. + * @param the type of Operands + * @param the data type. + * @return A `Tensor` of type `dtype` with shape `[n, n]` representing the confusion matrix, where + * `n` is the number of possible labels in the classification task. + * @throws IllegalArgumentException If both predictions and labels are not 1-D vectors and have + * mismatched shapes, or if `weights` is not `None` and its shape doesn't match `predictions`. + */ + public static Operand confusionMatrix( + Ops tf, + Operand labels, + Operand predictions, + Operand numClasses, + Operand weights, + DataType dtype) { + tf = tf.withSubScope("confusion_matrix"); + Tuple ops = K.squeezeOrExpandDimensions(tf, predictions, labels, null); + predictions = tf.dtypes.cast(ops.getPredictions(), TInt64.DTYPE); + labels = tf.dtypes.cast(ops.getLabels(), TInt64.DTYPE); + + List labelControls = new ArrayList<>(); + List predictionControls = new ArrayList<>(); + + labelControls.add( + tf.assertThat( + tf.reduceAny( + tf.math.greaterEqual((Operand) labels, tf.constant(0L)), + K.allAxis(tf, labels)), + Arrays.asList(tf.constant("`labels` contains negative values")))); + + predictionControls.add( + tf.assertThat( + tf.reduceAny( + tf.math.greaterEqual((Operand) predictions, tf.constant(0L)), + K.allAxis(tf, labels)), + Arrays.asList(tf.constant("`predictions` contains negative values")))); + if (numClasses == null) { + numClasses = + tf.math.maximum( + tf.reduceMax(predictions, K.allAxis(tf, predictions)), + tf.reduceMax(labels, K.allAxis(tf, labels))); + } else { + labelControls.add( + tf.assertThat( + tf.reduceAny( + tf.math.less((Operand) labels, numClasses), K.allAxis(tf, labels)), + Arrays.asList(tf.constant("``labels` out of bound")))); + predictionControls.add( + tf.assertThat( + tf.reduceAny( + tf.math.less((Operand) predictions, numClasses), + K.allAxis(tf, predictions)), + Arrays.asList(tf.constant("``predictions` out of bound")))); + } + + if (weights != null) { + if (!ShapeUtils.isCompatibleWith( + predictions.asOutput().shape(), weights.asOutput().shape())) { + throw new IllegalArgumentException( + String.format( + "Prediction shape %s is not compatible with weights shaope %s", + predictions.asOutput().shape(), weights.asOutput().shape())); + } + } + final Operand labelsFinal = labels; + labels = + ControlDependencies.addControlDependencies( + tf, tfc -> tfc.identity(labelsFinal), "confusionMatrix", labelControls); + final Operand predictionsFinal = predictions; + predictions = + ControlDependencies.addControlDependencies( + tf, tfc -> tfc.identity(predictionsFinal), "confusionMatrix", labelControls); + + Operand shape = tf.stack(Arrays.asList(numClasses, numClasses)); + Operand indices = tf.stack(Arrays.asList(labels, predictions), Stack.axis(1L)); + Operand values = + weights == null + ? tf.dtypes.cast(tf.onesLike(predictions), dtype) + : tf.dtypes.cast(weights, dtype); + SparseTensor cmSparse = new SparseTensor(indices, values, shape); + Operand zeroMatrix = tf.zeros(shape, dtype); + + return tf.sparse.sparseTensorDenseAdd( + cmSparse.getIndices(), cmSparse.getValues(), cmSparse.getDenseShape(), zeroMatrix); + } +} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/ControlDependencies.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/ControlDependencies.java new file mode 100644 index 00000000000..5b323a79ea9 --- /dev/null +++ b/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/ControlDependencies.java @@ -0,0 +1,84 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.backend.tf; + +import org.tensorflow.keras.backend.*; +import java.util.Arrays; +import java.util.List; +import java.util.function.Function; +import org.tensorflow.Operand; +import org.tensorflow.op.Op; +import org.tensorflow.op.Ops; +import org.tensorflow.types.family.TType; + +/** Container for ControlDepencies, so that the primary Operand is remembered. */ +public class ControlDependencies { + + /** + * Create a control dependency for the operand; + * + * @param tf the TensorFlow Ops + * @param createOperand a function that creates an operand with the control dependency context + * @param name the scope name to use + * @param dependencies a list of control ops. + * @param the type of Operand + * @return the Operand with control dependency scope + */ + public static Operand addControlDependencies( + Ops tf, Function> createOperand, String name, Op... dependencies) { + return addControlDependencies(tf, createOperand, name, Arrays.asList(dependencies)); + } + + /** + * Create a control dependency for an operand. + * + * @param tf the TensorFlow Ops + * @param createOperand function that creates an operand with the control dependency context + * @param name the scope name to use + * @param dependencies a list of control ops. + * @param the type of Operand + * @return the Operand with control dependency scope + */ + public static Operand addControlDependencies( + Ops tf, Function> createOperand, String name, List dependencies) { + tf = tf.withSubScope(name).withControlDependencies(dependencies); + return createOperand.apply(tf); + } + + /** + * Create a control dependency as a NoOp + * + * @param tf the TensorFlow Ops + * @param name the scope name to use + * @param dependencies a list of control ops. + * @return NoOp with control dependency scope + */ + public static Op addControlDependencies(Ops tf, String name, Op... dependencies) { + return addControlDependencies(tf, name, Arrays.asList(dependencies)); + } + + /** + * Create a control dependency as a NoOp + * + * @param tf the TensorFlow Ops + * @param name the scope name to use + * @param dependencies a list of control ops. + * @return NoOp with control dependency scope + */ + public static Op addControlDependencies(Ops tf, String name, List dependencies) { + tf = tf.withSubScope(name).withControlDependencies(dependencies); + return tf.noOp(); + } +} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/NN.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/NN.java new file mode 100644 index 00000000000..e49fed5ba95 --- /dev/null +++ b/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/NN.java @@ -0,0 +1,134 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.backend.tf; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import org.tensorflow.Operand; +import org.tensorflow.ndarray.Shape; +import org.tensorflow.op.Op; +import org.tensorflow.op.Ops; +import org.tensorflow.op.nn.SparseSoftmaxCrossEntropyWithLogits; +import org.tensorflow.types.TBfloat16; +import org.tensorflow.types.TFloat16; +import org.tensorflow.types.TFloat32; + +/** NN Operations */ +public class NN { + + /** + * Computes sparse softmax cross entropy between `logits` and `labels`. + * + * @param tf + * @param labels `Tensor` of shape `[d_0, d_1, ..., d_{r-1}]` (where `r` is rank of `labels` and + * result) and dtype `int32` or `int64`. Each entry in `labels` must be an index in `[0, + * num_classes)`. Other values will raise an exception when this op is run on CPU, and return + * `NaN` for corresponding loss and gradient rows on GPU. + * @param logits Per-label activations (typically a linear output) of shape `[d_0, d_1, ..., + * d_{r-1}, num_classes]` and dtype `float16`, `float32`, or `float64`. These activation + * energies are interpreted as unnormalized log probabilities. + * @return A `Tensor` of the same shape as `labels` and of the same type as `logits` with the + * softmax cross entropy loss. + */ + public static Operand sparse_softmax_cross_entropy_with_logits( + Ops tf, Operand labels, Operand logits) { + // assert shapeIsCompatible(labels.asOutput().shape(), logits.asOutput().shape()): + // String.format("Shapes %s and %s are incompatible", + // labels.asOutput().shape(), logits.asOutput().shape()); + tf = tf.withSubScope("SparseSoftmaxCrossEntropyWithLogits"); + Operand precise_logits = logits; + boolean convertToFloat32 = + logits.asOutput().dataType() == TFloat16.DTYPE + || logits.asOutput().dataType() == TBfloat16.DTYPE; + if (convertToFloat32) { + precise_logits = tf.dtypes.cast(logits, TFloat32.DTYPE); + } + Shape labelsStaticShape = labels.asOutput().shape(); + org.tensorflow.op.core.Shape labelsShape = tf.shape(labels); + Shape logitsShape = logits.asOutput().shape(); + Operand labels_shape = tf.shape(labels); + Shape logitsShortened = logitsShape.take(logitsShape.numDimensions() - 1); + + boolean staticShapesFullyDefined = + !labelsStaticShape.hasUnknownDimension() && !logitsShortened.hasUnknownDimension(); + if (logitsShape.numDimensions() == 0) { + throw new IllegalArgumentException( + String.format("Logits cannot be scalars - received shape %s.", logitsShape)); + } + if (!logitsShape.hasUnknownDimension() + && !labelsStaticShape.hasUnknownDimension() + && labelsStaticShape.numDimensions() != logitsShape.numDimensions() - 1) { + throw new IllegalArgumentException( + String.format( + "Rank mismatch: Rank of labels (received %s) should equal rank of logits minus 1 (received %s).", + labelsStaticShape.toString(), logitsShape.toString())); + } + + if (staticShapesFullyDefined && !labelsStaticShape.equals(logitsShortened)) { + throw new IllegalArgumentException( + String.format( + "Shape mismatch: The shape of labels (received %s) " + + "should equal the shape of logits except for the last " + + "dimension (received %s).", + labelsStaticShape.toString(), logitsShape.toString())); + } + // Check if no reshapes are required. + if (logitsShape.numDimensions() == 2) { + SparseSoftmaxCrossEntropyWithLogits smax = + tf.nn.sparseSoftmaxCrossEntropyWithLogits(precise_logits, labels); + Operand loss = smax.loss(); + if (logits.asOutput().dataType() == TFloat16.DTYPE) { + loss = tf.dtypes.cast(loss, TFloat16.DTYPE); + } + return loss; + } + + List shapeChecks = new ArrayList<>(); + + if (!staticShapesFullyDefined) { + shapeChecks.add( + tf.assertThat( + tf.math.equal(tf.shape(labels), tf.shape.take(tf.shape(logits), tf.constant(-1))), + Arrays.asList( + tf.constant( + "Shape mismatch: The shape of labels " + + "should equal the shape of logits except for the last " + + "dimension ")))); + } + + // Reshape logits to 2 dim, labels to 1 dim. + long numClassses = logitsShape.size(logitsShape.numDimensions() - 1); + + precise_logits = tf.reshape(precise_logits, tf.constant(new long[] {-1, numClassses})); + labels = tf.reshape(labels, tf.constant(-1)); + SparseSoftmaxCrossEntropyWithLogits smax = + tf.nn.sparseSoftmaxCrossEntropyWithLogits(precise_logits, labels); + + return ControlDependencies.addControlDependencies( + tf, + tfc -> { + Operand cost = smax.loss(); + + cost = tfc.reshape(cost, labels_shape); + if (logits.asOutput().dataType() == TFloat16.DTYPE) { + cost = tfc.dtypes.cast(cost, TFloat16.DTYPE); + } + return cost; + }, + "sparse_softmax_cross_entropy_with_logits", + shapeChecks); + } +} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/SparseTensor.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/SparseTensor.java new file mode 100644 index 00000000000..45d9ec5b071 --- /dev/null +++ b/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/SparseTensor.java @@ -0,0 +1,64 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.backend.tf; + +import org.tensorflow.Operand; +import org.tensorflow.types.TInt64; +import org.tensorflow.types.family.TType; + +/** + * Represents a sparse tensor. + * + * @param the type of the SparseTensor + */ +public class SparseTensor { + + private final Operand indices; + private final Operand values; + private final Operand denseShape; + + /** + * Create a SparseTensor + * + * @param indices A 2-D int64 tensor of shape `[N, ndims]`, which specifies the indices of the + * elements in the sparse tensor that contain nonzero values + * @param values A 1-D tensor of any type and shape `[N]`, which supplies the values for each + * element in `indices`. + * @param denseShape A 1-D int64 tensor of shape `[ndims]`, which specifies the dense_shape of the + * sparse tensor + * @throws IllegalArgumentException When building an eager SparseTensor if `dense_shape` is + * unknown or contains unknown elements (None or -1). + */ + public SparseTensor(Operand indices, Operand values, Operand denseShape) { + this.indices = indices; + this.values = values; + this.denseShape = denseShape; + } + + /** @return the indices */ + public Operand getIndices() { + return indices; + } + + /** @return the values */ + public Operand getValues() { + return values; + } + + /** @return the denseShape */ + public Operand getDenseShape() { + return denseShape; + } +} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/Tuple.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/Tuple.java new file mode 100644 index 00000000000..9f2f11285b4 --- /dev/null +++ b/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/Tuple.java @@ -0,0 +1,109 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.backend.tf; + +import org.tensorflow.Operand; +import org.tensorflow.types.family.TType; + +/** + * Returns labels, losses or predictions and sample weights as a Tuple + * + * @param the type of Operand + */ +public class Tuple { + + private final Operand labels; + private final Operand lossesOrPredictions; + private final Operand sampleWeights; + + /** + * Creates a Tuple of Operands for labels, predictions, and sampleWeights + * + * @param labels the labels + * @param lossesOrPredictions the losses or predictions + */ + public Tuple(Operand labels, Operand lossesOrPredictions) { + this(labels, lossesOrPredictions, null); + } + + /** + * Creates a Tuple of Operands for labels, predictions, and sampleWeights + * + * @param labels the labels + * @param lossesOrPredictions the losses or predictions + * @param sampleWeights the sample weights + */ + public Tuple(Operand labels, Operand lossesOrPredictions, Operand sampleWeights) { + this.labels = labels; + this.lossesOrPredictions = lossesOrPredictions; + this.sampleWeights = sampleWeights; + } + + /** + * Indicates whether this Tuple contains Labels + * + * @return true is this Tuple contains Labels + */ + public boolean containsLabels() { + return this.labels != null; + } + + /** + * Indicates whether this Tuple contains Labels + * + * @return true is this Tuple contains Labels + */ + public boolean containsPredictions() { + return this.lossesOrPredictions != null; + } + + /** + * Indicates whether this Tuple contains Labels + * + * @return true is this Tuple contains Labels + */ + public boolean containsLosses() { + return this.lossesOrPredictions != null; + } + + /** + * Indicates whether this Tuple contains Labels + * + * @return true is this Tuple contains Labels + */ + public boolean containsSampleWeights() { + return this.sampleWeights != null; + } + + /** @return the labels */ + public Operand getLabels() { + return labels; + } + + /** @return the predictions */ + public Operand getPredictions() { + return lossesOrPredictions; + } + + /** @return the predictions */ + public Operand getLosses() { + return lossesOrPredictions; + } + + /** @return the sampleWeights */ + public Operand getSampleWeights() { + return sampleWeights; + } +} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/WeightsBroadcastOps.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/WeightsBroadcastOps.java new file mode 100644 index 00000000000..391436ff8bd --- /dev/null +++ b/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/WeightsBroadcastOps.java @@ -0,0 +1,158 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ + +package org.tensorflow.keras.backend.tf; + +import java.util.Arrays; +import java.util.List; +import org.tensorflow.Operand; +import org.tensorflow.keras.utils.ShapeUtils; +import org.tensorflow.ndarray.Shape; +import org.tensorflow.op.Op; +import org.tensorflow.op.Ops; +import org.tensorflow.types.TBool; +import org.tensorflow.types.family.TNumber; +import org.tensorflow.types.family.TType; + + +/** Weights Broadcast Ops */ +public class WeightsBroadcastOps { + + private static final String ASSERT_BROADCASTABLE_ERROR_PREFIX = + "weights can not be broadcast to values."; + + /** + * Asserts `weights` can be broadcast to `values` + * + * @param + * @param tf the TensorFlow Ops + * @param weights `Tensor` of weights. + * @param values `Tensor` of values to which weights are applied. + * @return `Operation` raising `InvalidArgumentError` if `weights` has incorrect shape. `no_op` if + * static checks determine `weights` has correct shape. + * @param the type of Operand + * @throws IllegalArgumentException If static checks determine `weights` has incorrect shape. + */ + public static Op assertBroadcastable( + Ops tf, Operand weights, Operand values) { + Operand weightsShape = tf.shape(weights); + Operand weightsRank = tf.rank(weights); + Shape weightsShapeStatic = weights.asOutput().shape(); + int weightsRankStatic = weightsShapeStatic.numDimensions(); + + Operand valuesShape = tf.shape(values); + Operand valuesRank = tf.rank(values); + Shape valuesShapeStatic = values.asOutput().shape(); + int valuesRankStatic = valuesShapeStatic.numDimensions(); + + if (weightsRankStatic != -1 && valuesRankStatic != -1) { + if (weightsRankStatic == 0) { + return ControlDependencies.addControlDependencies(tf, "static_scalar_check_success"); + } + if (weightsRankStatic != valuesRankStatic) { + throw new IllegalArgumentException( + String.format( + "", + "%s values.rank=%d. weights.rank=%d. values.shape=%s. weights.shape=%s.", + ASSERT_BROADCASTABLE_ERROR_PREFIX, + valuesRankStatic, + weightsRankStatic, + valuesShapeStatic.toString(), + weightsShapeStatic.toString())); + } + + for (int i = 0; i < valuesRankStatic; i++) { + if (valuesShapeStatic.size(i) != weightsShapeStatic.size(i)) { + throw new IllegalArgumentException( + String.format( + "", + "%s Mismatch at dim %s. values.shape=%s weights.shape=%s.", + ASSERT_BROADCASTABLE_ERROR_PREFIX, + i, + valuesShapeStatic.toString(), + weightsShapeStatic.toString())); + } + } + return ControlDependencies.addControlDependencies(tf, "static_dims_check_success"); + } + // Dynamic checks. + Operand is_scalar = tf.math.equal(weightsRank, tf.constant(0)); + List> data = + Arrays.asList( + tf.constant(ASSERT_BROADCASTABLE_ERROR_PREFIX), + tf.constant("weights.shape="), + weightsShape, + tf.constant("values.shape="), + valuesShape, + tf.constant("is_scalar="), + is_scalar); + + Operand isValidShape = + tf.select( + is_scalar, + is_scalar, + hasValidNonscalarShape(tf, weightsRank, weightsShape, valuesRank, valuesShape)); + + return tf.assertThat(isValidShape, data); + } + + private static Operand hasValidNonscalarShape( + Ops tf, + Operand weightsRank, + Operand weightsShape, + Operand valuesRank, + Operand valuesShape) { + tf = tf.withSubScope("has_valid_nonscalar_shape"); + Operand isSameRank = tf.math.equal(valuesRank, weightsRank); + return tf.select(isSameRank, hasValidDims(tf, weightsShape, valuesShape), isSameRank); + } + + private static Operand hasValidDims( + Ops tf, Operand weightsShape, Operand valuesShape) { + tf = tf.withSubScope("has_invalid_dims"); + Operand diff = tf.reduceSum(tf.math.sub(weightsShape, valuesShape), tf.constant(0)); + return tf.math.equal(tf.constant(0), diff); + } + + /** + * Broadcast `weights` to the same shape as `values`. + * + * @param tf the TensorFlow ops + * @param weights `Tensor` whose shape is broadcastable to `values` + * @param values Tensor` of any shape + * @param the type of Operand + * @return `weights` broadcast to `values` shape + */ + public static Operand broadcastWeights( + Ops tf, Operand weights, Operand values) { + tf = tf.withSubScope("broadcast_weights"); + values = tf.dtypes.cast(values, weights.asOutput().dataType()); + + Shape weightsShape = weights.asOutput().shape(); + Shape valuesShape = values.asOutput().shape(); + + if (!weightsShape.hasUnknownDimension() + && !valuesShape.hasUnknownDimension() + && ShapeUtils.isCompatibleWith(weightsShape, valuesShape)) { + return weights; + } + + weights = tf.math.mul(weights, tf.onesLike(values)); + Op dependencies = assertBroadcastable(tf, weights, values); + final Operand weightsFinal = weights; + return ControlDependencies.addControlDependencies( + tf, tfc -> tfc.identity(weightsFinal), "assertBroadcastable", dependencies); + } +} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/AdaDelta.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/AdaDelta.java new file mode 100644 index 00000000000..f02d2664759 --- /dev/null +++ b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/AdaDelta.java @@ -0,0 +1,202 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the ); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.optimizers; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import org.tensorflow.keras.backend.tf.ControlDependencies; +import static org.tensorflow.keras.optimizers.OptimizerInterface.assertGraph; +import org.tensorflow.op.Op; +import org.tensorflow.op.Ops; + +/** + * AdaDelta Optimizer that implements the AdaDelta algorithm. Keras wrapper around the Tensorflow + * Framework optimizer. Adadelta optimization is a stochastic gradient descent method that is based + * on adaptive learning rate per dimension to address two drawbacks: 1) the continual decay of + * learning rates throughout training 2) the need for a manually selected global learning rate + * + *

Two accumulation steps are required: 1) the accumulation of gradients squared, 2) the + * accumulation of updates squared. + * + * @param The Type for the call operation + */ +public class AdaDelta extends org.tensorflow.framework.optimizers.AdaDelta + implements OptimizerInterface { + + public static final String LEARNING_RATE_KEY = "learning_rate"; + public static final String RHO_RATE_KEY = "rho"; + public static final String EPSILON_KEY = "epsilon"; + + public static final float LEARNING_RATE_DEFAULT = 0.001F; + public static final float RHO_DEFAULT = 0.95F; + public static final float EPSILON_DEFAULT = 1e-7F; + + private Map config = new HashMap<>(); + private float learningRate; + + private List initializers = new ArrayList<>(); + + + /** + * Create an Adadelta optimizer with default name="Adadelta", learning_rate=0.001F, rho=0.95F, and + * epsilon=1e-7F + * + * @param tf the tensorflow Ops + */ + public AdaDelta(Ops tf) { + this(tf, LEARNING_RATE_DEFAULT, RHO_DEFAULT, EPSILON_DEFAULT); + } + + /** + * Create an Adadelta optimizer with default learning_rate=0.001F, rho=0.95F, and epsilon=1e-7F + * + * @param tf the tensorflow Ops + * @param name the name of the Optimizer, defaults to "Adadelta" + */ + public AdaDelta(Ops tf, String name) { + this(tf, LEARNING_RATE_DEFAULT, RHO_DEFAULT, EPSILON_DEFAULT); + } + + /** + * Create an Adadelta optimizer with default name="Adadelta", rho=0.95F, and epsilon=1e-7F + * + * @param tf the tensorflow Ops + * @param learningRate The learning rate + */ + public AdaDelta(Ops tf, float learningRate) { + this(tf, learningRate, RHO_DEFAULT, EPSILON_DEFAULT); + } + + /** + * Create an Adadelta optimizer with default rho=0.95F, and epsilon=1e-7F + * + * @param tf the tensorflow Ops + * @param name the name of the Optimizer, defaults to "Adadelta" + * @param learningRate The learning rate + */ + public AdaDelta(Ops tf, String name, float learningRate) { + this(tf, learningRate, RHO_DEFAULT, EPSILON_DEFAULT); + } + + /** + * Create an Adadelta optimizer with default name="Adadelta", + * + * @param tf the tensorflow Ops + * @param learningRate The learning rate + * @param rho The decay rate. + * @param epsilon A constant epsilon used to better conditioning the grad update. + */ + public AdaDelta(Ops tf, float learningRate, float rho, float epsilon) { + super(assertGraph(tf), learningRate, rho, epsilon); + initConfig(learningRate, rho, epsilon); + } + + /** + * Create an Adadelta optimizer + * + * @param tf the tensorflow Ops + * @param name the name of the Optimizer, defaults to "Adadelta" + * @param learningRate The learning rate + * @param rho The decay rate. + * @param epsilon A constant epsilon used to better conditioning the grad update. + */ + public AdaDelta(Ops tf, String name, float learningRate, float rho, float epsilon) { + super(assertGraph(tf), name, learningRate, rho, epsilon); + initConfig(learningRate, rho, epsilon); + } + + /** {@inheritDoc} */ + @Override + protected Optional prepare(String name) { + switch (initializers.size()) { + case 0: + return Optional.empty(); + case 1: + return Optional.of(initializers.get(0)); + default: + return Optional.of( + ControlDependencies.addControlDependencies(tf, this.getOptimizerName(), initializers)); + } + } + + /** + * Create an Adam Optimizer from a config object + * + * @param graph the tensorflow graph + * @param config a config object to initialize, he config object has keys for "name", + * "learning_rate", "rho" and "epsilon". If a key is missing the default value is used. + */ + public static AdaDelta fromConfig(Ops tf, Map config) { + return create(tf, config); + } + + /** + * Create an Adadelta optimizer + * + * @param graph the tensorflow graph @@param config a config object to initialize, the config + * object has keys for "name", "learning_rate", "rho" and "epsilon". If a key is missing the + * default value is used. + */ + public static AdaDelta create(Ops tf, Map config) { + String name = (String) config.get(NAME_KEY); + float learningRate = (float) config.getOrDefault(LEARNING_RATE_KEY, LEARNING_RATE_DEFAULT); + float rho = (float) config.getOrDefault(RHO_RATE_KEY, RHO_DEFAULT); + float epsilon = (float) config.getOrDefault(EPSILON_KEY, EPSILON_DEFAULT); + if (name == null) // doe this to get the default name + { + return new AdaDelta(tf, learningRate, rho, epsilon); + } else { + return new AdaDelta(tf, name, learningRate, rho, epsilon); + } + } + + /** + * Initialize the configuration based on which constructor is called. + * + * @param learningRate The learning rate + * @param rho The decay rate. + * @param epsilon A constant epsilon used to better conditioning the grad update. + */ + private void initConfig(float learningRate, float rho, float epsilon) { + this.learningRate = learningRate; + config.put(NAME_KEY, this.getOptimizerName()); + config.put(LEARNING_RATE_KEY, learningRate); + config.put(RHO_RATE_KEY, rho); + config.put(EPSILON_KEY, epsilon); + } + + /** {@inheritDoc} */ + @Override + public Map getConfig() { + return config; + } + + /** {@inheritDoc} */ + @Override + public float getLearningRate() { + return this.learningRate; + } + + /** {@inheritDoc} */ + @Override + public void setLearningRate(float learningRate) { + this.learningRate = learningRate; + } + + +} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/AdaGrad.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/AdaGrad.java new file mode 100644 index 00000000000..6010a95b199 --- /dev/null +++ b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/AdaGrad.java @@ -0,0 +1,167 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the ); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.optimizers; + +import java.util.HashMap; +import java.util.Map; +import static org.tensorflow.keras.optimizers.OptimizerInterface.assertGraph; +import org.tensorflow.op.Ops; + +/** + * AdaGrad Optimizer that implements the AdaGrad algorithm. Adagrad is an optimizer with + * parameter-specific learning rates, which are adapted relative to how frequently a parameter gets + * updated during training. The more updates a parameter receives, the smaller the updates. + */ +public class AdaGrad extends org.tensorflow.framework.optimizers.AdaGrad + implements OptimizerInterface { + + public static final String LEARNING_RATE_KEY = "learning_rate"; + public static final String INITIAL_ACCUM_KEY = "accumulator"; + + public static final float LEARNING_RATE_DEFAULT = 0.001F; + public static final float INITIAL_ACCUM__DEFAULT = 0.1f; + + private Map config = new HashMap<>(); + private float learningRate; + + /** + * Create an AdaGrad Optimizer with name="Adagrad", learningRate=0.001F, and initial + * accumulator=0.1 + * + * @param tf the tensorflow Ops + */ + public AdaGrad(Ops tf) { + this(tf, LEARNING_RATE_DEFAULT, INITIAL_ACCUM__DEFAULT); + } + + /** + * Create an AdaGrad Optimizer with learningRate=0.001F, and initial accumulator=0.1 + * + * @param tf the tensorflow Ops + * @param name the name of the Optimizer, defaults to "Adagrad" + */ + public AdaGrad(Ops tf, String name) { + this(tf, name, LEARNING_RATE_DEFAULT, INITIAL_ACCUM__DEFAULT); + } + + /** + * Create an AdaGrad Optimizer with initial accumulator=0.1 + * + * @param tf the tensorflow Ops + * @param learningRate The learning rate. Defaults to 0.001. + */ + public AdaGrad(Ops tf, float learningRate) { + this(tf, learningRate, INITIAL_ACCUM__DEFAULT); + } + + /** + * Create an AdaGrad Optimizer + * + * @param tf the tensorflow Ops + * @param name the name of the Optimizer, defaults to "Adagrad" + * @param learningRate The learning rate. Defaults to 0.01. + */ + public AdaGrad(Ops tf, String name, float learningRate) { + this(tf, name, learningRate, INITIAL_ACCUM__DEFAULT); + } + + /** + * Create an AdaGrad Optimizer + * + * @param tf the tensorflow Ops + * @param learningRate The learning rate + * @param initialAccumulatorValue initial accumulator value + */ + public AdaGrad(Ops tf, float learningRate, float initialAccumulatorValue) { + super(assertGraph(tf), learningRate, initialAccumulatorValue); + initConfig(learningRate, initialAccumulatorValue); + } + + /** + * Create an AdaGrad Optimizer + * + * @param tf the tensorflow Ops + * @param name the name of the Optimizer, defaults to "Adagrad" + * @param learningRate The learning rate + * @param initialAccumulatorValue initial accumulator value, must be >= 0. + */ + public AdaGrad(Ops tf, String name, float learningRate, float initialAccumulatorValue) { + super(assertGraph(tf), name, learningRate, initialAccumulatorValue); + assert initialAccumulatorValue >= 0.0F + : "initial_accumulator_value must be non-negative: " + initialAccumulatorValue; + initConfig(learningRate, initialAccumulatorValue); + } + + /** + * Create an AdaGrad Optimizer from a config object + * + * @param graph the tensorflow graph + * @param config a config object to initialize, , the config object has keys for "name", + * "learning_rate" and "accumulator". If a key is missing the default value is used. + */ + public static AdaGrad fromConfig(Ops tf, Map config) { + return create(tf, config); + } + + /** + * Create an AdaGrad Optimizer from a config object + * + * @param graph the tensorflow graph + * @param config a config object to initialize, the config object has keys for "name", + * "learning_rate" and "accumulator". If a key is missing the default value is used. + */ + public static AdaGrad create(Ops tf, Map config) { + String name = (String) config.get(NAME_KEY); + float learningRate = (float) config.getOrDefault(LEARNING_RATE_KEY, LEARNING_RATE_DEFAULT); + float initialAccumulatorValue = + (float) config.getOrDefault(INITIAL_ACCUM_KEY, INITIAL_ACCUM__DEFAULT); + if (name != null) { + return new AdaGrad(tf, name, learningRate, initialAccumulatorValue); + } else { + return new AdaGrad(tf, learningRate, initialAccumulatorValue); + } + } + + /** + * Initialize the configuration + * + * @param learningRate + * @param initialAccumulatorValue + */ + private void initConfig(float learningRate, float initialAccumulatorValue) { + this.learningRate = learningRate; + config.put(NAME_KEY, this.getOptimizerName()); + config.put(LEARNING_RATE_KEY, learningRate); + config.put(INITIAL_ACCUM_KEY, initialAccumulatorValue); + } + + /** {@inheritDoc} */ + @Override + public Map getConfig() { + return config; + } + + /** {@inheritDoc} */ + @Override + public float getLearningRate() { + return this.learningRate; + } + + /** {@inheritDoc} */ + @Override + public void setLearningRate(float learningRate) { + this.learningRate = learningRate; + } +} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/AdaGradDA.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/AdaGradDA.java new file mode 100644 index 00000000000..d7ee03338c8 --- /dev/null +++ b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/AdaGradDA.java @@ -0,0 +1,191 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the ); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.optimizers; + +import java.util.HashMap; +import java.util.Map; +import static org.tensorflow.keras.optimizers.OptimizerInterface.assertGraph; +import org.tensorflow.op.Ops; + +/** Optimizer that implements the Adagrad Dual-Averaging algorithm. */ +public class AdaGradDA extends org.tensorflow.framework.optimizers.AdaGradDA + implements OptimizerInterface { + + public static final String LEARNING_RATE_KEY = "learning_rate"; + public static final String INITIAL_ACCUM_KEY = "accumulator"; + public static final String L1STRENGTH_KEY = "l1Strength"; + public static final String L2STRENGTH_KEY = "l2Strength"; + + public static final float LEARNING_RATE_DEFAULT = 0.001F; // arbitray number + public static final float INITIAL_ACCUM__DEFAULT = 0.1f; + public static final float L1STRENGTH_DEFAULT = 0.0F; + public static final float L2STRENGTH_DEFAULT = 0.0F; + + private Map config = new HashMap<>(); + private float learningRate; + + /** + * Create an AdagradDA Optimizer with default values name="adagrad-da". learning_rate=.001, + * initial accumulator= 0.1, l1Strength=0.0, l2Strength=0.0; + * + * @param tf the tensorflow tf + */ + public AdaGradDA(Ops tf) { + this(tf, LEARNING_RATE_DEFAULT, INITIAL_ACCUM__DEFAULT, L1STRENGTH_DEFAULT, L2STRENGTH_DEFAULT); + } + + /** + * Create an AdagradDA Optimizer with default values initial accumulator= 0.1, l1Strength=0.0, + * l2Strength=0.0; + * + * @param tf the tensorflow tf + * @param learningRate The learning rate. + */ + public AdaGradDA(Ops tf, float learningRate) { + this(tf, learningRate, INITIAL_ACCUM__DEFAULT, L1STRENGTH_DEFAULT, L2STRENGTH_DEFAULT); + } + + /** + * Create an AdagradDA Optimizer with default values initial accumulator= 0.1, l1Strength=0.0, + * l2Strength=0.0; + * + * @param tf the tensorflow tf + * @param name the name of the Optimizer, defaults to "adagrad-da" + * @param learningRate The learning rate. + */ + public AdaGradDA(Ops tf, String name, float learningRate) { + this(tf, name, learningRate, INITIAL_ACCUM__DEFAULT, L1STRENGTH_DEFAULT, L2STRENGTH_DEFAULT); + } + + /** + * Create an AdagradDA Optimizer + * + * @param tf the tensorflow tf + * @param learningRate the learning rate, default is 0.001 + * @param initialAccumulatorValue Starting value for the accumulators, must be >= 0.0. + * @param l1Strength L1 Regularization Strength + * @param l2Strength L2 Regularization Strength + */ + public AdaGradDA( + Ops tf, + float learningRate, + float initialAccumulatorValue, + float l1Strength, + float l2Strength) { + super(assertGraph(tf), learningRate, initialAccumulatorValue, l1Strength, l2Strength); + assert initialAccumulatorValue >= 0.0F + : "initial_accumulator_value must be non-negative: " + initialAccumulatorValue; + assert l1Strength >= 0.0F : "l1Strength must be non-negative: " + l1Strength; + assert l2Strength >= 0.0F : "l2Strength must be non-negative: " + l2Strength; + initConfig(learningRate, initialAccumulatorValue, l1Strength, l2Strength); + } + + /** + * Create an AdagradDA Optimizer + * + * @param tf the tensorflow tf + * @param name the name of the Optimizer, defaults to "adagrad-da" + * @param learningRate the learning rate, default is 0.001 + * @param initialAccumulatorValue Starting value for the accumulators, must be positive. + * @param l1Strength L1 Regularization Strength + * @param l2Strength L2 Regularization Strength + */ + public AdaGradDA( + Ops tf, + String name, + float learningRate, + float initialAccumulatorValue, + float l1Strength, + float l2Strength) { + super(assertGraph(tf), name, learningRate, initialAccumulatorValue, l1Strength, l2Strength); + assert initialAccumulatorValue >= 0.0F + : "initial_accumulator_value must be non-negative: " + initialAccumulatorValue; + assert l1Strength >= 0.0F : "l1Strength must be non-negative: " + l1Strength; + assert l2Strength >= 0.0F : "l2Strength must be non-negative: " + l2Strength; + initConfig(learningRate, initialAccumulatorValue, l1Strength, l2Strength); + } + + /** + * Create an AdaGrad Optimizer from a config object + * + * @param tf the tensorflow tf + * @param config a config object to initialize, , the config object has keys for "name", + * "learning_rate", "accumulator", "l1Strength" and "l2Strength". If a key is missing the + * default value is used. + * @return the new AdaGradDA Optimizer + */ + public static AdaGradDA fromConfig(Ops tf, Map config) { + return create(tf, config); + } + + /** + * Create an AdaGradDA Optimizer from a config object + * + * @param tf the tensorflow tf + * @param config a config object to initialize, the config object has keys for "name", + * "learning_rate", "accumulator", "l1Strength" and "l2Strength". If a key is missing the + * default value is used. + * @return the new AdaGradDA Optimizer + */ + public static AdaGradDA create(Ops tf, Map config) { + String name = (String) config.get(NAME_KEY); + float learningRate = (float) config.getOrDefault(LEARNING_RATE_KEY, LEARNING_RATE_DEFAULT); + float initialAccumulatorValue = + (float) config.getOrDefault(INITIAL_ACCUM_KEY, INITIAL_ACCUM__DEFAULT); + float l1Strength = (float) config.getOrDefault(L1STRENGTH_KEY, L2STRENGTH_DEFAULT); + float l2Strength = (float) config.getOrDefault(L2STRENGTH_KEY, L2STRENGTH_DEFAULT); + if (name != null) { + return new AdaGradDA(tf, name, learningRate, initialAccumulatorValue, l1Strength, l2Strength); + } else { + return new AdaGradDA(tf, learningRate, initialAccumulatorValue, l1Strength, l2Strength); + } + } + + /** + * Initialize the Optimizer from a config object based on which constructor is called. + * + * @param learningRate the learning rate, default is 0.001 + * @param initialAccumulatorValue Starting value for the accumulators, must be >= 0.0. + * @param l1Strength L1 Regularization Strength + * @param l2Strength L2 Regularization Strength + */ + private void initConfig( + float learningRate, float initialAccumulatorValue, float l1Strength, float l2Strength) { + this.learningRate = learningRate; + config.put(NAME_KEY, this.getOptimizerName()); + config.put(LEARNING_RATE_KEY, learningRate); + config.put(INITIAL_ACCUM_KEY, initialAccumulatorValue); + config.put(L1STRENGTH_KEY, l1Strength); + config.put(L2STRENGTH_KEY, l2Strength); + } + + /** {@inheritDoc} */ + @Override + public Map getConfig() { + return config; + } + + /** {@inheritDoc} */ + @Override + public float getLearningRate() { + return this.learningRate; + } + + /** {@inheritDoc} */ + @Override + public void setLearningRate(float learningRate) { + this.learningRate = learningRate; + } +} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/Adam.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/Adam.java new file mode 100644 index 00000000000..5d74c7e27f4 --- /dev/null +++ b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/Adam.java @@ -0,0 +1,182 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the ); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.optimizers; + +import java.util.HashMap; +import java.util.Map; +import static org.tensorflow.keras.optimizers.OptimizerInterface.NAME_KEY; +import static org.tensorflow.keras.optimizers.OptimizerInterface.assertGraph; +import org.tensorflow.op.Ops; + +/** Adam Optimizer that implements the Adam algorithm. */ +public class Adam extends org.tensorflow.framework.optimizers.Adam implements OptimizerInterface { + + public static final String LEARNING_RATE_KEY = "learning_rate"; + public static final String EPSILON_KEY = "epsilon"; + public static final String BETA_ONE_KEY = "beta_1"; + public static final String BETA_TWO_KEY = "beta_2"; + + public static final float LEARNING_RATE_DEFAULT = 0.001F; + public static final float EPSILON_DEFAULT = 1e-07F; + public static final float BETA_ONE_DEFAULT = 0.9F; + public static final float BETA_TWO_DEFAULT = 0.999F; + + private float learningRate; + private Map config = new HashMap<>(); + + /** + * Create an Adam Optimizer + * + * @param tf the tensorflow Ops + */ + public Adam(Ops tf) { + this(tf, LEARNING_RATE_DEFAULT, BETA_ONE_DEFAULT, BETA_TWO_DEFAULT, EPSILON_DEFAULT); + } + + /** + * Create an Adam Optimizer + * + * @param tf the tensorflow Ops + * @param name the name of the Optimizer, defaults to "Adam" + */ + public Adam(Ops tf, String name) { + this(tf, name, LEARNING_RATE_DEFAULT, BETA_ONE_DEFAULT, BETA_TWO_DEFAULT, EPSILON_DEFAULT); + } + + /** + * Create an Adam Optimizer + * + * @param tf the tensorflow Ops + * @param learningRate The learning rate. Defaults to 0.001. + */ + public Adam(Ops tf, float learningRate) { + this(tf, learningRate, BETA_ONE_DEFAULT, BETA_TWO_DEFAULT, EPSILON_DEFAULT); + } + + /** + * Create an Adam Optimizer + * + * @param tf the tensorflow Ops + * @param name the name of the Optimizer, defaults to "Adam" + * @param learningRate The learning rate. Defaults to 0.001. + */ + public Adam(Ops tf, String name, float learningRate) { + this(tf, name, learningRate, BETA_ONE_DEFAULT, BETA_TWO_DEFAULT, EPSILON_DEFAULT); + } + + /** + * Create an Adam Optimizer + * + * @param tf the tensorflow Ops + * @param learningRate The learning rate. Defaults to 0.001. + * @param betaOne The exponential decay rate for the 1st moment estimates. Defaults to 0.9. + * @param betaTwo The exponential decay rate for the 2nd moment estimates. Defaults to 0.999. + * @param epsilon A small constant for numerical stability. This epsilon is "epsilon hat" in the + * Kingma and Ba paper (in the formula just before Section 2.1), not the epsilon in Algorithm + * 1 of the paper. Defaults to 1e-7. + */ + public Adam(Ops tf, float learningRate, float betaOne, float betaTwo, float epsilon) { + super(assertGraph(tf), learningRate, betaOne, betaTwo, epsilon); + initConfig(learningRate, betaOne, betaTwo, epsilon); + } + + /** + * Create an Adam Optimizer + * + * @param tf the tensorflow Ops + * @param name the name of the Optimizer, defaults to "Adam" + * @param learningRate The learning rate. Defaults to 0.001. + * @param betaOne The exponential decay rate for the 1st moment estimates. Defaults to 0.9. + * @param betaTwo The exponential decay rate for the 2nd moment estimates. Defaults to 0.999. + * @param epsilon A small constant for numerical stability. This epsilon is "epsilon hat" in the + * Kingma and Ba paper (in the formula just before Section 2.1), not the epsilon in Algorithm + * 1 of the paper. Defaults to 1e-7. + */ + public Adam( + Ops tf, String name, float learningRate, float betaOne, float betaTwo, float epsilon) { + super(assertGraph(tf), name, learningRate, betaOne, betaTwo, epsilon); + initConfig(learningRate, betaOne, betaTwo, epsilon); + } + + /** + * Create an Adam Optimizer from a config object + * + * @param tf the tensorflow Ops + * @param config a config object to initialize, the config object has keys for "name", + * "learning_rate", "epsilon", "beta_1", "beta_2". If a key is missing the default value is + * used. + */ + public static Adam fromConfig(Ops tf, Map config) { + return create(tf, config); + } + + /** + * Create an Adam Optimizer from a config object + * + * @param tf the tensorflow Ops + * @param config a config object to initialize, the config object has keys for "name", + * "learning_rate", "epsilon", "beta_1", "beta_2". If a key is missing the default value is + * used. + */ + public static Adam create(Ops tf, Map config) { + String name = (String) config.get(NAME_KEY); + float learningRate = (float) config.getOrDefault(LEARNING_RATE_KEY, LEARNING_RATE_DEFAULT); + float epsilon = (float) config.getOrDefault(EPSILON_KEY, EPSILON_DEFAULT); + float betaOne = (float) config.getOrDefault(BETA_ONE_KEY, BETA_ONE_DEFAULT); + float betaTwo = (float) config.getOrDefault(BETA_TWO_KEY, BETA_TWO_DEFAULT); + if (name == null) { + return new Adam(tf, learningRate, betaOne, betaTwo, epsilon); + } else { + return new Adam(tf, name, learningRate, betaOne, betaTwo, epsilon); + } + } + + /** + * Initialize the Optimizer from a config object based on which constructor is called. + * + * @param learningRate The learning rate. Defaults to 0.001. + * @param betaOne The exponential decay rate for the 1st moment estimates. Defaults to 0.9. + * @param betaTwo The exponential decay rate for the 2nd moment estimates. Defaults to 0.999. + * @param epsilon A small constant for numerical stability. This epsilon is "epsilon hat" in the + * Kingma and Ba paper (in the formula just before Section 2.1), not the epsilon in Algorithm + * 1 of the paper. Defaults to 1e-7. + */ + protected void initConfig(float learningRate, float betaOne, float betaTwo, float epsilon) { + this.learningRate = learningRate; + config.put(NAME_KEY, this.getOptimizerName()); + config.put(LEARNING_RATE_KEY, learningRate); + config.put(EPSILON_KEY, epsilon); + config.put(BETA_ONE_KEY, betaOne); + config.put(BETA_TWO_KEY, betaTwo); + } + + /** {@inheritDoc} */ + @Override + public Map getConfig() { + return config; + } + + /** {@inheritDoc} */ + @Override + public float getLearningRate() { + return this.learningRate; + } + + /** {@inheritDoc} */ + @Override + public void setLearningRate(float learningRate) { + this.learningRate = learningRate; + } +} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/Adamax.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/Adamax.java new file mode 100644 index 00000000000..a976a6e51dd --- /dev/null +++ b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/Adamax.java @@ -0,0 +1,283 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the ); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.optimizers; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import org.tensorflow.Graph; +import org.tensorflow.Operand; +import org.tensorflow.Output; +import static org.tensorflow.keras.optimizers.OptimizerInterface.NAME_KEY; +import static org.tensorflow.keras.optimizers.OptimizerInterface.assertGraph; +import org.tensorflow.ndarray.Shape; +import org.tensorflow.op.Op; +import org.tensorflow.op.Ops; +import org.tensorflow.op.Scope; +import org.tensorflow.op.core.Assign; +import org.tensorflow.op.core.Constant; +import org.tensorflow.op.core.Variable; +import org.tensorflow.op.train.ApplyAdaMax; +import org.tensorflow.types.TFloat32; +import org.tensorflow.types.family.TType; + +/** Adamax Optimizer that implements the Adamax algorithm. */ +public class Adamax extends org.tensorflow.framework.optimizers.Optimizer + implements OptimizerInterface { + + public static final String FIRST_MOMENT = "m"; + public static final String SECOND_MOMENT = "v"; + + public static final String LEARNING_RATE_KEY = "learning_rate"; + public static final String EPSILON_KEY = "epsilon"; + public static final String BETA_ONE_KEY = "beta_1"; + public static final String BETA_TWO_KEY = "beta_2"; + + public static final float LEARNING_RATE_DEFAULT = 0.001F; + public static final float EPSILON_DEFAULT = 1e-07F; + public static final float BETA_ONE_DEFAULT = 0.9F; + public static final float BETA_TWO_DEFAULT = 0.999F; + + private Scope scope; + private Map config = new HashMap<>(); + + private float learningRate; + private final float betaOne; + private final float betaTwo; + private final float epsilon; + + private Constant learningRateConst; + private Constant epsilonConst; + private Constant betaOneConst; + private Constant betaTwoConst; + private Variable betaOnePower; + + /** + * Create an Optimizer that implements the Adamax algorithm. + * + * @param tf the TensoFlow Ops + */ + public Adamax(Ops tf) { + this(tf, LEARNING_RATE_DEFAULT, BETA_ONE_DEFAULT, BETA_TWO_DEFAULT, EPSILON_DEFAULT); + } + + /** + * Create an Optimizer that implements the Adamax algorithm. + * + * @param tf the TensoFlow Ops + * @param name name for the operations Created when applying gradients. Defaults to "Adamax". + */ + public Adamax(Ops tf, String name) { + this(tf, name, LEARNING_RATE_DEFAULT, BETA_ONE_DEFAULT, BETA_TWO_DEFAULT, EPSILON_DEFAULT); + } + + /** + * Create an Optimizer that implements the Adamax algorithm. + * + * @param tf the TensoFlow Ops + * @param learningRate The learning rate. + */ + public Adamax(Ops tf, float learningRate) { + this(tf, learningRate, BETA_ONE_DEFAULT, BETA_TWO_DEFAULT, EPSILON_DEFAULT); + } + + /** + * Create an Optimizer that implements the Adamax algorithm. + * + * @param tf the TensoFlow Ops + * @param name name for the operations Created when applying gradients. Defaults to "Adamax". + * @param learningRate The learning rate. + */ + public Adamax(Ops tf, String name, float learningRate) { + this(tf, name, learningRate, BETA_ONE_DEFAULT, BETA_TWO_DEFAULT, EPSILON_DEFAULT); + } + + /** + * Create an Optimizer that implements the Adamax algorithm. + * + * @param tf the TensoFlow Ops + * @param learningRate The learning rate. + * @param betaOne The exponential decay rate for the 1st moment estimates. + * @param betaTwo The exponential decay rate for the exponentially weighted infinity norm. + * @param epsilon A small constant for numerical stability. + */ + public Adamax(Ops tf, float learningRate, float betaOne, float betaTwo, float epsilon) { + super(assertGraph(tf)); + this.learningRate = learningRate; + this.betaOne = betaOne; + this.betaTwo = betaTwo; + this.epsilon = epsilon; + this.scope = tf.scope(); + initConfig(learningRate, betaOne, betaTwo, epsilon); + } + + /** + * Create an Optimizer that implements the Adamax algorithm. + * + * @param tf the TensoFlow Ops + * @param name name for the operations Created when applying gradients. Defaults to "Adamax". + * @param learningRate The learning rate. + * @param betaOne The exponential decay rate for the 1st moment estimates. + * @param betaTwo The exponential decay rate for the exponentially weighted infinity norm. + * @param epsilon A small constant for numerical stability. + */ + public Adamax( + Ops tf, String name, float learningRate, float betaOne, float betaTwo, float epsilon) { + super(assertGraph(tf), name); + this.learningRate = learningRate; + this.betaOne = betaOne; + this.betaTwo = betaTwo; + this.epsilon = epsilon; + this.scope = tf.scope(); + + initConfig(learningRate, betaOne, betaTwo, epsilon); + } + + /** + * Create an Optimizer that implements the Adamax algorithm from a config object + * + * @param tf the TensoFlow Ops + * @param config a config object to initialize, the config object has keys for "name", + * "learning_rate", "epsilon", "beta_1", "beta_2". If a key is missing the default value is + * used. + */ + public static Adamax fromConfig(Ops tf, Map config) { + return create(tf, config); + } + + /** + * Create an Optimizer that implements the Adamax algorithm from a config object + * + * @param tf the TensoFlow Ops + * @param config a config object to initialize + */ + public static Adamax create(Ops tf, Map config) { + String name = (String) config.get(NAME_KEY); + float learningRate = (float) config.getOrDefault(LEARNING_RATE_KEY, LEARNING_RATE_DEFAULT); + float epsilon = (float) config.getOrDefault(EPSILON_KEY, EPSILON_DEFAULT); + float betaOne = (float) config.getOrDefault(BETA_ONE_KEY, BETA_ONE_DEFAULT); + float betaTwo = (float) config.getOrDefault(BETA_TWO_KEY, BETA_TWO_DEFAULT); + if (name == null) { + return new Adamax(tf, learningRate, betaOne, betaTwo, epsilon); + } else { + return new Adamax(tf, name, learningRate, betaOne, betaTwo, epsilon); + } + } + + /** {@inheritDoc} */ + @Override + public Map getConfig() { + return config; + } + + /** {@inheritDoc} */ + @Override + public float getLearningRate() { + return this.learningRate; + } + + /** {@inheritDoc} */ + @Override + public void setLearningRate(float learningRate) { + this.learningRate = learningRate; + } + + /** {@inheritDoc} */ + @Override + protected Optional prepare(String scopeName) { + betaOneConst = tf.constant(betaOne); + betaTwoConst = tf.constant(betaTwo); + learningRateConst = tf.constant(learningRate); + epsilonConst = tf.constant(epsilon); + + return Optional.empty(); + } + + /** {@inheritDoc} */ + @Override + protected void createSlots(List> variables) { + for (Output v : variables) { + createAdamaxSlot(v.asOutput()); + } + betaOnePower = tf.withName("beta1_power").variable(Shape.scalar(), TFloat32.DTYPE); + Assign betaOnePowerInit = tf.assign(betaOnePower, tf.constant(betaOne)); + ((Graph) tf.scope().env()).addInitializer(betaOnePowerInit); + } + + /** + * Create the first and second moment slots + * + * @param v the variable + * @param the datatype of the variable + */ + private void createAdamaxSlot(Output v) { + Operand firstMomentInitializer = + tf.fill(tf.shape(v), tf.dtypes.cast(tf.constant(0.0f), v.dataType())); + createSlot(v.asOutput(), FIRST_MOMENT, firstMomentInitializer); + Operand secondMomentInitializer = + tf.fill(tf.shape(v), tf.dtypes.cast(tf.constant(0.0f), v.dataType())); + createSlot(v.asOutput(), SECOND_MOMENT, secondMomentInitializer); + } + + /** {@inheritDoc} */ + @Override + protected Op applyDense(Output gradient, Output variable) { + Variable firstMomentSlot = getSlot(variable, FIRST_MOMENT).get(); + Variable secondMomentSlot = getSlot(variable, SECOND_MOMENT).get(); + return ApplyAdaMax.create( + scope, + (Operand) variable, + (Operand) firstMomentSlot, + (Operand) secondMomentSlot, + (Operand) tf.dtypes.cast(betaOnePower, gradient.dataType()), + (Operand) tf.dtypes.cast(learningRateConst, gradient.dataType()), + (Operand) tf.dtypes.cast(betaOneConst, gradient.dataType()), + (Operand) tf.dtypes.cast(betaTwoConst, gradient.dataType()), + (Operand) tf.dtypes.cast(epsilonConst, gradient.dataType()), + (Operand) gradient); + } + + /** {@inheritDoc} */ + @Override + protected Op finish(List updateOperations, String name) { + updateOperations.add(tf.assign(betaOnePower, tf.math.mul(betaOnePower, betaOneConst))); + return super.finish(updateOperations, name); + } + + /** {@inheritDoc} */ + @Override + public String getOptimizerName() { + return "Adamax"; + } + + /** + * Initialize the Optimizer from a config object based on which constructor is called. + * + * @param learningRate The learning rate. Defaults to 0.001. + * @param betaOne The exponential decay rate for the 1st moment estimates. Defaults to 0.9. + * @param betaTwo The exponential decay rate for the 2nd moment estimates. Defaults to 0.999. + * @param epsilon A small constant for numerical stability. This epsilon is "epsilon hat" in the + * Kingma and Ba paper (in the formula just before Section 2.1), not the epsilon in Algorithm + * 1 of the paper. Defaults to 1e-7. + */ + protected void initConfig(float learningRate, float betaOne, float betaTwo, float epsilon) { + config.put(NAME_KEY, this.getOptimizerName()); + config.put(LEARNING_RATE_KEY, learningRate); + config.put(EPSILON_KEY, epsilon); + config.put(BETA_ONE_KEY, betaOne); + config.put(BETA_TWO_KEY, betaTwo); + } +} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/Ftrl.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/Ftrl.java new file mode 100644 index 00000000000..aec7af8d6c9 --- /dev/null +++ b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/Ftrl.java @@ -0,0 +1,360 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the ); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.optimizers; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.tensorflow.Operand; +import org.tensorflow.Output; +import org.tensorflow.Session; +import static org.tensorflow.keras.optimizers.OptimizerInterface.assertGraph; +import org.tensorflow.ndarray.Shape; +import org.tensorflow.op.Op; +import org.tensorflow.op.Ops; +import org.tensorflow.op.core.Assign; +import org.tensorflow.op.core.Placeholder; +import org.tensorflow.op.core.Variable; +import org.tensorflow.op.train.ApplyFtrl; +import org.tensorflow.types.TFloat32; +import org.tensorflow.types.family.TType; + +/** Ftrl Optimizer that implements the FTRL algorithm. */ +public class Ftrl extends org.tensorflow.framework.optimizers.Optimizer + implements OptimizerInterface { + + public static final String LEARNING_RATE_KEY = "learning_rate"; + public static final String LEARNING_RATE_POWER_KEY = "learning_rate_power"; + public static final String INITIAL_ACCUM_VALUE_KEY = "initial_accumulator_value"; + public static final String L1STRENGTH_KEY = "l1_regularization_strength"; + public static final String L2STRENGTH_KEY = "l2_regularization_strength"; + public static final String L2_SHRINKAGE_REGULARIZATION_STRENGTH_KEY = + "l2_shrinkage_regularization_strength"; + + public static final float LEARNING_RATE_DEFAULT = 0.001F; + public static final float LEARNING_RATE_POWER_DEFAULT = -0.5F; + public static final float INITIAL_ACCUM_VALUE_DEFAULT = 0.1F; + public static final float L1STRENGTH_DEFAULT = 0.0F; + public static final float L2STRENGTH_DEFAULT = 0.0F; + public static final float L2_SHRINKAGE_REGULARIZATION_STRENGTH_DEFAULT = 0.0F; + + public static final String ACCUMULATOR = "gradient_accumulator"; + public static final String LINEAR_ACCUMULATOR = "linear_accumulator"; + + private final String name; + private float learningRate; + private final float learningRatePower; + private final float initialAccumulatorValue; + private final float l1RegularizationStrength; + private final float l2RegularizationStrength; + private final float l2ShrinkageRegularizationStrength; + + private Map config = new HashMap<>(); + + private boolean useLocking = true; + + /** + * Create a Ftrl Optimizer + * + * @param tf the TensorFlow Ops + */ + public Ftrl(Ops tf) { + this( + tf, + LEARNING_RATE_DEFAULT, + LEARNING_RATE_POWER_DEFAULT, + INITIAL_ACCUM_VALUE_DEFAULT, + L1STRENGTH_DEFAULT, + L2STRENGTH_DEFAULT, + L2_SHRINKAGE_REGULARIZATION_STRENGTH_DEFAULT); + } + + /** + * Create a Ftrl Optimizer + * + * @param tf the TensorFlow Ops + * @param name the Optmizer name + */ + public Ftrl(Ops tf, String name) { + this( + tf, + name, + LEARNING_RATE_DEFAULT, + LEARNING_RATE_POWER_DEFAULT, + INITIAL_ACCUM_VALUE_DEFAULT, + L1STRENGTH_DEFAULT, + L2STRENGTH_DEFAULT, + L2_SHRINKAGE_REGULARIZATION_STRENGTH_DEFAULT); + } + + /** + * Create a Ftrl Optimizer + * + * @param tf the TensorFlow Ops + * @param learningRate the learning rate + */ + public Ftrl(Ops tf, float learningRate) { + this( + tf, + learningRate, + LEARNING_RATE_POWER_DEFAULT, + INITIAL_ACCUM_VALUE_DEFAULT, + L1STRENGTH_DEFAULT, + L2STRENGTH_DEFAULT, + L2_SHRINKAGE_REGULARIZATION_STRENGTH_DEFAULT); + } + + /** + * Create a Ftrl Optimizer + * + * @param tf the TensorFlow Ops + * @param name the Optmizer name + * @param learningRate the learning rate + */ + public Ftrl(Ops tf, String name, float learningRate) { + this( + tf, + name, + learningRate, + LEARNING_RATE_POWER_DEFAULT, + INITIAL_ACCUM_VALUE_DEFAULT, + L1STRENGTH_DEFAULT, + L2STRENGTH_DEFAULT, + L2_SHRINKAGE_REGULARIZATION_STRENGTH_DEFAULT); + } + + /** + * Create a Ftrl Optimizer + * + * @param tf the TensorFlow Ops + * @param learningRate the learning rate + * @param learningRatePower + * @param initialAccumulatorValue + * @param l1Strength + * @param l2Strength + * @param l2ShrinkageRegularizationStrength + */ + public Ftrl( + Ops tf, + float learningRate, + float learningRatePower, + float initialAccumulatorValue, + float l1Strength, + float l2Strength, + float l2ShrinkageRegularizationStrength) { + super(assertGraph(tf)); + this.name = getOptimizerName(); + this.learningRate = learningRate; + this.learningRatePower = learningRatePower; + this.initialAccumulatorValue = initialAccumulatorValue; + this.l1RegularizationStrength = l1Strength; + this.l2RegularizationStrength = l2Strength; + this.l2ShrinkageRegularizationStrength = l2ShrinkageRegularizationStrength; + validateParams(); + initConfig(); + } + + /** + * Create a Ftrl Optimizer + * + * @param tf the TensorFlow Ops + * @param name the Optmizer name + * @param learningRate the learning rate + * @param learningRatePower + * @param initialAccumulatorValue + * @param l1Strength + * @param l2Strength + * @param l2ShrinkageRegularizationStrength + */ + public Ftrl( + Ops tf, + String name, + float learningRate, + float learningRatePower, + float initialAccumulatorValue, + float l1Strength, + float l2Strength, + float l2ShrinkageRegularizationStrength) { + super(assertGraph(tf), name); + this.name = name; + this.learningRate = learningRate; + this.learningRatePower = learningRatePower; + this.initialAccumulatorValue = initialAccumulatorValue; + this.l1RegularizationStrength = l1Strength; + this.l2RegularizationStrength = l2Strength; + this.l2ShrinkageRegularizationStrength = l2ShrinkageRegularizationStrength; + validateParams(); + initConfig(); + } + + + + /** + * Create a Ftrl Optmizer + * + * @param tf the TensorFlow Ops + * @param config a config object to initialize + * @return a new Frtl Optimizer + */ + public static Ftrl create(Ops tf, Map config) { + String name = (String) config.get(NAME_KEY); + float learningRate = (float) config.getOrDefault(LEARNING_RATE_KEY, LEARNING_RATE_DEFAULT); + float learningRatePower = + (float) config.getOrDefault(LEARNING_RATE_POWER_KEY, LEARNING_RATE_POWER_DEFAULT); + float initialAccumulatorValue = + (float) config.getOrDefault(INITIAL_ACCUM_VALUE_KEY, INITIAL_ACCUM_VALUE_DEFAULT); + float l1RegularizationStrength = + (float) config.getOrDefault(L1STRENGTH_KEY, L1STRENGTH_DEFAULT); + float l2RegularizationStrength = + (float) config.getOrDefault(L2STRENGTH_KEY, L2STRENGTH_DEFAULT); + float l2ShrinkageRegularizationStrength = + (float) + config.getOrDefault( + L2_SHRINKAGE_REGULARIZATION_STRENGTH_KEY, + L2_SHRINKAGE_REGULARIZATION_STRENGTH_DEFAULT); + + if (name == null) { + return new Ftrl( + tf, + learningRate, + learningRatePower, + initialAccumulatorValue, + l1RegularizationStrength, + l2RegularizationStrength, + l2ShrinkageRegularizationStrength); + } else { + return new Ftrl( + tf, + name, + learningRate, + learningRatePower, + initialAccumulatorValue, + l1RegularizationStrength, + l2RegularizationStrength, + l2ShrinkageRegularizationStrength); + } + } + + /** Initialize the Config object from the current settings */ + protected void initConfig() { + config.put(NAME_KEY, this.name); + config.put(LEARNING_RATE_KEY, learningRate); + config.put(LEARNING_RATE_POWER_KEY, learningRatePower); + config.put(INITIAL_ACCUM_VALUE_KEY, initialAccumulatorValue); + config.put(L1STRENGTH_KEY, l1RegularizationStrength); + config.put(L2STRENGTH_KEY, l2RegularizationStrength); + config.put(L2_SHRINKAGE_REGULARIZATION_STRENGTH_KEY, l2ShrinkageRegularizationStrength); + } + + /** Validate all the settings of the Frtl Optmizer */ + private void validateParams() { + if (this.initialAccumulatorValue < 0.0F) { + throw new IllegalArgumentException( + String.format( + "initialAccumulatorValue %f needs to be positive or zero", + this.initialAccumulatorValue)); + } + if (this.learningRatePower > 0.0F) { + throw new IllegalArgumentException( + String.format( + "learningRatePower %f needs to be negative or zero", this.learningRatePower)); + } + if (this.l1RegularizationStrength < 0.0F) { + throw new IllegalArgumentException( + String.format( + "'l1RegularizationStrength %f needs to be positive or zero", + this.l1RegularizationStrength)); + } + if (this.l2RegularizationStrength < 0.0F) { + throw new IllegalArgumentException( + String.format( + "'l2RegularizationStrength %f needs to be positive or zero", + this.l2RegularizationStrength)); + } + if (this.l2ShrinkageRegularizationStrength < 0.0F) { + throw new IllegalArgumentException( + String.format( + "'l2ShrinkageRegularizationStrength %f needs to be positive or zero", + this.l2RegularizationStrength)); + } + } + + /** {@inheritDoc} */ + @Override + protected void createSlots(List> variables) { + for (Output v : variables) { + createFtrlSlot(v); + } + } + + /** + * Create a slot variables for the accumulators + * + * @param v the variable + * @param the data type of the variable + */ + private void createFtrlSlot(Output v) { + Operand initializer = + tf.fill(tf.shape(v), tf.dtypes.cast(tf.constant(initialAccumulatorValue), v.dataType())); + createSlot(v.asOutput(), ACCUMULATOR, initializer); + Operand linearInitializer = + tf.fill(tf.shape(v), tf.dtypes.cast(tf.constant(0.0f), v.dataType())); + createSlot(v.asOutput(), LINEAR_ACCUMULATOR, linearInitializer); + } + + /** {@inheritDoc} */ + @Override + protected Op applyDense(Output gradient, Output variable) { + Variable accumSlot = getSlot(variable, ACCUMULATOR).get(); + Variable linearSlot = getSlot(variable, LINEAR_ACCUMULATOR).get(); + ApplyFtrl.Options options = ApplyFtrl.useLocking(useLocking); + return this.tf.train.applyFtrl( + variable, + accumSlot, // accum + linearSlot, // linear + gradient, // gradient + tf.dtypes.cast(tf.constant(learningRate), gradient.dataType()), // lr + tf.dtypes.cast(tf.constant(l1RegularizationStrength), gradient.dataType()), // l1 + tf.dtypes.cast(tf.constant(l2RegularizationStrength), gradient.dataType()), // l2 + tf.dtypes.cast( + tf.constant(l2ShrinkageRegularizationStrength), gradient.dataType()), // l2Shrinkage + tf.dtypes.cast(tf.constant(learningRatePower), gradient.dataType()), // lrPower + options); + } + + /** {@inheritDoc} */ + @Override + public String getOptimizerName() { + return "Ftrl"; + } + + /** {@inheritDoc} */ + @Override + public Map getConfig() { + return config; + } + + /** {@inheritDoc} */ + @Override + public float getLearningRate() { + return this.learningRate; + } + + /** {@inheritDoc} */ + @Override + public void setLearningRate(float learningRate) { + this.learningRate = learningRate; + } +} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/Nadam.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/Nadam.java new file mode 100644 index 00000000000..4772c247ef8 --- /dev/null +++ b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/Nadam.java @@ -0,0 +1,402 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the ); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.optimizers; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import org.tensorflow.Graph; +import org.tensorflow.Operand; +import org.tensorflow.Output; +import static org.tensorflow.keras.optimizers.OptimizerInterface.NAME_KEY; +import static org.tensorflow.keras.optimizers.OptimizerInterface.assertGraph; +import org.tensorflow.ndarray.Shape; +import org.tensorflow.op.Op; +import org.tensorflow.op.Ops; +import org.tensorflow.op.Scope; +import org.tensorflow.op.core.Assign; +import org.tensorflow.op.core.Constant; +import org.tensorflow.op.core.Variable; +import org.tensorflow.types.TFloat32; +import org.tensorflow.types.TInt64; +import org.tensorflow.types.family.TType; + +/** Nadam Optimizer that implements the NAdam algorithm. */ +public class Nadam extends org.tensorflow.framework.optimizers.Optimizer + implements OptimizerInterface { + + public static final String FIRST_MOMENT = "m"; + public static final String SECOND_MOMENT = "v"; + public static final String MOMENTUM = "momentum"; + + public static final String LEARNING_RATE_KEY = "learning_rate"; + public static final String EPSILON_KEY = "epsilon"; + public static final String BETA_ONE_KEY = "beta_1"; + public static final String BETA_TWO_KEY = "beta_2"; + + public static final float LEARNING_RATE_DEFAULT = 0.001F; + public static final float EPSILON_DEFAULT = 1e-07F; + public static final float BETA_ONE_DEFAULT = 0.9F; + public static final float BETA_TWO_DEFAULT = 0.999F; + + private Scope scope; + private final Map config = new HashMap<>(); + + private float learningRate; + private final float betaOne; + private final float betaTwo; + private final float epsilon; + private final float decayBase = 0.96F; + private final float decay = 0.004F; + + private long iterations = 0; + + private Constant learningRateConst; + private Constant betaOneConst; + private Constant betaTwoConst; + private Constant localStepConst; + private Constant nextStepConst; + + private Constant decayBaseConst; + private Constant decayConst; + private Constant epsilonConst; + + private Variable betaOnePower; + private Variable betaTwoPower; + private Variable momentum; + + private Operand m_t; + private Operand m_t_1; + private Operand m_schedule_new; + private Operand m_schedule_next; + private Operand one_minus_beta_1; + private Operand one_minus_beta_2; + private Operand one_minus_m_t; + private Operand one_minus_m_schedule_new; + private Operand one_minus_m_schedule_next; + private Operand v_t_prime_denominator; + + /** + * Create an Optimizer that implements the NAdam algorithm. + * + * @param tf the TensorFlow Ops + */ + public Nadam(Ops tf) { + this(tf, LEARNING_RATE_DEFAULT, BETA_ONE_DEFAULT, BETA_TWO_DEFAULT, EPSILON_DEFAULT); + } + + /** + * Create an Optimizer that implements the NAdam algorithm. + * + * @param tf the TensorFlow Ops + * @param name name for the operations created when applying gradients. Defaults to "Nadam". + */ + public Nadam(Ops tf, String name) { + this(tf, name, LEARNING_RATE_DEFAULT, BETA_ONE_DEFAULT, BETA_TWO_DEFAULT, EPSILON_DEFAULT); + } + + /** + * Create an Optimizer that implements the NAdam algorithm. + * + * @param tf the TensorFlow Ops + * @param learningRate The learning rate. + */ + public Nadam(Ops tf, float learningRate) { + this(tf, learningRate, BETA_ONE_DEFAULT, BETA_TWO_DEFAULT, EPSILON_DEFAULT); + } + + /** + * Create an Optimizer that implements the NAdam algorithm. + * + * @param tf the TensorFlow Ops + * @param name name for the operations created when applying gradients. Defaults to "Adamax". + * @param learningRate The learning rate. + */ + public Nadam(Ops tf, String name, float learningRate) { + this(tf, name, learningRate, BETA_ONE_DEFAULT, BETA_TWO_DEFAULT, EPSILON_DEFAULT); + } + + /** + * Create an Optimizer that implements the NAdam algorithm. + * + * @param tf the TensorFlow Ops + * @param learningRate The learning rate. + * @param betaOne The exponential decay rate for the 1st moment estimates. + * @param betaTwo The exponential decay rate for the exponentially weighted infinity norm. + * @param epsilon A small constant for numerical stability. + */ + public Nadam(Ops tf, float learningRate, float betaOne, float betaTwo, float epsilon) { + super(assertGraph(tf)); + this.learningRate = learningRate; + this.betaOne = betaOne; + this.betaTwo = betaTwo; + this.epsilon = epsilon; + this.scope = tf.scope(); + initConfig(learningRate, betaOne, betaTwo, epsilon); + } + + /** + * Create an Optimizer that implements the NAdam algorithm. + * + * @param tf the TensorFlow Ops + * @param name name for the operations created when applying gradients. + * @param learningRate The learning rate. + * @param betaOne The exponential decay rate for the 1st moment estimates. + * @param betaTwo The exponential decay rate for the exponentially weighted infinity norm. + * @param epsilon A small constant for numerical stability. + */ + public Nadam( + Ops tf, String name, float learningRate, float betaOne, float betaTwo, float epsilon) { + super(assertGraph(tf), name); + this.learningRate = learningRate; + this.betaOne = betaOne; + this.betaTwo = betaTwo; + this.epsilon = epsilon; + this.scope = tf.scope(); + + initConfig(learningRate, betaOne, betaTwo, epsilon); + } + + /** + * Create an Optimizer that implements the NAdam algorithm. + * + * @param tf the TensorFlow Ops + * @param config a config object to initialize + */ + public static Nadam create(Ops tf, Map config) { + String name = (String) config.get(NAME_KEY); + float learningRate = (float) config.getOrDefault(LEARNING_RATE_KEY, LEARNING_RATE_DEFAULT); + float epsilon = (float) config.getOrDefault(EPSILON_KEY, EPSILON_DEFAULT); + float betaOne = (float) config.getOrDefault(LEARNING_RATE_KEY, LEARNING_RATE_DEFAULT); + float betaTwo = (float) config.getOrDefault(LEARNING_RATE_KEY, LEARNING_RATE_DEFAULT); + if (name == null) { + return new Nadam(tf, learningRate, betaOne, betaTwo, epsilon); + } else { + return new Nadam(tf, name, learningRate, betaOne, betaTwo, epsilon); + } + } + + /** {@inheritDoc} */ + @Override + public Map getConfig() { + return config; + } + + /** {@inheritDoc} */ + @Override + public float getLearningRate() { + return this.learningRate; + } + + /** {@inheritDoc} */ + @Override + public void setLearningRate(float learningRate) { + this.learningRate = learningRate; + } + + /** {@inheritDoc} */ + @Override + protected void createSlots(List> variables) { + for (Output v : variables) { + createNadamSlot(v.asOutput()); + } + betaOnePower = tf.withName("beta1_power").variable(Shape.scalar(), TFloat32.DTYPE); + Assign betaOnePowerInit = tf.assign(betaOnePower, tf.constant(betaOne)); + ((Graph) tf.scope().env()).addInitializer(betaOnePowerInit); + + betaTwoPower = tf.withName("beta2_power").variable(Shape.scalar(), TFloat32.DTYPE); + Assign betaTwoPowerInit = tf.assign(betaTwoPower, tf.constant(betaTwo)); + ((Graph) tf.scope().env()).addInitializer(betaTwoPowerInit); + + momentum = tf.withName("momentum").variable(Shape.scalar(), TFloat32.DTYPE); + Assign momentumInit = tf.assign(momentum, tf.constant(1.0F)); + ((Graph) tf.scope().env()).addInitializer(momentumInit); + } + + /** + * Create slots for first and second momements and momentum + * @param v the variable + * @param the data type or the Variable + */ + private void createNadamSlot(Output v) { + Operand firstMomentInitializer = + tf.fill(tf.shape(v), tf.dtypes.cast(tf.constant(0.0f), v.dataType())); + createSlot(v.asOutput(), FIRST_MOMENT, firstMomentInitializer); + Operand secondMomentInitializer = + tf.fill(tf.shape(v), tf.dtypes.cast(tf.constant(0.0f), v.dataType())); + createSlot(v.asOutput(), SECOND_MOMENT, secondMomentInitializer); + + Operand momentumInitializer = + tf.fill(tf.shape(v), tf.dtypes.cast(tf.constant(1.0f), v.dataType())); + createSlot(v.asOutput(), MOMENTUM, momentumInitializer); + } + + /** {@inheritDoc} */ + @Override + protected Optional prepare(String scopeName) { + Constant one = tf.constant(1.0F); + Constant point5 = tf.constant(0.5F); + + learningRateConst = tf.constant(learningRate); + betaOneConst = tf.constant(betaOne); + betaTwoConst = tf.constant(betaTwo); + localStepConst = tf.constant(this.iterations + 1); + nextStepConst = tf.constant(this.iterations + 2); + decayConst = tf.constant(decay); + decayBaseConst = tf.constant(this.decayBase); + epsilonConst = tf.constant(this.epsilon); + + // m_t = beta_1_t * (1. - 0.5 * ( math_ops.pow(decay_base, self._initial_decay * local_step))) + m_t = + tf.math.mul( + betaOneConst, + tf.math.sub( + one, + tf.math.mul( + point5, + tf.math.pow( + decayBaseConst, + tf.math.mul(decayConst, tf.dtypes.cast(localStepConst, TFloat32.DTYPE)))))); + // m_t_1 = beta_1_t * (1. - 0.5 * ( math_ops.pow(decay_base, self._initial_decay * next_step))) + m_t_1 = + tf.math.mul( + betaOneConst, + tf.math.sub( + one, + tf.math.mul( + point5, + tf.math.pow( + decayBaseConst, + tf.math.mul(decayConst, tf.dtypes.cast(nextStepConst, TFloat32.DTYPE)))))); + + // m_schedule_new = math_ops.cast(self._m_cache_read, var_dtype) * m_t + m_schedule_new = tf.math.mul(momentum, m_t); + // if var_dtype is self._m_cache.dtype: + // m_schedule_new = array_ops.identity(state_ops.assign( + // self._m_cache, m_schedule_new, use_locking=self._use_locking)) + m_schedule_new = tf.identity(tf.assign(momentum, m_schedule_new, Assign.useLocking(true))); + // m_schedule_next = m_schedule_new * m_t_1 + m_schedule_next = tf.math.mul(m_schedule_new, m_t_1); + + // 1 - beta_1_t + one_minus_beta_1 = tf.math.sub(one, betaOneConst); + // 1 - beta_2_t, + one_minus_beta_2 = tf.math.sub(one, betaTwoConst); + // 1. - m_t, + one_minus_m_t = tf.math.sub(one, m_t); + // 1. - m_schedule_new + one_minus_m_schedule_new = tf.math.sub(one, m_schedule_new); + // 1. - m_schedule_next + one_minus_m_schedule_next = tf.math.sub(one, m_schedule_next); + // 1. - math_ops.pow(beta_2_t, local_step) + v_t_prime_denominator = + tf.math.sub(one, tf.math.pow(betaTwoConst, tf.dtypes.cast(localStepConst, TFloat32.DTYPE))); + return Optional.empty(); + } + + /** {@inheritDoc} */ + @Override + protected Op applyDense(Output gradient, Output variable) { + Variable m = getSlot(variable, FIRST_MOMENT).get(); // first Moment + Variable v = getSlot(variable, SECOND_MOMENT).get(); // Second Moment + + // g_prime = grad / coefficients['one_minus_m_schedule_new'] + Operand g_prime = tf.math.div((Operand) gradient, one_minus_m_schedule_new); + // m_t = (coefficients['beta_1_t'] * m + coefficients['one_minus_beta_1_t'] * grad) + Operand m_t = + tf.math.add( + tf.math.mul(betaOneConst, (Operand) m), + tf.math.mul(one_minus_beta_1, (Operand) gradient)); + // m_t = state_ops.assign(m, m_t, use_locking=self._use_locking) + // update m + m_t = tf.assign(m, m_t, Assign.useLocking(true)); + + // m_t_prime = m_t / coefficients['one_minus_m_schedule_next'] + Operand m_t_prime = tf.math.div(m_t, one_minus_m_schedule_next); + + // v_t = (coefficients['beta_2_t'] * v + coefficients['one_minus_beta_2_t'] * + // math_ops.square(grad)) + Operand v_t = + tf.math.add( + tf.math.mul(betaTwoConst, (Operand) v), + tf.math.mul(one_minus_beta_2, tf.math.square((Operand) gradient))); + // v_t = state_ops.assign(v, v_t, use_locking=self._use_locking) + // update v + v_t = tf.assign(v, v_t, Assign.useLocking(true)); + + // v_t_prime = v_t / coefficients['v_t_prime_denominator'] + Operand v_t_prime = tf.math.div(v_t, v_t_prime_denominator); + + // m_t_bar = (coefficients['one_minus_m_t'] * g_prime + coefficients['m_t_1'] * m_t_prime) + Operand m_t_bar = + tf.math.add(tf.math.mul(one_minus_m_t, g_prime), tf.math.mul(m_t_1, m_t_prime)); + // var_t = var - coefficients['lr_t'] * m_t_bar / (math_ops.sqrt(v_t_prime) + + // coefficients['epsilon']) + Operand var_t = + tf.math.sub( + variable, + tf.math.div( + tf.math.mul(learningRateConst, m_t_bar), + tf.math.add(tf.math.sqrt(v_t_prime), epsilonConst))); + // assign(var, var_t, use_locking=self._use_locking) + return tf.assign(variable, var_t, Assign.useLocking(true)); + } + + /** + * Gathers up the update operations into a single op that can be used as a run target. + * + *

Adds the betaOne, betaTwo and mu updates to the end of the updates list. + * + * @param updateOperations The update operations. + * @param name The name of the run target. + * @return A NoOp with a control dependency on each update operation. + */ + @Override + protected Op finish(List updateOperations, String name) { + iterations++; // increment the step; + updateOperations.add(tf.assign(betaOnePower, tf.math.mul(betaOnePower, betaOneConst))); + updateOperations.add(tf.assign(betaTwoPower, tf.math.mul(betaTwoPower, betaTwoConst))); + return super.finish(updateOperations, name); + } + + /** {@inheritDoc} */ + @Override + public String getOptimizerName() { + return "Nadam"; + } + + /** + * Sets the config object based on the current state of the Optmizer. + * + * @param learningRate The learning rate. Defaults to 0.001. + * @param betaOne The exponential decay rate for the 1st moment estimates. Defaults to 0.9. + * @param betaTwo The exponential decay rate for the 2nd moment estimates. Defaults to 0.999. + * @param epsilon A small constant for numerical stability. This epsilon is "epsilon hat" in the + * Kingma and Ba paper (in the formula just before Section 2.1), not the epsilon in Algorithm + * 1 of the paper. Defaults to 1e-7. + */ + private void initConfig(float learningRate, float betaOne, float betaTwo, float epsilon) { + config.put(NAME_KEY, this.getOptimizerName()); + config.put(LEARNING_RATE_KEY, learningRate); + config.put(EPSILON_KEY, epsilon); + config.put(BETA_ONE_KEY, betaOne); + config.put(BETA_TWO_KEY, betaTwo); + } + + private float calcM(int iteration) { + return betaOne * (1 - .05F * (float) Math.pow(this.decayBase, this.decay * iteration)); + } +} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/OptimizerInterface.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/OptimizerInterface.java new file mode 100644 index 00000000000..9e3223deb80 --- /dev/null +++ b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/OptimizerInterface.java @@ -0,0 +1,59 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.optimizers; + +import java.util.Map; +import org.tensorflow.Graph; +import org.tensorflow.op.Ops; + +/** The main Interface for Keras Optimizers */ +public interface OptimizerInterface { + + /** The value for the name key in the Config object */ + public static final String NAME_KEY = "name"; + + /** + * Get a TensorFlow Graph from the Ops. + * + * @param tf the TensorFlow Ops + * @return the graph + * @throws java.lang.AssertionError if the TensorFlow Ops does not represent Graph mode + */ + public static Graph assertGraph(Ops tf) { + assert tf.scope().env().isGraph() : "Optimizers can only be used in Graph Mode"; + return (Graph) tf.scope().env(); + } + + /** + * Return the config object used to initialize the Optimizer + * + * @return the config object used to initialize the Optimizer + */ + public Map getConfig(); + + /** + * Return the current learning rate + * + * @return the current learning rate + */ + public float getLearningRate(); + + /** + * Set the learning rate + * + * @param learningRate the learning rate; + */ + public void setLearningRate(float learningRate); +} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/Optimizers.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/Optimizers.java new file mode 100644 index 00000000000..3892e239dad --- /dev/null +++ b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/Optimizers.java @@ -0,0 +1,124 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.optimizers; + +import org.tensorflow.framework.optimizers.Optimizer; +import org.tensorflow.op.Ops; + +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; +import java.util.HashMap; +import java.util.Map; +import java.util.function.Function; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.function.Supplier; + +/** + * Functions to get an Optimizer based on String name, an Optimizer class, or lambda function. + * + *

Example: + * + *

+ *     Adam instance = Optimizers.get(tf, "adam");
+ *     Ftrl instance = Optimizers.get(tf, ltf -> new Ftrl(ltf, 0.1f);
+ * 
+ */ +public class Optimizers { + + static Map> map = + new HashMap>() { + { + put("adadelta", tf -> new AdaDelta(tf)); + put("adagrad", tf -> new AdaGrad(tf)); + put("adagrad-da", tf -> new AdaGradDA(tf)); + put("adam", tf -> new Adam(tf)); + put("adamax", tf -> new Adamax(tf)); + put("ftrl", tf -> new Ftrl(tf)); + put("nadam", tf -> new Nadam(tf)); + put("rmsprop", tf -> new RMSProp(tf)); + put("sgd", tf -> new SGD(tf)); + } + }; + + /** + * Get an Optimizer + * + * @param optimizerFunction either a String that identifies the Optimizer, an Optimizer class, or + * an Optimizer object. + * @return the Optimizer object or null if not found. + */ + public static Optimizer get(Ops tf, Object optimizerFunction) { + return get(tf, optimizerFunction, null); + } + + /** + * Get an Initializer + * + * @param si a lamda function + * @return the Intializer object + */ + public static Optimizer get(Ops tf, Function func) { + return func.apply(tf); + } + + /** + * Get an Initializer + * + * @param optimizerFunction + * @param custom_functions a map of Initializer lambdas that will be queried if the Optimizer is + * not found in the standard keys + * @return the Optimizer object + */ + public static Optimizer get( + Ops tf, Object optimizerFunction, Map> custom_functions) { + if (optimizerFunction != null) { + if (optimizerFunction instanceof String) { + String s = + optimizerFunction + .toString(); // do this for Java 8 rather than Pattern Matching for instanceof + Function function = map.get(s); + if (function == null && custom_functions != null) { + function = custom_functions.get(s); + } + return function != null ? function.apply(tf) : null; + } else if (optimizerFunction instanceof Class) { + Class c = (Class) optimizerFunction; // do this for Java 8 rather than Pattern Matching for + // instanceof + try { + Constructor ctor = c.getConstructor(Ops.class); + return (Optimizer) ctor.newInstance(tf); + } catch (NoSuchMethodException + | InstantiationException + | IllegalAccessException + | IllegalArgumentException + | InvocationTargetException ex) { + Logger.getLogger(Optimizers.class.getName()).log(Level.SEVERE, null, ex); + } + } else if (optimizerFunction instanceof Optimizer) { + return (Optimizer) optimizerFunction; + } else if (optimizerFunction instanceof Function) { + return ((Function) optimizerFunction).apply(tf); + } else if (optimizerFunction instanceof Supplier) { + return ((Supplier) optimizerFunction).get(); + } + } else { + return null; + } + + throw new IllegalArgumentException( + "optimizerFunction must be a symbolic name, Optimizer, Function, Supplier or a Class object"); + } +} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/RMSProp.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/RMSProp.java new file mode 100644 index 00000000000..c66c6bdd388 --- /dev/null +++ b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/RMSProp.java @@ -0,0 +1,201 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the ); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.optimizers; + +import java.util.HashMap; +import java.util.Map; +import static org.tensorflow.keras.optimizers.OptimizerInterface.NAME_KEY; +import static org.tensorflow.keras.optimizers.OptimizerInterface.assertGraph; +import org.tensorflow.op.Ops; + +/** RMSProp Optimizer that implements the RMSProp algorithm. */ +public class RMSProp extends org.tensorflow.framework.optimizers.RMSProp + implements OptimizerInterface { + + public static final String LEARNING_RATE_KEY = "learning_rate"; + public static final String DECAY_KEY = "decay"; + public static final String MOMENTUM_KEY = "momentum"; + public static final String EPSILON_KEY = "epsilon"; + public static final String CENTERED_KEY = "centered"; + + public static final float LEARNING_RATE_DEFAULT = 0.001F; + public static final float DECAY_DEFAULT = 0.9F; + public static final float MOMENTUM_DEFAULT = 0.0F; + public static final float EPSILON_DEFAULT = 1e-07F; + public static final boolean CENTERED_DEFAULT = false; + + private Map config = new HashMap<>(); + private float learningRate; + + /** + * Create an RMSProp Optimizer with the following defaults, name="RMSProp", learning_rate=0.001, + * decay=0.9, momentum=0.0, epsilon=1e-07, centered=false + * + * @param tf the TensorFlow Ops + */ + public RMSProp(Ops tf) { + this( + tf, + LEARNING_RATE_DEFAULT, + DECAY_DEFAULT, + MOMENTUM_DEFAULT, + EPSILON_DEFAULT, + CENTERED_DEFAULT); + } + + /** + * Create an RMSProp Optimizer with the following defaults, name="RMSProp", decay=0.9, + * momentum=0.0, epsilon=1e-07, centered=false + * + * @param tf the TensorFlow Ops + * @param learningRate The learning rate. + */ + public RMSProp(Ops tf, float learningRate) { + this(tf, learningRate, DECAY_DEFAULT, MOMENTUM_DEFAULT, EPSILON_DEFAULT, CENTERED_DEFAULT); + } + + /** + * Create an RMSProp Optimizer with the following defaults, decay=0.9, momentum=0.0, + * epsilon=1e-07, centered=false + * + * @param tf the TensorFlow Ops + * @param name prefix for the operations created when applying gradients. Defaults to "RMSProp" + * @param learningRate The learning rate. + */ + public RMSProp(Ops tf, String name, float learningRate) { + this( + tf, name, learningRate, DECAY_DEFAULT, MOMENTUM_DEFAULT, EPSILON_DEFAULT, CENTERED_DEFAULT); + } + + /** + * Create an RMSProp Optimizer + * + * @param tf the TensorFlow Ops + * @param learningRate The learning rate. Defaults to 0.001. + * @param decay Discounting factor for the history/coming gradient. Defaults to 0.9. + * @param momentum hyperparameter that accelerates descent in the relevant direction and dampens + * oscillations. Must be between [0, 1]. + * @param epsilon A small constant for numerical stability. + * @param centered If True, gradients are normalized by the estimated variance of the gradient; if + * False, by the uncentered second moment. + */ + public RMSProp( + Ops tf, float learningRate, float decay, float momentum, float epsilon, boolean centered) { + super(assertGraph(tf), learningRate, decay, momentum, epsilon, centered); + initConfig(learningRate, decay, momentum, epsilon, centered); + } + + /** + * Create an RMSProp Optimizer + * + * @param tf the TensorFlow Ops + * @param name prefix for the operations created when applying gradients. Defaults to "RMSProp" + * @param learningRate The learning rate. Defaults to 0.001. + * @param decay Discounting factor for the history/coming gradient. Defaults to 0.9. + * @param momentum hyperparameter that accelerates descent in the relevant direction and dampens + * oscillations. Must be between [0, 1]. + * @param epsilon A small constant for numerical stability. + * @param centered If True, gradients are normalized by the estimated variance of the gradient; if + * False, by the uncentered second moment. + */ + public RMSProp( + Ops tf, + String name, + float learningRate, + float decay, + float momentum, + float epsilon, + boolean centered) { + super(assertGraph(tf), name, learningRate, decay, momentum, epsilon, centered); + initConfig(learningRate, decay, momentum, epsilon, centered); + } + + /** + * Create a RMSProp Optimizer using a configuration + * + * @param tf the TensorFlow Ops + * @param config a config object to initialize the Optimizer, the config object has keys for + * "name", "learning_rate", "decay", "momentum", "epsilon" and "centered". If a key is missing + * the default value is used. + * @return the RMSProp optimizer + */ + public static RMSProp fromConfig(Ops tf, Map config) { + return create(tf, config); + } + + /** + * Create a RMSProp Optimizer using a configuration + * + * @param tf the TensorFlow Ops + * @param config a config object to initialize the Optimizer, the config object has keys for + * "name", "learning_rate", "decay", "momentum", "epsilon" and "centered". If a key is missing + * the default value is used. + * @return the RMSProp optimizer + */ + public static RMSProp create(Ops tf, Map config) { + + String name = (String) config.get(NAME_KEY); + float learningRate = (float) config.getOrDefault(LEARNING_RATE_KEY, LEARNING_RATE_DEFAULT); + float decay = (float) config.getOrDefault(DECAY_KEY, DECAY_DEFAULT); + float momentum = (float) config.getOrDefault(MOMENTUM_KEY, MOMENTUM_DEFAULT); + float epsilon = (float) config.getOrDefault(EPSILON_KEY, EPSILON_DEFAULT); + boolean centered = (boolean) config.getOrDefault(CENTERED_KEY, CENTERED_DEFAULT); + if (name == null) { + return new RMSProp(tf, learningRate, decay, momentum, epsilon, centered); + } else { + return new RMSProp(tf, name, learningRate, decay, momentum, epsilon, centered); + } + } + + /** + * Initialize the configuration based on which constructor is called. + * + * @param learningRate The learning rate. Defaults to 0.001. + * @param decay Discounting factor for the history/coming gradient. Defaults to 0.9. + * @param momentum hyperparameter that accelerates descent in the relevant direction and dampens + * oscillations. Must be between [0, 1]. + * @param epsilon A small constant for numerical stability. + * @param centered If True, gradients are normalized by the estimated variance of the gradient; if + * False, by the uncentered second moment. + */ + private void initConfig( + float learningRate, float decay, float momentum, float epsilon, boolean centered) { + this.learningRate = learningRate; + config.put(NAME_KEY, this.getOptimizerName()); + config.put(LEARNING_RATE_KEY, learningRate); + config.put(DECAY_KEY, decay); + config.put(MOMENTUM_KEY, momentum); + config.put(EPSILON_KEY, epsilon); + config.put(CENTERED_KEY, centered); + } + + /** {@inheritDoc} */ + @Override + public Map getConfig() { + return config; + } + + /** {@inheritDoc} */ + @Override + public float getLearningRate() { + return this.learningRate; + } + + /** {@inheritDoc} */ + @Override + public void setLearningRate(float learningRate) { + this.learningRate = learningRate; + } +} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/SGD.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/SGD.java new file mode 100644 index 00000000000..2faf777b4ad --- /dev/null +++ b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/SGD.java @@ -0,0 +1,199 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the ); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.optimizers; + +import java.util.HashMap; +import java.util.Map; +import static org.tensorflow.keras.optimizers.OptimizerInterface.NAME_KEY; +import static org.tensorflow.keras.optimizers.OptimizerInterface.assertGraph; +import org.tensorflow.op.Ops; + +/** Stochastic Gradient Descent and momentum optimizer. */ +public class SGD extends org.tensorflow.framework.optimizers.Momentum + implements OptimizerInterface { + + public static final String LEARNING_RATE_KEY = "learning_rate"; + public static final String MOMENTUM_KEY = "momentum"; + public static final String NESTEROV_KEY = "nesterov"; + + public static final float LEARNING_RATE_DEFAULT = 0.01F; + public static final float MOMENTUM_DEFAULT = 0.0F; + public static final boolean NESTEROV_DEFAULT = false; + + private Map config = new HashMap<>(); + private float learningRate; + + /** + * Create a Stochastic Gradient Descent optimizer using defaults: name="SGD", learning_rate=0.01, + * momentum=0.0, and nesterov=false + * + * @param tf the TensorFlow Ops + */ + public SGD(Ops tf) { + this(tf, LEARNING_RATE_DEFAULT, MOMENTUM_DEFAULT, NESTEROV_DEFAULT); + } + + /** + * Create a Stochastic gradient descent optimizer using defaults: name="SGD", momentum=0.0, and + * nesterov=false + * + * @param tf the TensorFlow Ops + * @param learningRate The learning rate. Defaults to 0.01. + */ + public SGD(Ops tf, float learningRate) { + this(tf, learningRate, MOMENTUM_DEFAULT, NESTEROV_DEFAULT); + } + + /** + * Create a Stochastic gradient descent optimizer using defaults: name="SGD", and nesterov=false + * + * @param tf the TensorFlow Ops + * @param learningRate The learning rate. Defaults to 0.01. + * @param momentum hyperparameter that accelerates SGD in the relevant direction and dampens + * oscillations. Must be between [0, 1]. + */ + public SGD(Ops tf, float learningRate, float momentum) { + this(tf, learningRate, momentum, NESTEROV_DEFAULT); + } + + /** + * Create a Stochastic gradient descent optimizer using defaults: momentum=0.0, and nesterov=false + * + * @param tf the TensorFlow Ops + * @param name prefix for the operations created when applying gradients + * @param learningRate The learning rate. Defaults to 0.01. + */ + public SGD(Ops tf, String name, float learningRate) { + this(tf, name, learningRate, MOMENTUM_DEFAULT, NESTEROV_DEFAULT); + } + + /** + * create a Stochastic gradient descent optimizer using defaults: momentum=0.0, and nesterov=false + * + * @param tf the TensorFlow Ops + * @param name prefix for the operations created when applying gradients + * @param learningRate The learning rate. Defaults to 0.01. + * @param momentum hyperparameter that accelerates SGD in the relevant direction and dampens + * oscillations. Must be between [0, 1]. + */ + public SGD(Ops tf, String name, float learningRate, float momentum) { + this(tf, name, learningRate, momentum, NESTEROV_DEFAULT); + } + + /** + * Create a Stochastic gradient descent optimizer + * + * @param tf the TensorFlow Ops + * @param learningRate The learning rate. Defaults to 0.01. + * @param momentum hyperparameter that accelerates SGD in the relevant direction and dampens + * oscillations. Must be between [0, 1]. + * @param useNesterov Whether to apply Nesterov momentum. Defaults to `false`. + */ + public SGD(Ops tf, float learningRate, float momentum, boolean useNesterov) { + super(assertGraph(tf), learningRate, momentum, useNesterov); + assert momentum >= 0.0F && momentum <= 1.0F : "\"momentum\" must be between [0, 1]."; + initConfig(learningRate, momentum, useNesterov); + } + + /** + * Create a Stochastic gradient descent optimizer + * + * @param tf the TensorFlow Ops + * @param name prefix for the operations created when applying gradients + * @param learningRate The learning rate. Defaults to 0.01. + * @param momentum hyperparameter that accelerates SGD in the relevant direction and dampens + * oscillations. Must be between [0, 1]. + * @param useNesterov Whether to apply Nesterov momentum. Defaults to `false`. + */ + public SGD(Ops tf, String name, float learningRate, float momentum, boolean useNesterov) { + super(assertGraph(tf), name, learningRate, momentum, useNesterov); + assert momentum >= 0.0F && momentum <= 1.0F : "\"momentum\" must be between [0, 1]."; + initConfig(learningRate, momentum, useNesterov); + } + + /** + * Create a Stochastic gradient descent optimizer + * + * @param tf the TensorFlow Ops + * @param config a config object to initialize, the config object has keys for "name", + * "learning_rate", "momentum", and "nesterov". If a key is missing the default value is used. + * @return the Stochastic gradient descent optimizer + */ + public static SGD fromConfig(Ops tf, Map config) { + return create(tf, config); + } + + /** + * Create a Stochastic gradient descent optimizer + * + * @param tf the TensorFlow Ops + * @param config a config object to initialize, the config object has keys for "name", + * "learning_rate", "momentum", and "nesterov". If a key is missing the default value is used. + * @return the Stochastic gradient descent optimizer + */ + public static SGD create(Ops tf, Map config) { + + String name = (String) config.get(NAME_KEY); + float learningRate = (float) config.getOrDefault(LEARNING_RATE_KEY, LEARNING_RATE_DEFAULT); + float momentum = (float) config.getOrDefault(MOMENTUM_KEY, MOMENTUM_DEFAULT); + boolean nesterov = (boolean) config.getOrDefault(NESTEROV_KEY, NESTEROV_DEFAULT); + if (name == null) { + return new SGD(tf, learningRate, momentum, nesterov); + } else { + return new SGD(tf, name, learningRate, momentum, nesterov); + } + } + + /** + * Initialize the configuration ased on which constructor is called. + * + * @param learningRate learningRate The learning rate. Defaults to 0.01. + * @param momentum hyperparameter that accelerates SGD in the relevant direction and dampens + * oscillations. Must be between [0, 1]. + * @param useNesterov Whether to apply Nesterov momentum. Defaults to `false`. + */ + private void initConfig(float learningRate, float momentum, boolean useNesterov) { + this.learningRate = learningRate; + config.put(NAME_KEY, this.getOptimizerName()); + config.put(LEARNING_RATE_KEY, learningRate); + config.put(MOMENTUM_KEY, momentum); + config.put(NESTEROV_KEY, useNesterov); + } + + /** { @inheritDoc } */ + @Override + public Map getConfig() { + return config; + } + + /** {@inheritDoc} */ + @Override + public float getLearningRate() { + return this.learningRate; + } + + /** {@inheritDoc} */ + @Override + public void setLearningRate(float learningRate) { + this.learningRate = learningRate; + } + + // overide the momentum name to return "SGD" + /** {@inheritDoc} */ + @Override + public String getOptimizerName() { + return "SGD"; + } +} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/ND.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/ND.java new file mode 100644 index 00000000000..f04ed7bcd70 --- /dev/null +++ b/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/ND.java @@ -0,0 +1,717 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.utils; + +import java.util.Arrays; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicReference; +import org.tensorflow.ndarray.FloatNdArray; +import org.tensorflow.ndarray.NdArray; +import org.tensorflow.ndarray.NdArrays; +import org.tensorflow.ndarray.Shape; + +// TODO used in the Callbacks, this should be a part of NDArray? +/** NDArray math Utilities */ +public class ND { + + /** + * Returns a string representation of the contents of the specified array. + * + *

The string representation consists of a list of the array's elements, enclosed in square + * brackets ("[]"). Adjacent elements are separated by the characters ", " (a comma followed by a + * space). Elements are converted to strings as by String.valueOf(int). Returns "null" if a is + * null. + * + * @param array the array to convert. + * @return the String representaion of the contents of the specified array + */ + public static String toString(NdArray array) { + if (array == null) return "null"; + StringBuilder sb = new StringBuilder(); + sb.append("["); + AtomicBoolean first = new AtomicBoolean(true); + array + .elements(0) + .forEachIndexed( + (idx, v) -> { + if (!first.get()) { + sb.append(", "); + } else { + first.set(false); + } + Object f = v.getObject(); + if (v.rank() == 0) { + sb.append(f); + } else { + sb.append(toString(v)); + } + }); + sb.append("]"); + return sb.toString(); + } + + /** + * Transforms a flat index into coordinates based on shape. + * + * @param shape the shape + * @param index the index + * @return the coordinates + */ + private static long[] getCoordinates(Shape shape, long index) { + long[] coordinates = new long[shape.numDimensions()]; + + int numDims = shape.numDimensions(); + int i = numDims - 1; + for (; i >= 0; i--) { + long size = shape.size(i); + long mod = index % size; + coordinates[i] = mod; + index -= mod; + } + return coordinates; + } + + /** + * Gets the square root of an array. + * + * @param a the array + * @return the square root of the array. + */ + public static FloatNdArray sqrt(FloatNdArray a) { + FloatNdArray result = NdArrays.ofFloats(a.shape()); + int nDims = a.shape().numDimensions(); + a.elements(nDims - 1) + .forEachIndexed( + (idx, v) -> { + result.setFloat((float) Math.sqrt(v.getFloat()), idx); + }); + return result; + } + + /** + * Gets the square of an array. + * + * @param a the array + * @return the square of the array. + */ + public static FloatNdArray square(FloatNdArray a) { + FloatNdArray result = NdArrays.ofFloats(a.shape()); + int nDims = a.shape().numDimensions(); + a.elements(nDims - 1) + .forEachIndexed( + (idx, v) -> { + result.setFloat(v.getFloat() * v.getFloat(), idx); + }); + return result; + } + + /** + * Adds two arrays + * + * @param a the array + * @param b the array + * @return the resulting array from the add operation + */ + public static FloatNdArray add(FloatNdArray a, FloatNdArray b) { + assert (a.shape().size() == b.shape().size()); + FloatNdArray result = NdArrays.ofFloats(a.shape()); + int nDims = a.shape().numDimensions(); + a.elements(nDims - 1) + .forEachIndexed( + (idx, v) -> { + result.setFloat(v.getFloat() + b.getFloat(idx), idx); + }); + return result; + } + + /** + * Adds an array with a scalar value + * + * @param a the array + * @param scalar the scalar value + * @return the resulting array from the add operation + */ + public static FloatNdArray add(FloatNdArray a, float scalar) { + FloatNdArray result = NdArrays.ofFloats(a.shape()); + + int nDims = a.shape().numDimensions(); + a.elements(nDims - 1) + .forEachIndexed( + (idx, v) -> { + result.setFloat(v.getFloat() + scalar, idx); + }); + return result; + } + + /** + * Adds an array with a scalar value + * + * @param scalar the scalar value + * @param a the array + * @return the resulting array from the add operation + */ + public static FloatNdArray add(float scalar, FloatNdArray a) { + return add(a, scalar); + } + + /** + * subtracts one array from the other + * + * @param a the minuend array + * @param b the subtrahend array + * @return the resulting array from the subtraction operation + */ + public static FloatNdArray sub(FloatNdArray a, FloatNdArray b) { + assert (a.shape().size() == b.shape().size()); + FloatNdArray result = NdArrays.ofFloats(a.shape()); + int nDims = a.shape().numDimensions(); + a.elements(nDims - 1) + .forEachIndexed( + (idx, v) -> { + result.setFloat(v.getFloat() - b.getFloat(idx), idx); + }); + return result; + } + + /** + * subtracte scalar from an array + * + * @param a the minuend array + * @param scalar the subtrahend value + * @return the resulting array from the subtraction operation + */ + public static FloatNdArray sub(FloatNdArray a, float scalar) { + FloatNdArray result = NdArrays.ofFloats(a.shape()); + int nDims = a.shape().numDimensions(); + a.elements(nDims - 1) + .forEachIndexed( + (idx, v) -> { + result.setFloat(v.getFloat() - scalar, idx); + }); + return result; + } + + /** + * subtract an array from a scalar + * + * @param scalar the minuend value + * @param a the subtrahend array + * @return the resulting array from the subtraction operation + */ + public static FloatNdArray sub(float scalar, FloatNdArray a) { + FloatNdArray result = NdArrays.ofFloats(a.shape()); + int nDims = a.shape().numDimensions(); + a.elements(nDims - 1) + .forEachIndexed( + (idx, v) -> { + result.setFloat(scalar - v.getFloat(), idx); + }); + return result; + } + + /** + * Multiply 2 arrays + * + * @param a the first array + * @param b the second array + * @return the resulting array from the muliply operation + */ + public static FloatNdArray mul(FloatNdArray a, FloatNdArray b) { + assert a.shape().equals(b.shape()) + : String.format( + "ValueError: operands do not have same shapes %s %s ", a.shape(), b.shape()); + boolean sameSize = a.shape().size() == b.shape().size(); + FloatNdArray result = NdArrays.ofFloats(a.shape()); + int nDims = a.shape().numDimensions(); + + a.elements(nDims - 1) + .forEachIndexed( + (idx, v) -> { + if (sameSize) { + result.setFloat(v.getFloat() * b.getFloat(idx), idx); + } else { + float value = v.getFloat() * b.getFloat(idx[0], 0L); + result.setFloat(value, idx); + } + }); + return result; + } + + /** + * Multiply an array with a scalar value + * + * @param a the array + * @param scalar the scalar value + * @return the resulting array from the Multiply operation + */ + public static FloatNdArray mul(FloatNdArray a, float scalar) { + FloatNdArray result = NdArrays.ofFloats(a.shape()); + if (a.shape().isScalar()) { + a.scalars().forEach(f -> result.setFloat(f.getFloat() * scalar)); + } else { + a.scalars().forEachIndexed((idx, f) -> result.setFloat(f.getFloat() * scalar, idx)); + } + + return result; + } + + /** + * Multiply a scalar value with an array + * + * @param scalar the scalar value + * @param a the array + * @return the resulting array from the Multiply operation + */ + public static FloatNdArray mul(float scalar, FloatNdArray a) { + return mul(a, scalar); + } + + /** + * Divide two arrays + * + * @param a the dividend array + * @param b the divisor array + * @return the resulting array from the Divide operation + */ + public static FloatNdArray div(FloatNdArray a, FloatNdArray b) { + assert (a.shape().size() == b.shape().size()); + FloatNdArray result = NdArrays.ofFloats(a.shape()); + int nDims = a.shape().numDimensions(); + a.elements(nDims - 1) + .forEachIndexed( + (idx, v) -> { + result.setFloat(v.getFloat() / b.getFloat(idx), idx); + }); + return result; + } + + /** + * Divide an array by a scalar + * + * @param a the dividend array + * @param scalar the scalar divisor + * @return the resulting array from the Divide operation + */ + public static FloatNdArray div(FloatNdArray a, float scalar) { + assert (scalar != 0); + FloatNdArray result = NdArrays.ofFloats(a.shape()); + int nDims = a.shape().numDimensions(); + a.elements(nDims - 1) + .forEachIndexed( + (idx, v) -> { + result.setFloat(v.getFloat() / scalar, idx); + }); + return result; + } + + /** + * Divide a scalar by an array + * + * @param scalar the scalar dividend + * @param a the divisor array + * @return the resulting array from the Divide operation + */ + public static FloatNdArray div(float scalar, FloatNdArray a) { + FloatNdArray result = NdArrays.ofFloats(a.shape()); + int nDims = a.shape().numDimensions(); + a.elements(nDims - 1) + .forEachIndexed( + (idx, v) -> { + float value = v.getFloat() == 0.0F ? Float.NaN : scalar / v.getFloat(); + result.setFloat(value, idx); + }); + return result; + } + + /** + * Raise the first array by the power of the second array + * + * @param a the first array + * @param b the second array + * @return the array result of the power operation + */ + public static FloatNdArray pow(FloatNdArray a, FloatNdArray b) { + assert (a.shape().size() == b.shape().size()); + FloatNdArray result = NdArrays.ofFloats(a.shape()); + int nDims = a.shape().numDimensions(); + a.elements(nDims - 1) + .forEachIndexed( + (idx, v) -> { + result.setFloat((float) Math.pow(v.getFloat(), b.getFloat(idx)), idx); + }); + return result; + } + + /** + * Raise the first array by the power of the scalar value + * + * @param a the first array + * @param scalar the scalar value + * @return the array result of the power operation + */ + public static FloatNdArray pow(FloatNdArray a, float scalar) { + assert (scalar != 0); + FloatNdArray result = NdArrays.ofFloats(a.shape()); + int nDims = a.shape().numDimensions(); + a.elements(nDims - 1) + .forEachIndexed( + (idx, v) -> { + result.setFloat((float) Math.pow(v.getFloat(), scalar), idx); + }); + return result; + } + + /** + * Raise the scalar value by the power of the array + * + * @param scalar the scalar value + * @param a the first array + * @return the array result of the power operation + */ + public static FloatNdArray pow(float scalar, FloatNdArray a) { + assert (scalar != 0); + FloatNdArray result = NdArrays.ofFloats(a.shape()); + int nDims = a.shape().numDimensions(); + a.elements(nDims - 1) + .forEachIndexed( + (idx, v) -> { + result.setFloat((float) Math.pow(scalar, v.getFloat()), idx); + }); + return result; + } + + /** + * Flatten an array to 1D + * + * @param a the array to flatten + * @return the flattened array + */ + public static float[] flatten(FloatNdArray a) { + float[] result = new float[(int) a.shape().size()]; + int nDims = a.shape().numDimensions(); + AtomicInteger counter = new AtomicInteger(); + a.elements(nDims - 1) + .forEachIndexed( + (idx, v) -> { + result[counter.getAndAdd(1)] = v.getFloat(); + }); + return result; + } + + /** + * Get the maximum value of the array + * + * @param a the array + * @return the maximum value of the array + */ + public static float max(FloatNdArray a) { + AtomicReference maximum = new AtomicReference<>(Float.MIN_VALUE); + a.scalars().forEach(f -> maximum.set(Math.max(maximum.get(), f.getFloat()))); + return maximum.get(); + } + + /** + * Get the minimum value of the array + * + * @param a the array + * @return the minimum value of the array + */ + public static float min(FloatNdArray a) { + AtomicReference minimum = new AtomicReference<>(Float.MAX_VALUE); + a.scalars().forEach(f -> minimum.set(Math.min(minimum.get(), f.getFloat()))); + return minimum.get(); + } + + /** + * Get the maximum value of comparing the arrays + * + * @param a the first array + * @param a the second array + * @return the resulting array with the maximum values between each element of the arrays. + * @throws java.lang.AssertionError if the two arrays are not the same size. + */ + public static FloatNdArray max(FloatNdArray a, FloatNdArray b) { + assert (a.shape().size() == b.shape().size()); + FloatNdArray result = NdArrays.ofFloats(a.shape()); + int nDims = a.shape().numDimensions(); + a.elements(nDims - 1) + .forEachIndexed( + (idx, v) -> { + result.setFloat((float) Math.max(v.getFloat(), b.getFloat(idx)), idx); + }); + return result; + } + + /** + * Get the maximum value of comparing each item of the array to scalar + * + * @param a the array + * @param scalar the scalar value + * @return the resulting array with the maximum values between each element of the array and the + * scalar value + */ + public static FloatNdArray max(FloatNdArray a, float scalar) { + FloatNdArray result = NdArrays.ofFloats(a.shape()); + int nDims = a.shape().numDimensions(); + a.elements(nDims - 1) + .forEachIndexed( + (idx, v) -> { + result.setFloat((float) Math.max(v.getFloat(), scalar), idx); + }); + return result; + } + + /** + * Get the maximum value of comparing each item of the array to scalar + * + * @param scalar the scalar value + * @param a the array + * @return the resulting array with the maximum values between each element of the array and the + * scalar value + */ + public static FloatNdArray max(float scalar, FloatNdArray a) { + return max(a, scalar); + } + + /** + * Get the minimum value of comparing the arrays + * + * @param a the first array + * @param a the second array + * @return the resulting array with the minimum values between each element of the arrays. + * @throws java.lang.AssertionError if the two arrays are not the same size. + */ + public static FloatNdArray min(FloatNdArray a, FloatNdArray b) { + assert (a.shape().size() == b.shape().size()); + FloatNdArray result = NdArrays.ofFloats(a.shape()); + int nDims = a.shape().numDimensions(); + a.elements(nDims - 1) + .forEachIndexed( + (idx, v) -> { + result.setFloat((float) Math.min(v.getFloat(), b.getFloat(idx)), idx); + }); + return result; + } + + /** + * Get the minimum value of comparing each item of the array to scalar + * + * @param a the array + * @param scalar the scalar value + * @return the resulting array with the minimum values between each element of the array and the + * scalar value + */ + public static FloatNdArray min(FloatNdArray a, float scalar) { + FloatNdArray result = NdArrays.ofFloats(a.shape()); + int nDims = a.shape().numDimensions(); + a.elements(nDims - 1) + .forEachIndexed( + (idx, v) -> { + result.setFloat((float) Math.min(v.getFloat(), scalar), idx); + }); + return result; + } + + /** + * Get the minimum value of comparing each item of the array to scalar + * + * @param scalar the scalar value + * @param a the array + * @return the resulting array with the minimum values between each element of the array and the + * scalar value + */ + public static FloatNdArray min(float scalar, FloatNdArray a) { + return min(a, scalar); + } + + /** + * Get the absolute value of each member of the array + * + * @param a the array + * @return the array with the absolute value of each item. + */ + public static FloatNdArray abs(FloatNdArray a) { + FloatNdArray result = NdArrays.ofFloats(a.shape()); + a.scalars().forEachIndexed((idx, f) -> result.setFloat((float) Math.abs(f.getFloat()), idx)); + return result; + } + + /** + * Sum all elements of an array + * + * @param a the array + * @return an a array with one element containing the sum. + */ + public static FloatNdArray sum(FloatNdArray a) { + AtomicReference sum = new AtomicReference<>(0.f); + a.scalars().forEach(f -> sum.set(sum.get() + f.getFloat())); + return NdArrays.scalarOf(sum.get()); + } + + /** + * Sum all elements of an array based on the specified axis + * + * @param a the array + * @param axis the axis to sum + * @return an a array the sum over the axis less the diemsnion + */ + public static FloatNdArray sum(FloatNdArray a, int axis) { + return sum(a, axis, false); + } + + /** + * Sum all elements of an array based on the specified axis + * + * @param a the array + * @param axis the axis to sum + * @param keepDims indicates whether the dimensions over the sum should be kept or not. + * @return an a array the sum over the axis + */ + public static FloatNdArray sum(FloatNdArray a, int axis, boolean keepDims) { + Shape shape = a.shape(); + int nDims = shape.numDimensions(); + int xis = nDims - 1 - axis; + long totalSize = shape.size(); + long axisSize = shape.size(xis); + final float[] sums = new float[(int) axisSize]; + + a.scalars() + .forEachIndexed( + (idx, f) -> { + sums[(int) idx[xis]] += f.getFloat(); + }); + + if (keepDims) { + long[] newDims = shape.asArray(); + newDims[axis] = 1; + final AtomicInteger counter = new AtomicInteger(); + FloatNdArray arrayK = NdArrays.ofFloats(Shape.of(newDims)); + arrayK + .elements(newDims.length - 1) + .forEachIndexed( + (idx, v) -> { + v.setFloat(sums[counter.getAndAdd(1)]); + }); + return arrayK; + } else { + return NdArrays.vectorOf(sums); + } + } + + /** + * Sum all elements of an array based on the specified axis + * + * @param a the array + * @param axes the axis to sum + * @param keepDims indicates whether the dimensions over the sum should be kept or not. + * @return an a array the sum over the axis + */ + public static FloatNdArray sum(FloatNdArray a, Integer[] axes, boolean keepDims) { + Shape shape = a.shape(); + if (axes == null) { + FloatNdArray result = sum(a); + if (keepDims) { + float scalar = result.getFloat(0); + long[] dims = {1, 1}; + Shape bShape = Shape.of(dims); + FloatNdArray resultK = NdArrays.ofFloats(bShape); + resultK.setFloat(scalar, 0, 0); + return resultK; + } + return result; + } else if (axes.length == 1) { + return sum(a, axes[0], keepDims); + } else { + // TODO + throw new UnsupportedOperationException("Multi Axis Not implemented Yet"); + } + } + + /** + * Calculate the l2 norm of the array + * + * @param x the array + * @return the l2 norm of the array + */ + public static FloatNdArray l2_norm(FloatNdArray x) { + return l2_norm(x, -1); + } + + /** + * Calculate the l2 norm of the array + * + * @param x the array + * @param axis the axis to calculate over + * @return the l2 norm of the array + */ + public static FloatNdArray l2_norm(FloatNdArray x, int axis) { + float epsilon = 1e-12F; + FloatNdArray square_sum = ND.sum(ND.square(x), axis, true); + FloatNdArray x_inv_norm = ND.div(1, ND.sqrt(ND.max(square_sum, epsilon))); + return ND.mul(x, x_inv_norm); + } + + /** + * Print the array to System.out. + * + * @param a the array + */ + public static void print(FloatNdArray a) { + System.out.println("Shape: " + a.shape()); + if (a.shape().isScalar()) { + a.scalars().forEach(f -> System.out.printf("Scalar: == %f\n", f.getFloat())); + } else { + a.elements(a.shape().numDimensions() - 1) + .forEachIndexed( + (idx, v) -> { + System.out.printf("%s == %f\n", Arrays.toString(idx), v.getFloat()); + }); + } + System.out.println(); + } + + /** + * Print the array to System.out. + * + * @param header a string to print before the print of the array + * @param a the array + */ + public static void print(String header, FloatNdArray a) { + System.out.print(header); + System.out.print(" : "); + + print(a); + } + + /** + * Convert a float array to an NdArray with the provided shape. + * + * @param y the float array + * @param shape the shape for the NdArray + * @return a float array to an NdArray with the provided shape. + */ + public static FloatNdArray create(float[] y, Shape shape) { + FloatNdArray result = NdArrays.ofFloats(shape); + AtomicInteger index = new AtomicInteger(); + result + .elements(shape.numDimensions() - 1) + .forEachIndexed( + (idx, v) -> { + v.setFloat(y[index.getAndAdd(1)]); + }); + return result; + } +} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/PlaceholderStringFormat.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/PlaceholderStringFormat.java new file mode 100644 index 00000000000..ef2f20e648a --- /dev/null +++ b/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/PlaceholderStringFormat.java @@ -0,0 +1,81 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.utils; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** Utility that handles Python style placholder formats, used in Callbacks */ +public class PlaceholderStringFormat { + private static final Pattern PYTHON_MATCH = Pattern.compile("\\{(\\w+):([\\w\\.]+)\\}"); + + /** + * Convert a Python style placeholder file path format to file path + * + * @param filename the placeholder file path format + * @param epoch the epoch number to place into the filename format + * @param logs a Dictionary of log values that are replaced into the filename format + * @return the resulting filename after applying all placeholders. + */ + public static String convertFilePath(String filename, int epoch, Map logs) { + List vars = new ArrayList<>(); + Map valMap = new HashMap<>(); + String format = getFilePath(filename, vars); + List objects = new ArrayList<>(); + vars.forEach( + key -> { + if (key.equals("epoch")) objects.add(epoch); + else objects.add((Number) logs.get(key)); + }); + return String.format(format, objects.toArray(new Number[objects.size()])); + } + + /** + * Get the variable identifiers from the placeholder filename string + * + * @param filename the filename name in Placeholder format. + * @param vars the list of variables from the caller, with added variables parsed from the + * filename + * @return a string in String.format style + */ + private static String getFilePath(String filename, List vars) { + Matcher m = PYTHON_MATCH.matcher(filename); + StringBuilder sb = new StringBuilder(); + int beginIndex = 0; + Map indexMap = new HashMap<>(); + int lastIndex = 1; + while (m.find()) { + int start = m.start(0); + int end = m.end(0); + String variable = m.group(1); + vars.add(variable); + String format = m.group(2); + Integer index = indexMap.get(variable); + if (index == null) { + indexMap.put(variable, lastIndex); + index = lastIndex++; + } + sb.append(filename.substring(beginIndex, start)); + sb.append('%').append(index).append('$').append(format); + beginIndex = end; + } + sb.append(filename.substring(beginIndex)); + return sb.toString(); + } +} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/PrintUtils.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/PrintUtils.java new file mode 100644 index 00000000000..9a21c50893f --- /dev/null +++ b/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/PrintUtils.java @@ -0,0 +1,152 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.utils; + +import org.tensorflow.DataType; +import org.tensorflow.Tensor; +import org.tensorflow.types.TFloat16; +import org.tensorflow.types.TFloat32; +import org.tensorflow.types.TFloat64; +import org.tensorflow.types.TInt32; +import org.tensorflow.types.TInt64; +import org.tensorflow.types.TUint8; +import org.tensorflow.types.TBfloat16; +import org.tensorflow.types.TBool; +import org.tensorflow.types.TString; + +/** + * Utility to print Tensor values + */ +public class PrintUtils { + + /** + * Print a tensor's values + * @param tensor the tensor to print + */ + public static void print(Tensor tensor) { + switch(tensor.dataType().name()) { + case "BFLOAT16": + printTBfloat16(tensor); + break; + case "FLOAT16": + printTFloat16(tensor); + break; + case "FLOAT": + printTFloat32(tensor); + break; + case "DOUBLE": + printTFloat64(tensor); + break; + case "INT32": + printTInt32(tensor); + break; + case "INT64": + printTInt64(tensor); + break; + case "UINT8": + printTUint8(tensor); + break; + case "BOOL": + printTBool(tensor); + break; + case "STRING": + printTString(tensor); + break; + default: + break; + } + + } + + /** + * Print a boolean Tensot + * @param t the tensor to print + */ + public static void printTBool(Tensor t) { + t.data().scalars().forEach(s -> System.out.print(s.getBoolean() + ", ")); + System.out.println(); + } + + /** + * Print a String Tensot + * @param t the tensor to print + */ + public static void printTString(Tensor t) { + t.data().scalars().forEach(s -> System.out.print("\"" + s.getObject() + "\", ")); + System.out.println(); + } + + /** + * Print a TBfloat16 Tensor + * @param t the tensor to print + */ + public static void printTBfloat16(Tensor t) { + t.data().scalars().forEach(s -> System.out.print(s.getFloat() + ", ")); + System.out.println(); + } + + /** + * Print a uint8 Tensor + * @param t the tensor to print + */ + public static void printTUint8(Tensor t) { + t.data().scalars().forEach(s -> System.out.print(String.format("0x%x",s.getByte()) + ", ")); + System.out.println(); + } + + /** + * Print an int32 Tensor + * @param t the tensor to print + */ + public static void printTInt32(Tensor t) { + t.data().scalars().forEach(s -> System.out.print(s.getInt() + ", ")); + System.out.println(); + } + + /** + * Print an int64 Tensor + * @param t the tensor to print + */ + public static void printTInt64(Tensor t) { + t.data().scalars().forEach(s -> System.out.print(s.getLong() + ", ")); + System.out.println(); + } + + /** + * Print a Float16 tensor. + * @param t the tensor to print + */ + public static void printTFloat16(Tensor t) { + t.data().scalars().forEach(s -> System.out.print(s.getFloat() + "F, ")); + System.out.println(); + } + + /** + * Print a Float32 tensor. + * @param t the tensor to print + */ + public static void printTFloat32(Tensor t) { + t.data().scalars().forEach(s -> System.out.print(s.getFloat() + "F, ")); + System.out.println(); + } + /** + * Print a Float64 tensor. + * @param t the tensor to print + */ + public static void printTFloat64(Tensor t) { + t.data().scalars().forEach(s -> System.out.print(s.getDouble() + ", ")); + System.out.println(); + } +} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/ProgressBar.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/ProgressBar.java new file mode 100644 index 00000000000..9dd3de4e1a2 --- /dev/null +++ b/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/ProgressBar.java @@ -0,0 +1,311 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.utils; + +import java.io.Console; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +/** + * Display a progess bar either to the Console or System.out. + * + * @author jbclarke + */ +public class ProgressBar { + private final static double MICRO_SECONDS = 1E-3; + private final static long MILLI_SECOND = 1l; + private final static long SECOND = 1000L; + private final static long MINUTE = 60L * SECOND; + private final static long HOUR = 60L * MINUTE; + + private Integer target; + private int width; + private boolean verbose; + private long interval; + private List statefulMetrics; + private String unit; + + private int totalWidth; + private int seenSoFar; + private final Map values = new HashMap<>(); + private final List valuesOrder = new ArrayList<>(); + + private final long start = System.currentTimeMillis(); + private long lastUpdate = 0; + + // will be null if console is not present + private final Console console = System.console(); + + /** + * Create a ProgressBar + */ + public ProgressBar() { + this(null, 30, true, 50, "step", null ); + + } + + /** + * Create a ProgressBar + * + * @param target Total number of steps expected, null if unknown. + */ + public ProgressBar(Integer target) { + this(target, 30, true, 50, "step", null ); + + } + + /** + * Create a ProgressBar + * + * @param target Total number of steps expected, null if unknown. + * @param verbose Verbosity mode + * @param unit Display name for step counts (usually "step" or "sample"). + * @param statefulMetrics + */ + public ProgressBar(Integer target, boolean verbose, String unit, List statefulMetrics) { + this(target, 30, verbose, 50, unit, statefulMetrics ); + + } + + + + /** + * Create a ProgressBar + * + * @param target Total number of steps expected, null if unknown. + * @param width Progress bar width on screen. + * @param verbose Verbosity mode + * @param interval Minimum visual progress update interval (in milliseconds). + * @param unit Display name for step counts (usually "step" or "sample"). + * @param statefulMetrics + */ + public ProgressBar(Integer target, int width, boolean verbose, long interval, String unit, List statefulMetrics) { + this.target = target; + this.width = width; + this.verbose = verbose; + this.interval = interval; + this.unit = unit; + this.statefulMetrics = statefulMetrics == null ? Collections.EMPTY_LIST : statefulMetrics; + } + + /** + * Updates the progress bar. + * + * @param current Index of current step. + * @param values List of Pairs: `(name, value_for_last_step)`. If `name` is in + * `statefulMetrics`, `value_for_last_step` will be displayed as-is. + * Else, an average of the metric over time will be displayed. + */ + public void update(Integer current, List> values) { + update(current, values, null); + } + + /** + * Updates the progress bar. + * + * @param current Index of current step. + * @param values List of Entry: `(name, value_for_last_step)`. If `name` is in + * `statefulMetrics`, `value_for_last_step` will be displayed as-is. + * Else, an average of the metric over time will be displayed. + * @param finalize Whether this is the last update for the progress bar. If + * `None`, defaults to `current >= self.target`. + */ + public void update(Integer current, List> values, Boolean finalize) { + if(finalize == null) { + if(this.getTarget() == null) { + finalize = false; + }else { + finalize = current >= this.getTarget(); + } + } + values = values == null ? Collections.EMPTY_LIST : values; + + values.forEach(e -> { + if(!this.valuesOrder.contains(e.getKey())) { + this.valuesOrder.add(e.getKey()); + } + if(!this.statefulMetrics.contains(e.getKey())) { + int valueBase = Math.max(current - this.seenSoFar, 1); + if(!this.values.containsKey(e.getKey())) { + this.values.put(e.getKey(), new Number[] { e.getValue().doubleValue() * valueBase, valueBase}); + }else { + Number[] n = this.values.get(e.getKey()); + n[0] = n[0].doubleValue() + e.getValue().doubleValue() * valueBase; + n[1] = n[1].doubleValue() + valueBase; + } + }else { + this.values.put(e.getKey(),new Number[] { e.getValue().doubleValue(), 1}); + } + + }); + + this.seenSoFar = current; + long now = System.currentTimeMillis(); + + StringBuilder info = new StringBuilder(String.format(" - %.0fs", (double)(now - this.start)/(double)SECOND)); + + if(this.verbose) { + if(now - this.lastUpdate < this.interval && !finalize) { + return; + } + } + int prevTotalWidth = this.totalWidth; + if (this.console != null) { + for(int i = 0; i < prevTotalWidth; i++) { + this.console.printf("\b"); + } + this.console.printf("\r"); + } else { + System.out.println(); + } + StringBuilder bar = new StringBuilder(); + if(this.getTarget() != null) { + int numDigits = (int)Math.log10(this.getTarget()) + 1; + bar.append(String.format("%" + numDigits + "d/%d [", current, this.getTarget())); + double prog = (double)current / this.getTarget(); + int progWidth = (int)(this.width * prog); + if(progWidth >= 0) { + for(int i = 0; i < progWidth-1; i++) + bar.append('='); + if(current < this.getTarget()) + bar.append('>'); + else + bar.append('='); + for(int i = 0; i < this.width - progWidth; i++) + bar.append('.'); + bar.append(']'); + } + }else { + bar.append(String.format("%7d/Unknown", current)); + } + this.totalWidth = bar.length(); + if(this.console != null) { + this.console.printf(bar.toString()); + }else { + System.out.print(bar.toString()); + } + // in millis + double timePerUnit = current != null ? (double)(now - this.start) / current: 0.0; + if(this.getTarget() == null || finalize) { + if(timePerUnit >= SECOND || timePerUnit == 0.0) { // seconds + info.append(String.format(" %.0fs/%s", timePerUnit/SECOND, this.unit)); + }else if(timePerUnit >= 1) { // milliseconds + info.append(String.format(" %.0fms/%s", timePerUnit, this.unit)); + }else { // microseconds + info.append(String.format(" %.0fus/%s", timePerUnit*SECOND, this.unit)); + } + }else { + double eta = timePerUnit * (this.getTarget() - current); + String etaFormat; + if(eta >= HOUR) { // greater than an hour + etaFormat = String.format("%d:%02d:%02d", // hh:mm:ss + (int) (eta / HOUR), + (int) (eta / HOUR / MINUTE), + (int) (eta % MINUTE)/SECOND); + }else if(eta >= MINUTE) { + etaFormat = String.format("%d:%02d", // mm:ss + (int) (eta / MINUTE), + (int) (eta % MINUTE)/SECOND); + }else { + etaFormat = String.format("%ds", (int)(eta/SECOND)); + } + info.append(" - ETA: ").append(etaFormat); + } + + this.valuesOrder.forEach(key -> { + info.append(String.format(" - %s:", key)); + Number[] val = this.values.get(key); + double avg = val[0].doubleValue() / Math.max(1.0, val[1].doubleValue()); + if(Math.abs(avg) > 1e-3) + info.append(String.format(" %.4f", avg)); + else + info.append(String.format(" %.4e", avg)); + }); + this.totalWidth += info.length(); + if(prevTotalWidth > this.totalWidth) + for(int i = 0; i < prevTotalWidth - this.totalWidth; i++) + info.append(' '); + if(finalize) { + info.append('\n'); + } + + if(this.console != null) { + console.printf(info.toString()); + console.flush(); + }else { + System.out.print(info.toString()); + System.out.flush(); + } + this.lastUpdate = now; + } + + /** + * updates the progress bar by one unit + */ + public void increment() { + add(1); + } + + /** + * updates the progress bar by one unit + * + * @param values List of Entry: `(name, value_for_last_step)`. If `name` is in + * `statefulMetrics`, `value_for_last_step` will be displayed as-is. + * Else, an average of the metric over time will be displayed. + */ + public void increment(List> values) { + add(1, values); + } + + /** + * update the progress bar + * + * @param n the number of units to add to the current number + */ + public void add(int n) { + add(n, null); + } + + /** + * update the progress bar + * + * @param n the number of units to add to the current number + * @param values List of Entry: `(name, value_for_last_step)`. If `name` is in + * `statefulMetrics`, `value_for_last_step` will be displayed as-is. + * Else, an average of the metric over time will be displayed. + */ + public void add(int n, List> values) { + this.update(this.seenSoFar + n, values); + } + + /** + * @return the target + */ + public Integer getTarget() { + return target; + } + + /** + * @param target the target to set + */ + public void setTarget(Integer target) { + this.target = target; + } +} + diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/ShapeUtils.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/ShapeUtils.java new file mode 100644 index 00000000000..4fa69d0e537 --- /dev/null +++ b/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/ShapeUtils.java @@ -0,0 +1,110 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.utils; + +import java.util.ArrayList; +import java.util.List; +import org.tensorflow.Operand; +import org.tensorflow.Tensor; +import org.tensorflow.ndarray.NdArray; +import org.tensorflow.ndarray.Shape; +import org.tensorflow.types.TInt64; + +/** + * + * @author Jim Clarke + */ +public class ShapeUtils { + + /** + * Convert shape operand back to a Shape object + * + * @param dims the Operand containing the shape values + * @return + */ + public static Shape getShape(Operand dims) { + // TODO is there a better way? + final List dimList = new ArrayList<>(); + dims.data().scalars().forEach(s -> dimList.add(s.getLong())); + long[] longDims = new long[dimList.size()]; + for (int i = 0; i < dimList.size(); i++) { + longDims[i] = dimList.get(i); + } + return Shape.of(longDims); + } + + /** + * get the shape for the data within a Tensor + * + * @param tensor the tensor + * @return the Shape of the tensor's data; + */ + public static Shape getShape(Tensor tensor) { + NdArray data = (NdArray) tensor.data(); + return data.shape(); + + } + + public static boolean isCompatibleWith(Shape a, Shape b) { + if (!isUnknownShape(a) && !isUnknownShape(b)) { + if (a.numDimensions() != b.numDimensions()) { + return false; + } + for (int i = 0; i < a.numDimensions(); i++) { + if (a.size(i) != Shape.UNKNOWN_SIZE + && b.size(i) != Shape.UNKNOWN_SIZE + && b.size(i) != a.size(i)) { + return false; + } + } + } + return true; + } + + public static boolean isUnknownShape(Shape a) { + return a.size() == 0; + } + + /** + * Reshapes the shape by eliminating trailing Dimensions. + * + * @param oldShape + * @param axis + * @return the new shape + */ + public static Shape squeeze(Shape oldShape, int axis) { + axis %= oldShape.numDimensions(); + if (axis < 0) { + axis = oldShape.numDimensions() + axis; + } + long[] array = oldShape.asArray(); + long[] newArray = new long[axis]; + for (int i = 0; i < axis - 1; i++) { + newArray[i] = array[i]; + } + long sum = array[axis - 1]; + for (int i = axis; i < array.length; i++) { + sum *= array[i]; + } + newArray[axis - 1] = sum; + return Shape.of(newArray); + } + + public static boolean isCompatible(long dim, long otherDim) { + return dim == Shape.UNKNOWN_SIZE + || otherDim == Shape.UNKNOWN_SIZE + || dim == otherDim; + } +} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/SmartCond.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/SmartCond.java new file mode 100644 index 00000000000..3dff11c513e --- /dev/null +++ b/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/SmartCond.java @@ -0,0 +1,107 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.utils; + +import java.util.function.Supplier; +import org.tensorflow.Operand; +import org.tensorflow.op.Ops; +import org.tensorflow.types.TBool; + +/** Implements a select Operation using Lambdas */ +public class SmartCond { + + /** + * Creates a select operation + * + * @param pred the predicate (boolean) used to select + * @param then_fn the function to execute if the predicate is true + * @param else_fn the function to execute if the predicate is false + * @return the result of the select on the condition + */ + public static Operand select(Boolean pred, Supplier then_fn, Supplier else_fn) { + assert pred != null : "pred must not be null"; + assert then_fn != null : "then_fn must not be null"; + assert else_fn != null : "else_fn must not be null"; + return pred ? then_fn.get() : else_fn.get(); + } + + /** + * Creates a select operation + * + * @param pred the predicate ( true == 1) used to select + * @param then_fn the function to execute if the predicate is true + * @param else_fn the function to execute if the predicate is false + * @return the result of the select on the condition + */ + public static Operand select(Number pred, Supplier then_fn, Supplier else_fn) { + assert pred != null : "pred must not be null"; + assert then_fn != null : "then_fn must not be null"; + assert else_fn != null : "else_fn must not be null"; + return pred.intValue() == 1 ? then_fn.get() : else_fn.get(); + } + + /** + * Creates a select operation + * + * @param pred the predicate ( true if the string argument is not null and is equal, ignoring + * case, to the string "true") used to select + * @param then_fn the function to execute if the predicate is true + * @param else_fn the function to execute if the predicate is false + * @return the result of the select on the condition + */ + public static Operand select(String pred, Supplier then_fn, Supplier else_fn) { + assert pred != null : "pred must not be null"; + assert then_fn != null : "then_fn must not be null"; + assert else_fn != null : "else_fn must not be null"; + return Boolean.valueOf(pred) ? then_fn.get() : else_fn.get(); + } + + /** + * Create a Select operation + * + * @param tf the tensorFlow Ops + * @param pred the operand that evaluates to true or false + * @param then_fn the function to execute if the predicate is true + * @param else_fn the function to execute if the predicate is false + * @return a Select Operation if in graph mode, else return the result of the select + */ + public static Operand select( + Ops tf, Operand pred, Supplier then_fn, Supplier else_fn) { + assert pred != null : "pred must not be null"; + assert then_fn != null : "then_fn must not be null"; + assert else_fn != null : "else_fn must not be null"; + if (tf.scope().env().isEager()) { + return pred.asOutput().data().getBoolean() ? then_fn.get() : else_fn.get(); + } else { // TODO, maybe some day handle Supplier in the c interface + return tf.select(pred, then_fn.get(), else_fn.get()); + } + } + + /** + * Creates a slect operation + * + * @param tf the tensorFlow Ops + * @param pred the operand that evaluates to true or false + * @param then_fn the function to execute if the predicate is true + * @param else_fn the function to execute if the predicate is false + * @return the Select opertion + */ + public static Operand select(Ops tf, Operand pred, Operand true_op, Operand false_op) { + assert pred != null : "pred must not be null"; + assert true_op != null : "true_op must not be null"; + assert false_op != null : "false_op must not be null"; + return tf.select(pred, true_op, false_op); + } +} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/SymbolicShape.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/SymbolicShape.java new file mode 100644 index 00000000000..b2e63fe1cff --- /dev/null +++ b/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/SymbolicShape.java @@ -0,0 +1,92 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.utils; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import org.tensorflow.Operand; + +/** + * Utility class that handles sybmolic shapes so that the shapes can be resolved during runtime and + * stay consistent across operands. + * + *

The same symbols accros variaous shapes should have the same dimension values. + * + *

shape1 = Shape("N","L") + * + *

shape2 = Shape("L", "T") + * + *

For exmple, for Symbol "L" + * shape1.size(2) == shape2.size(1) + * + *

Example: + * + *

+ * List symbols = new ArrayList<>(); symbols.add(new SymbolicShape(yTrue, "N", "L"));
+ * if (this.isMultiLabel()) { symbols.add(new SymbolicShape(this.truePositives, "T", "L"));
+ * symbols.add(new SymbolicShape(this.falsePositives, "T", "L")); symbols.add(new
+ * SymbolicShape(this.trueNegatives, "T", "L")); symbols.add(new SymbolicShape(this.falseNegatives,
+ * "T", "L")); } if (this.getLabelWeights() != null) { symbols.add(new
+ * SymbolicShape(this.getLabelWeights(), "L", "")); }
+ * updateOperations.addAll(Metrics.assert_shapes(tf, symbols, "Number of labels is not
+ * consistent."));
+ * 
+ */ +public class SymbolicShape { + + private Operand operand; + private List symbols = new ArrayList<>(); + + /** + * Create a SymbolicShape for an Operand. + * + * @param operand the Operand + * @param symbols the symbols + */ + public SymbolicShape(Operand operand, String... symbols) { + this.operand = operand; + this.symbols.addAll(Arrays.asList(symbols)); + } + + /** @return the operand */ + public Operand getOperand() { + return operand; + } + + /** @param operand the operand to set */ + public void setOperand(Operand operand) { + this.operand = operand; + } + + /** @return the symbols */ + public List getSymbols() { + return symbols; + } + + /** @param symbols the symbols to set */ + public void setSymbols(List symbols) { + this.symbols = symbols; + } + + /** + * Get the rank of the symbol list + * + * @return the rank of the symbol list + */ + public int rank() { + return this.symbols.size(); + } +} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/SymbolicShapeDict.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/SymbolicShapeDict.java new file mode 100644 index 00000000000..e7c9acf1c5e --- /dev/null +++ b/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/SymbolicShapeDict.java @@ -0,0 +1,58 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.utils; + +import java.util.HashMap; +import java.util.Map; + +/** + * Utility class that contains a dictionary of Symbols. The map is updated with symbols and their + * dimension values. Used in creating matching shapes that depend on other shapes' dimensions. + */ +public class SymbolicShapeDict { + + /** Dictionary containing the sybmols and their associated dimensions sizes. */ + private final Map map = new HashMap<>(); + + /** + * Add a symbol with its associated dimensions size. + * + * @param symbol the symbol name + * @param size the shape dimension to associate with the symbol + */ + public void put(String symbol, Long size) { + this.map.put(symbol, size); + } + + /** + * Get the dimention size for a symbol + * + * @param symbol the symbol name + * @return the dimension size for the symbol or null if not found. + */ + public Long get(String symbol) { + return this.map.get(symbol); + } + + /** + * Determine if the symbol is contained in the dictionary. + * + * @param symbol the symbol name + * @return true, if the dictionary contains the symbol. + */ + public boolean contains(String symbol) { + return map.containsKey(symbol); + } +} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/TypeUtils.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/TypeUtils.java new file mode 100644 index 00000000000..a2629ef07b1 --- /dev/null +++ b/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/TypeUtils.java @@ -0,0 +1,98 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.utils; + +import org.tensorflow.DataType; +import org.tensorflow.types.TBfloat16; +import org.tensorflow.types.TBool; +import org.tensorflow.types.TFloat16; +import org.tensorflow.types.TFloat32; +import org.tensorflow.types.TFloat64; +import org.tensorflow.types.TInt32; +import org.tensorflow.types.TInt64; +import org.tensorflow.types.TString; +import org.tensorflow.types.TUint8; + + +/** + * + * @author Jim Clarke + */ +public class TypeUtils { + + //TODO + public static boolean isComplex(DataType dtype) { + return false; + } + + public static boolean isFloating(DataType dtype) { + switch(dtype.name()) { + case "BFLOAT16": + case "FLOAT16": + case "FLOAT": + case "DOUBLE": + return true; + default: return false; + } + } + public static boolean isInteger(DataType dtype) { + switch(dtype.name()) { + case "INT32": + case "INT64": + case "UINT8": + return true; + default: return false; + } + } + + public static boolean isNumeric(DataType dtype) { + return isFloating(dtype) || isInteger(dtype); + } + + public static boolean isBoolean(DataType dtype) { + return dtype.name().equals("BOOL"); + } + + public static boolean isString(DataType dtype) { + return dtype.name().equals("STRING"); + } + + public static DataType of(String name) { + switch(name) { + case "BFLOAT16": + return TBfloat16.DTYPE; + case "FLOAT16": + return TFloat16.DTYPE; + case "FLOAT": + return TFloat32.DTYPE; + case "DOUBLE": + return TFloat64.DTYPE; + case "UINT8": + return TUint8.DTYPE; + case "INT32": + return TInt32.DTYPE; + case "INT64": + return TInt64.DTYPE; + case "BOOL": + return TBool.DTYPE; + case "STRING": + return TString.DTYPE; + default: + throw new IllegalArgumentException(String.format("%s is an unknown DataType", name)); + + } + } + +} diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaDeltaTest.java b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaDeltaTest.java new file mode 100644 index 00000000000..8a7c8af9fae --- /dev/null +++ b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaDeltaTest.java @@ -0,0 +1,226 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.optimizers; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; +import static org.tensorflow.framework.optimizers.AdaDelta.ACCUMULATOR; +import static org.tensorflow.framework.optimizers.AdaDelta.ACCUMULATOR_UPDATE; +import org.tensorflow.framework.optimizers.Optimizer.GradAndVar; +import static org.tensorflow.keras.optimizers.AdaDelta.EPSILON_DEFAULT; +import static org.tensorflow.keras.optimizers.AdaDelta.EPSILON_KEY; +import static org.tensorflow.keras.optimizers.AdaDelta.LEARNING_RATE_DEFAULT; +import static org.tensorflow.keras.optimizers.AdaDelta.LEARNING_RATE_KEY; +import static org.tensorflow.keras.optimizers.AdaDelta.RHO_DEFAULT; +import static org.tensorflow.keras.optimizers.AdaDelta.RHO_RATE_KEY; +import static org.tensorflow.keras.optimizers.OptimizerInterface.NAME_KEY; +import org.tensorflow.keras.utils.TestSession; +import org.tensorflow.ndarray.Shape; +import org.tensorflow.op.Op; +import org.tensorflow.op.Ops; +import org.tensorflow.op.core.Assign; +import org.tensorflow.op.core.Constant; +import org.tensorflow.op.core.Variable; +import org.tensorflow.types.TFloat32; + +/** Test cases for AdaDelta Optimizer */ +public class AdaDeltaTest { + + private TestSession.Mode tf_mode = TestSession.Mode.GRAPH; + + private int index; + + public AdaDeltaTest() { + } + + @BeforeAll + public static void setUpClass() { + } + + @AfterAll + public static void tearDownClass() { + } + + @BeforeEach + public void setUp() { + } + + @AfterEach + public void tearDown() { + } + + /** + * Test of create method, of class AdaDelta. + */ + @Test + public void testCreate() { + try (TestSession session = TestSession.createTestSession(tf_mode)) { + Ops tf = session.getTF(); + Map config = new HashMap<>(); + config.put(NAME_KEY, "AdaDelta"); + config.put(LEARNING_RATE_KEY, LEARNING_RATE_DEFAULT); + config.put(RHO_RATE_KEY, RHO_DEFAULT); + config.put(EPSILON_KEY, EPSILON_DEFAULT); + AdaDelta expResult = new AdaDelta(tf); + AdaDelta result = AdaDelta.create(tf, config); + assertEquals(expResult.getConfig(), result.getConfig()); + } + } + + @Test + public void testConstructAdadeltaWithLR() { + try (TestSession session = TestSession.createTestSession(tf_mode)) { + Ops tf = session.getTF(); + AdaDelta opt = new AdaDelta(tf, 1.0F, 0.9F, 1.F); + AdaDelta opt2 = new AdaDelta(tf, 0.1F, 0.9F, 1.F); + AdaDelta opt3 = new AdaDelta(tf, 0.1F, 0.9F, 1e-8F); + String format = "AdaDelta{learningRate=%s, rho=%s, epsilon=%s}"; + String optExpected = String.format(format, 1.0F, 0.9F, 1.F); + String opt2Expected = String.format(format, 0.1F, 0.9F, 1.F); + String opt3Expected = String.format(format, 0.1F, 0.9F, 1e-8F); + + String optString = opt.toString(); + String opt2String = opt2.toString(); + String opt3String = opt3.toString(); + + assertEquals(optExpected, optString); + assertEquals(opt2Expected, opt2String); + assertEquals(opt3Expected, opt3String); + } + + } + + @Test + public void testConstructAdadeltaWithEpsilonValues() { + try (TestSession session = TestSession.createTestSession(tf_mode)) { + Ops tf = session.getTF(); + AdaDelta opt = new AdaDelta(tf); + Map config = opt.getConfig(); + assertEquals(EPSILON_DEFAULT, (float) config.get(EPSILON_KEY)); + + opt = new AdaDelta(tf, LEARNING_RATE_DEFAULT, RHO_DEFAULT, 1e-8F); + config = opt.getConfig(); + assertEquals(1e-8F, (float) config.get(EPSILON_KEY)); + } + } + + @Test + public void testBasic() { + int num_updates = 4; // # number of ADADELTA steps to perform + float[] grads = {0.2F, 0.1F, 0.01F}; + float[] lrs = {1.0F, 0.5F, 0.1F}; + for (float grad : grads) { + for (float lr : lrs) { + try (TestSession session = TestSession.createTestSession(tf_mode)) { + Ops tf = session.getTF(); + float[] var0_init = {1.0F, 2.0F}; + float[] var1_init = {3.0F, 4.0F}; + float[] fgrads = {grad, grad}; + Shape shape = Shape.of(var0_init.length); + Variable var0 = tf.withName("var0").variable(shape, TFloat32.DTYPE); + Variable var1 = tf.withName("var1").variable(shape, TFloat32.DTYPE); + + Assign var0Initializer = tf.assign(var0, tf.constant(var0_init)); + Assign var1Initializer = tf.assign(var1, tf.constant(var1_init)); + + Constant cgrads = tf.constant(fgrads); + + float accum = 0.0F; + float accum_update = 0.0F; + float rho = 0.95F; + float epsilon = 1e-8F; + float epsilon1 = 1e-5F; + + /* build the GradsAnvVars */ + List gradsAndVars = new ArrayList<>(); + gradsAndVars.add(new GradAndVar<>(cgrads.asOutput(), var0.asOutput())); + gradsAndVars.add(new GradAndVar<>(cgrads.asOutput(), var1.asOutput())); + + /* get the Optimizer */ + AdaDelta adaDelta = new AdaDelta(tf, lr, rho, epsilon); + + /** + * apply gradients + */ + Op adadelta_update = adaDelta.applyGradients(gradsAndVars, "AdaDeltaTest"); + + /* Create and validae the shapes of the slota */ + Variable[] slots = new Variable[2]; + Variable[] slotUpdates = new Variable[2]; + + slots[0] = adaDelta.getSlot(var0.asOutput(), ACCUMULATOR).get(); + assertEquals(slots[0].asOutput().shape(), var0.asOutput().shape()); + + slotUpdates[0] = adaDelta.getSlot(var0.asOutput(), ACCUMULATOR_UPDATE).get(); + assertEquals(slotUpdates[0].asOutput().shape(), var0.asOutput().shape()); + + slots[1] = adaDelta.getSlot(var1.asOutput(), ACCUMULATOR).get(); + assertEquals(slots[1].asOutput().shape(), var1.asOutput().shape()); + + slotUpdates[1] = adaDelta.getSlot(var1.asOutput(), ACCUMULATOR_UPDATE).get(); + assertEquals(slotUpdates[1].asOutput().shape(), var1.asOutput().shape()); + + /* initialize the local variables */ + session.run(var0Initializer); + session.run(var1Initializer); + + /** + * initialize the accumulators + */ + session.run(tf.init()); + + /** + * make sure the variables were initialized properly + */ + session.evaluate(var0_init, var0); + session.evaluate(var1_init, var1); + + float[] updates = new float[num_updates]; + float tot_update = 0; + for (int step = 0; step < num_updates; step++) { + session.run(adadelta_update); + accum = accum * rho + (float) Math.pow(grad, 2) * (1.0F - rho); + updates[step] = ((float) Math.sqrt(accum_update + epsilon) + * (float) (1 / Math.sqrt(accum + epsilon)) * grad); + accum_update = (accum_update * rho + ((float) Math.pow(updates[step], 2) * (1.0F - rho))); + tot_update += updates[step] * lr; + + for (int i = 0; i < 2; i++) { + session.evaluate(accum, slots[i]); + session.evaluate(accum_update, slotUpdates[i]); + } + + Float[] var0_initUpdate = {var0_init[0] - tot_update, var0_init[1] - tot_update}; + Float[] var1_initUpdate = {var1_init[0] - tot_update, var1_init[1] - tot_update}; + + session.evaluate(var0_initUpdate, var0); + session.evaluate(var1_initUpdate, var1); + + } + + } + } + } + } + +} diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaGradDATest.java b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaGradDATest.java new file mode 100644 index 00000000000..3931db4da97 --- /dev/null +++ b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaGradDATest.java @@ -0,0 +1,126 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.optimizers; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; +import org.tensorflow.framework.optimizers.Optimizer; +import static org.tensorflow.keras.optimizers.AdaGradDA.INITIAL_ACCUM_KEY; +import static org.tensorflow.keras.optimizers.AdaGradDA.LEARNING_RATE_KEY; +import static org.tensorflow.keras.optimizers.OptimizerInterface.NAME_KEY; +import org.tensorflow.keras.utils.TestSession; +import org.tensorflow.ndarray.Shape; +import org.tensorflow.op.Op; +import org.tensorflow.op.Ops; +import org.tensorflow.op.core.Assign; +import org.tensorflow.op.core.Constant; +import org.tensorflow.op.core.Variable; +import org.tensorflow.types.TFloat32; + +/** Test cases for AdaGradDA Optimizer */ +public class AdaGradDATest { + + private TestSession.Mode tf_mode = TestSession.Mode.GRAPH; + + int index; + + public AdaGradDATest() {} + + @BeforeAll + public static void setUpClass() {} + + @AfterAll + public static void tearDownClass() {} + + @BeforeEach + public void setUp() {} + + @AfterEach + public void tearDown() {} + + /** Test of create method, of class AdaGradDA. */ + @Test + public void testCreate() { + try (TestSession testSession = TestSession.createTestSession(tf_mode)) { + Ops tf = testSession.getTF(); + Map config = new HashMap<>(); + config.put(NAME_KEY, "AdaDelta"); + config.put(LEARNING_RATE_KEY, 2.0F); + config.put(INITIAL_ACCUM_KEY, 0.1F); + AdaGradDA expResult = new AdaGradDA(tf, 2.0F, 0.1F, 0.0F, 0.0F); + AdaGradDA result = AdaGradDA.create(tf, config); + assertEquals(expResult.getConfig(), result.getConfig()); + } + } + + @Test + public void testBasic() { + float[] var0_init = {0.0F, 0.0F}; + float[] var1_init = {0.0F, 0.0F}; + float[] grads0_init = {0.1F, 0.2F}; + float[] grads1_init = {0.01F, 0.02F}; + float epsilon = 1e-8F; + float epsilon1 = 1e-5F; + try (TestSession session = TestSession.createTestSession(tf_mode)) { + Ops tf = session.getTF(); + + Shape shape0 = Shape.of(var0_init.length); + Shape shape1 = Shape.of(var1_init.length); + Variable var0 = tf.withName("var0").variable(shape0, TFloat32.DTYPE); + Variable var1 = tf.withName("var1").variable(shape1, TFloat32.DTYPE); + + Assign var0Initializer = tf.assign(var0, tf.constant(var0_init)); + Assign var1Initializer = tf.assign(var1, tf.constant(var1_init)); + + Constant grads0 = tf.constant(grads0_init); + Constant grads1 = tf.constant(grads1_init); + + /* initialize the local variables */ + /* initialize the local variables */ + session.run(var0Initializer); + session.run(var1Initializer); + + float learningRate = 3.0F; + + AdaGrad instance = new AdaGrad(tf, learningRate); + + /* build the GradsAnvVars */ + List gradsAndVars = new ArrayList<>(); + gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); + gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); + + Op ada_update = instance.applyGradients(gradsAndVars, "AdGradDATest"); + + /** initialize the accumulators */ + session.run(tf.init()); + + session.evaluate(var0_init, var0); + session.evaluate(var1_init, var1); + session.run(ada_update); + float[] expected0 = {-0.904534F, -1.603567F}; + session.evaluate(expected0, var0); + float[] expected1 = {-0.094821f, -0.189358f}; + session.evaluate(expected1, var1); + } + } +} diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaGradTest.java b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaGradTest.java new file mode 100644 index 00000000000..28c45c4c8c3 --- /dev/null +++ b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaGradTest.java @@ -0,0 +1,170 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.optimizers; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; +import static org.tensorflow.framework.optimizers.AdaGrad.ACCUMULATOR; +import org.tensorflow.framework.optimizers.Optimizer; +import static org.tensorflow.keras.optimizers.AdaGrad.INITIAL_ACCUM_KEY; +import static org.tensorflow.keras.optimizers.AdaGrad.LEARNING_RATE_KEY; +import static org.tensorflow.keras.optimizers.OptimizerInterface.NAME_KEY; +import org.tensorflow.keras.utils.ND; +import org.tensorflow.keras.utils.TestSession; +import org.tensorflow.ndarray.FloatNdArray; +import org.tensorflow.ndarray.NdArrays; +import org.tensorflow.ndarray.Shape; +import org.tensorflow.op.Op; +import org.tensorflow.op.Ops; +import org.tensorflow.op.core.Assign; +import org.tensorflow.op.core.Constant; +import org.tensorflow.op.core.Variable; +import org.tensorflow.types.TFloat32; + +/** Test cases for AdaGrad Optimizer */ +public class AdaGradTest { + private TestSession.Mode tf_mode = TestSession.Mode.GRAPH; + int index; + + public AdaGradTest() {} + + @BeforeAll + public static void setUpClass() {} + + @AfterAll + public static void tearDownClass() {} + + @BeforeEach + public void setUp() {} + + @AfterEach + public void tearDown() {} + + /** Test of create method, of class AdaGrad. */ + @Test + public void testCreate() { + try (TestSession session = TestSession.createTestSession(tf_mode)) { + Ops tf = session.getTF(); + Map config = new HashMap<>(); + config.put(NAME_KEY, "AdaDelta"); + config.put(LEARNING_RATE_KEY, 2.0F); + config.put(INITIAL_ACCUM_KEY, 0.1F); + AdaGrad expResult = new AdaGrad(tf, 2.0F, 0.1F); + AdaGrad result = AdaGrad.create(tf, config); + assertEquals(expResult.getConfig(), result.getConfig()); + } + } + + @Test + public void testBasic() { + int numSteps = 3; + float[] var0_init = {1.0F, 2.0F}; + float[] var1_init = {3.0F, 4.0F}; + float[] grads0_init = {0.1F, 0.1F}; + float[] grads1_init = {0.01F, 0.01F}; + float epsilon = 1e-8F; + float epsilon1 = 1e-5F; + float[] accum0 = {0.1f, 0.1f}; + float[] accum1 = {0.1f, 0.1f}; + + FloatNdArray var0_np = NdArrays.vectorOf(var0_init); + FloatNdArray var1_np = NdArrays.vectorOf(var1_init); + FloatNdArray grads0_np = NdArrays.vectorOf(grads0_init); + FloatNdArray grads1_np = NdArrays.vectorOf(grads1_init); + FloatNdArray accum0_np = NdArrays.vectorOf(accum0); + FloatNdArray accum1_np = NdArrays.vectorOf(accum1); + + try (TestSession session = TestSession.createTestSession(tf_mode)) { + Ops tf = session.getTF(); + + Shape shape0 = Shape.of(var0_init.length); + Shape shape1 = Shape.of(var1_init.length); + Variable var0 = tf.withName("var0").variable(shape0, TFloat32.DTYPE); + Variable var1 = tf.withName("var1").variable(shape1, TFloat32.DTYPE); + + Assign var0Initializer = tf.assign(var0, tf.constant(var0_init)); + Assign var1Initializer = tf.assign(var1, tf.constant(var1_init)); + + Constant grads0 = tf.constant(grads0_init); + Constant grads1 = tf.constant(grads1_init); + + float learningRate = 3.0F; + + AdaGrad instance = new AdaGrad(tf, learningRate); + + /* build the GradsAnvVars */ + List gradsAndVars = new ArrayList<>(); + gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); + gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); + + Op ada_update = instance.applyGradients(gradsAndVars, "AdGradTest"); + + Variable[] accumulatorSlots = new Variable[2]; + accumulatorSlots[0] = instance.getSlot(var0.asOutput(), ACCUMULATOR).get(); + assertEquals(accumulatorSlots[0].asOutput().shape(), var0.asOutput().shape()); + + accumulatorSlots[1] = instance.getSlot(var1.asOutput(), ACCUMULATOR).get(); + assertEquals(accumulatorSlots[1].asOutput().shape(), var1.asOutput().shape()); + + /* initialize the local variables */ + session.run(var0Initializer); + session.run(var1Initializer); + + /** initialize the accumulators */ + session.run(tf.init()); + + /** make sure the variables were initialized properly */ + session.evaluate(var0_init, var0); + session.evaluate(var1_init, var1); + + for (int step = 0; step < numSteps; step++) { + session.run(ada_update); + + accum0_np = caclulateAccum(accum0_np, grads0_np); + var0_np = calculate(var0_np, accum0_np, grads0_np, learningRate); + session.evaluate(var0_np, var0); + + accum1_np = caclulateAccum(accum1_np, grads1_np); + var1_np = calculate(var1_np, accum1_np, grads1_np, learningRate); + session.evaluate(var1_np, var1); + } + } + } + + private FloatNdArray caclulateAccum(FloatNdArray accum, FloatNdArray grads) { + // accum + g_t * g_t + FloatNdArray squareG = ND.square(grads); + FloatNdArray result = ND.add(accum, squareG); + return result; + } + + private FloatNdArray calculate( + FloatNdArray param, FloatNdArray accum, FloatNdArray grads, float learningRate) { + // param - lr * g_t / (np.sqrt(accum_t) + epsilon) + FloatNdArray divisor = ND.add(ND.sqrt(accum), 1e-07f); + FloatNdArray dividend = ND.mul(learningRate, grads); + FloatNdArray quotient = ND.div(dividend, divisor); + FloatNdArray result = ND.sub(param, quotient); + return result; + } +} diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdamTest.java b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdamTest.java new file mode 100644 index 00000000000..6f1d13d83d6 --- /dev/null +++ b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdamTest.java @@ -0,0 +1,263 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.optimizers; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; +import org.tensorflow.Tensor; +import static org.tensorflow.framework.optimizers.Adam.FIRST_MOMENT; +import static org.tensorflow.framework.optimizers.Adam.SECOND_MOMENT; +import org.tensorflow.framework.optimizers.Optimizer; +import static org.tensorflow.keras.optimizers.Adam.BETA_ONE_DEFAULT; +import static org.tensorflow.keras.optimizers.Adam.BETA_ONE_KEY; +import static org.tensorflow.keras.optimizers.Adam.BETA_TWO_DEFAULT; +import static org.tensorflow.keras.optimizers.Adam.BETA_TWO_KEY; +import static org.tensorflow.keras.optimizers.Adam.EPSILON_DEFAULT; +import static org.tensorflow.keras.optimizers.Adam.EPSILON_KEY; +import static org.tensorflow.keras.optimizers.Adam.LEARNING_RATE_DEFAULT; +import static org.tensorflow.keras.optimizers.Adam.LEARNING_RATE_KEY; +import static org.tensorflow.keras.optimizers.OptimizerInterface.NAME_KEY; +import org.tensorflow.keras.utils.ND; +import org.tensorflow.keras.utils.TestSession; +import org.tensorflow.ndarray.FloatNdArray; +import org.tensorflow.ndarray.NdArrays; +import org.tensorflow.ndarray.Shape; +import org.tensorflow.op.Op; +import org.tensorflow.op.Ops; +import org.tensorflow.op.core.Assign; +import org.tensorflow.op.core.Constant; +import org.tensorflow.op.core.Variable; +import org.tensorflow.types.TFloat32; + +/** Test cases for Adam Optimizer */ +public class AdamTest { + private TestSession.Mode tf_mode = TestSession.Mode.GRAPH; + + int index; + + public AdamTest() {} + + @BeforeAll + public static void setUpClass() {} + + @AfterAll + public static void tearDownClass() {} + + @BeforeEach + public void setUp() {} + + @AfterEach + public void tearDown() {} + + /** Test of create method, of class Adam. */ + @Test + public void testCreate() { + try (TestSession testSession = TestSession.createTestSession(tf_mode)) { + Ops tf = testSession.getTF(); + Map config = new HashMap<>(); + config.put(NAME_KEY, "AdaDelta"); + config.put(LEARNING_RATE_KEY, LEARNING_RATE_DEFAULT); + config.put(BETA_ONE_KEY, BETA_ONE_DEFAULT); + config.put(BETA_TWO_KEY, BETA_TWO_DEFAULT); + config.put(EPSILON_KEY, EPSILON_DEFAULT); + AdaDelta expResult = new AdaDelta(tf); + AdaDelta result = AdaDelta.create(tf, config); + assertEquals(expResult.getConfig(), result.getConfig()); + } + } + + @Test + public void testBasic() { + float m0 = 0.0F; + float v0 = 0.0F; + float m1 = 0.0F; + float v1 = 0.0F; + float[] var0_init = {1.0F, 2.0F}; + float[] var1_init = {3.0F, 4.0F}; + float[] grads0_init = {0.1F, 0.1F}; + float[] grads1_init = {0.01F, 0.01F}; + FloatNdArray var0_np = NdArrays.vectorOf(var0_init); + FloatNdArray var1_np = NdArrays.vectorOf(var1_init); + FloatNdArray grads0_np = NdArrays.vectorOf(grads0_init); + FloatNdArray grads1_np = NdArrays.vectorOf(grads1_init); + + float epsilon1 = 1e-3F; + + try (TestSession session = TestSession.createTestSession(tf_mode)) { + Ops tf = session.getTF(); + + session.setEpsilon(epsilon1); + + Shape shape0 = Shape.of(var0_init.length); + Shape shape1 = Shape.of(var1_init.length); + Variable var0 = tf.withName("var0").variable(shape0, TFloat32.DTYPE); + Variable var1 = tf.withName("var1").variable(shape1, TFloat32.DTYPE); + + Assign var0Initializer = tf.assign(var0, tf.constant(var0_init)); + Assign var1Initializer = tf.assign(var1, tf.constant(var1_init)); + + Constant grads0 = tf.constant(grads0_init); + Constant grads1 = tf.constant(grads1_init); + + /* initialize the local variables */ + session.run(var0Initializer); + session.run(var1Initializer); + + float learningRate = 0.001F; + float beta1 = 0.9F; + float beta2 = 0.999F; + float epsilon = 1e-8F; + + /* build the GradsAnvVars */ + List gradsAndVars = new ArrayList<>(); + gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); + gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); + + Adam instance = new Adam(tf, learningRate); + + Op update = instance.applyGradients(gradsAndVars, "AdamTest"); + + /* Create and validae the shapes of the slota */ + Variable[] firstMomentSlots = new Variable[2]; + Variable[] secondMomentSlots = new Variable[2]; + + firstMomentSlots[0] = instance.getSlot(var0.asOutput(), FIRST_MOMENT).get(); + assertEquals(firstMomentSlots[0].asOutput().shape(), var0.asOutput().shape()); + + secondMomentSlots[0] = instance.getSlot(var0.asOutput(), SECOND_MOMENT).get(); + assertEquals(secondMomentSlots[0].asOutput().shape(), var0.asOutput().shape()); + + firstMomentSlots[1] = instance.getSlot(var1.asOutput(), FIRST_MOMENT).get(); + assertEquals(firstMomentSlots[1].asOutput().shape(), var1.asOutput().shape()); + + secondMomentSlots[1] = instance.getSlot(var1.asOutput(), SECOND_MOMENT).get(); + assertEquals(secondMomentSlots[1].asOutput().shape(), var1.asOutput().shape()); + + /** initialize the accumulators */ + session.run(tf.init()); + + session.evaluate(var0_init, var0); + session.evaluate(var1_init, var1); + + FloatNdArray m0_np = NdArrays.ofFloats(shape1); + FloatNdArray v0_np = NdArrays.ofFloats(shape1); + FloatNdArray m1_np = NdArrays.ofFloats(shape1); + FloatNdArray v1_np = NdArrays.ofFloats(shape1); + + for (int step = 0; step < 3; step++) { + + // Test powers + final float[] powers = { + (float) Math.pow(beta1, step + 1), (float) Math.pow(beta2, step + 1) + }; + + try (Tensor result = + session + .getGraphSession() + .runner() + .fetch("beta1_power") + .run() + .get(0) + .expect(TFloat32.DTYPE)) { + result + .data() + .scalars() + .forEach( + f -> { + assertEquals(powers[0], f.getFloat(), epsilon1); + }); + } + try (Tensor result = + session + .getGraphSession() + .runner() + .fetch("beta2_power") + .run() + .get(0) + .expect(TFloat32.DTYPE)) { + result + .data() + .scalars() + .forEach( + f -> { + assertEquals(powers[1], f.getFloat(), epsilon1); + }); + } + session.run(update); + + float lr_t = + learningRate + * (float) Math.sqrt(1 - (float) Math.pow(beta2, (step + 1))) + / (1 - (float) Math.pow(beta1, (step + 1))); + + m0_np = calculateM(m0_np, grads0_np, beta1); + v0_np = calculateV(v0_np, grads0_np, beta2); + var0_np = calculateParam(var0_np, lr_t, m0_np, v0_np, 1e-7F); + + m1_np = calculateM(m1_np, grads1_np, beta1); + v1_np = calculateV(v1_np, grads1_np, beta2); + var1_np = calculateParam(var1_np, lr_t, m1_np, v1_np, 1e-7F); + + // evaluate var 0 and var1 + session.evaluate(var0_np, var0); + session.evaluate(var1_np, var1); + + // first moment + session.evaluate(m0_np, firstMomentSlots[0]); + session.evaluate(m1_np, firstMomentSlots[1]); + + // second moment + session.evaluate(v0_np, secondMomentSlots[0]); + session.evaluate(v1_np, secondMomentSlots[1]); + } + } + } + + private FloatNdArray calculateM(FloatNdArray m, FloatNdArray g_t, float beta) { + // m_t = beta1 * m + (1 - beta1) * g_t + return ND.add(ND.mul(m, beta), ND.mul(g_t, (1 - beta))); + } + + private FloatNdArray calculateV(FloatNdArray v, FloatNdArray g_t, float beta) { + // beta2 * v + (1 - beta2) * g_t * g_t + FloatNdArray mul1 = ND.mul(v, beta); + FloatNdArray squareG = ND.square(g_t); + FloatNdArray mul2 = ND.mul((1 - beta), squareG); + FloatNdArray add = ND.add(mul1, mul2); + return add; + + // return ND.add(ND.mul(v, beta), + // ND.mul((1-beta), ND.square(g_t))); + } + + private FloatNdArray calculateParam( + FloatNdArray param, float lr_t, FloatNdArray m, FloatNdArray v, float epsilon) { + // param - lr_t * m_t / (np.sqrt(v_t) + epsilon) + FloatNdArray sqrt = ND.sqrt(v); + FloatNdArray divisor = ND.add(sqrt, epsilon); + FloatNdArray dividend = ND.mul(lr_t, m); + FloatNdArray quotient = ND.div(dividend, divisor); + FloatNdArray result = ND.sub(param, quotient); + return result; + } +} diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdamaxTest.java b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdamaxTest.java new file mode 100644 index 00000000000..1d3dc9e76bf --- /dev/null +++ b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdamaxTest.java @@ -0,0 +1,242 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.optimizers; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; +import org.tensorflow.Tensor; +import org.tensorflow.framework.optimizers.Optimizer; +import static org.tensorflow.keras.optimizers.Adamax.BETA_ONE_DEFAULT; +import static org.tensorflow.keras.optimizers.Adamax.BETA_ONE_KEY; +import static org.tensorflow.keras.optimizers.Adamax.BETA_TWO_DEFAULT; +import static org.tensorflow.keras.optimizers.Adamax.BETA_TWO_KEY; +import static org.tensorflow.keras.optimizers.Adamax.EPSILON_DEFAULT; +import static org.tensorflow.keras.optimizers.Adamax.EPSILON_KEY; +import static org.tensorflow.keras.optimizers.Adamax.FIRST_MOMENT; +import static org.tensorflow.keras.optimizers.Adamax.LEARNING_RATE_DEFAULT; +import static org.tensorflow.keras.optimizers.Adamax.LEARNING_RATE_KEY; +import static org.tensorflow.keras.optimizers.Adamax.SECOND_MOMENT; +import static org.tensorflow.keras.optimizers.OptimizerInterface.NAME_KEY; +import org.tensorflow.keras.utils.ND; +import org.tensorflow.keras.utils.TestSession; +import org.tensorflow.ndarray.FloatNdArray; +import org.tensorflow.ndarray.NdArrays; +import org.tensorflow.ndarray.Shape; +import org.tensorflow.op.Op; +import org.tensorflow.op.Ops; +import org.tensorflow.op.core.Assign; +import org.tensorflow.op.core.Constant; +import org.tensorflow.op.core.Variable; +import org.tensorflow.types.TFloat32; + +/** Test cases for Adamax Optimizer */ +public class AdamaxTest { + private TestSession.Mode tf_mode = TestSession.Mode.GRAPH; + + private static final int VAR = 0; + private static final int M = 1; + private static final int V = 2; + + int index; + + public AdamaxTest() {} + + @BeforeAll + public static void setUpClass() {} + + @AfterAll + public static void tearDownClass() {} + + @BeforeEach + public void setUp() {} + + @AfterEach + public void tearDown() {} + + /** Test of create method, of class Adamax. */ + @Test + public void testCreate() { + try (TestSession session = TestSession.createTestSession(tf_mode)) { + Ops tf = session.getTF(); + Map config = new HashMap<>(); + config.put(NAME_KEY, "AdaDelta"); + config.put(LEARNING_RATE_KEY, LEARNING_RATE_DEFAULT); + config.put(BETA_ONE_KEY, BETA_ONE_DEFAULT); + config.put(BETA_TWO_KEY, BETA_TWO_DEFAULT); + config.put(EPSILON_KEY, EPSILON_DEFAULT); + AdaDelta expResult = new AdaDelta(tf); + AdaDelta result = AdaDelta.create(tf, config); + assertEquals(expResult.getConfig(), result.getConfig()); + } + } + + /** Test of getOptimizerName method, of class Adamax. */ + @Test + public void testGetOptimizerName() { + try (TestSession session = TestSession.createTestSession(tf_mode)) { + Ops tf = session.getTF(); + Adamax instance = new Adamax(tf); + String expResult = "Adamax"; + String result = instance.getOptimizerName(); + assertEquals(expResult, result); + } + } + + /** Test of applyDense method, of class Adamax. */ + @Test + public void testBasic() { + + int numSteps = 3; + + float[] var0_init = {1.0F, 2.0F}; + float[] var1_init = {3.0F, 4.0F}; + float[] grads0_init = {0.1F, 0.1F}; + float[] grads1_init = {0.01F, 0.01F}; + + float[] zeros = {0.0F, 0.0F}; + FloatNdArray m0 = NdArrays.vectorOf(zeros); + FloatNdArray v0 = NdArrays.vectorOf(zeros); + FloatNdArray m1 = NdArrays.vectorOf(zeros); + FloatNdArray v1 = NdArrays.vectorOf(zeros); + FloatNdArray var0_np = NdArrays.vectorOf(var0_init); + FloatNdArray var1_np = NdArrays.vectorOf(var1_init); + FloatNdArray grads0_np = NdArrays.vectorOf(grads0_init); + FloatNdArray grads1_np = NdArrays.vectorOf(grads1_init); + + float epsilon = 1e-6f; + float epsilon1 = 1e-3F; + + try (TestSession session = TestSession.createTestSession(tf_mode)) { + Ops tf = session.getTF(); + + Shape shape0 = Shape.of(var0_init.length); + Shape shape1 = Shape.of(var1_init.length); + Variable var0 = tf.withName("var0").variable(shape0, TFloat32.DTYPE); + Variable var1 = tf.withName("var1").variable(shape1, TFloat32.DTYPE); + + Assign var0Initializer = tf.assign(var0, tf.constant(var0_init)); + Assign var1Initializer = tf.assign(var1, tf.constant(var1_init)); + + Constant grads0 = tf.constant(grads0_init); + Constant grads1 = tf.constant(grads1_init); + + /* initialize the local variables */ + session.run(var0Initializer); + session.run(var1Initializer); + + Adamax instance = new Adamax(tf); + /* build the GradsAnvVars */ + List gradsAndVars = new ArrayList<>(); + gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); + gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); + + Op update = instance.applyGradients(gradsAndVars, "AdamTest"); + + /* Create and validae the shapes of the slota */ + Variable[] firstMomentSlots = new Variable[2]; + Variable[] secondMomentSlots = new Variable[2]; + + firstMomentSlots[0] = instance.getSlot(var0.asOutput(), FIRST_MOMENT).get(); + assertEquals(firstMomentSlots[0].asOutput().shape(), var0.asOutput().shape()); + + secondMomentSlots[0] = instance.getSlot(var0.asOutput(), SECOND_MOMENT).get(); + assertEquals(secondMomentSlots[0].asOutput().shape(), var0.asOutput().shape()); + + firstMomentSlots[1] = instance.getSlot(var1.asOutput(), FIRST_MOMENT).get(); + assertEquals(firstMomentSlots[1].asOutput().shape(), var1.asOutput().shape()); + + secondMomentSlots[1] = instance.getSlot(var1.asOutput(), SECOND_MOMENT).get(); + assertEquals(secondMomentSlots[1].asOutput().shape(), var1.asOutput().shape()); + + /** initialize the accumulators */ + session.run(tf.init()); + + /* initialize the local variables */ + session.run(var0Initializer); + session.run(var1Initializer); + session.setEpsilon(epsilon1); + for (int step = 0; step < numSteps; step++) { + // Test powers + final float beta1_power = (float) Math.pow(BETA_ONE_DEFAULT, step + 1); + + try (Tensor result = + session + .getGraphSession() + .runner() + .fetch("beta1_power") + .run() + .get(0) + .expect(TFloat32.DTYPE)) { + result + .data() + .scalars() + .forEach( + f -> { + assertEquals(beta1_power, f.getFloat(), epsilon1); + }); + } + session.run(update); + + FloatNdArray[] resultNP = calculate(var0_np, grads0_np, step, m0, v0); + var0_np = resultNP[VAR]; + m0 = resultNP[M]; + v0 = resultNP[V]; + + resultNP = calculate(var1_np, grads1_np, step, m1, v1); + var1_np = resultNP[VAR]; + m1 = resultNP[M]; + v1 = resultNP[V]; + + // evaluate var0 and var1 + + session.evaluate(var0_np, var0); + session.evaluate(var1_np, var1); + } + } + } + + private FloatNdArray[] calculate( + FloatNdArray var_np, FloatNdArray grads_np, int step, FloatNdArray m, FloatNdArray v) { + float alpha = 0.001F; + float beta1 = BETA_ONE_DEFAULT; + float beta2 = BETA_TWO_DEFAULT; + float espilon = 1e-8F; + + float oneMinusBeta1 = 1.F - beta1; + float oneMinusBeta1Pow = 1.F - (float) Math.pow(beta1, step + 1); + float alpha1 = alpha / oneMinusBeta1Pow; + + // beta1 * m + (1 - beta1) * g_t; + m = ND.add(ND.mul(beta1, m), ND.mul(oneMinusBeta1, grads_np)); + // np.maximum(beta2 * v, np.abs(g_t)) + v = ND.max(ND.mul(beta2, v), ND.abs(grads_np)); + // param_t = param - (alpha / (1 - beta1**(t + 1))) * (m_t / (v_t + epsilon)) + var_np = ND.sub(var_np, ND.mul(alpha1, ND.div(m, ND.add(v, espilon)))); + + FloatNdArray[] result = new FloatNdArray[3]; + result[VAR] = var_np; + result[M] = m; + result[V] = v; + return result; + } +} diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/FtrlTest.java b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/FtrlTest.java new file mode 100644 index 00000000000..d61197348af --- /dev/null +++ b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/FtrlTest.java @@ -0,0 +1,352 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.optimizers; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; +import org.tensorflow.framework.optimizers.Optimizer; +import static org.tensorflow.keras.optimizers.Ftrl.INITIAL_ACCUM_VALUE_KEY; +import static org.tensorflow.keras.optimizers.Ftrl.L1STRENGTH_KEY; +import static org.tensorflow.keras.optimizers.Ftrl.L2STRENGTH_KEY; +import static org.tensorflow.keras.optimizers.Ftrl.L2_SHRINKAGE_REGULARIZATION_STRENGTH_KEY; +import static org.tensorflow.keras.optimizers.Ftrl.LEARNING_RATE_KEY; +import static org.tensorflow.keras.optimizers.Ftrl.LEARNING_RATE_POWER_KEY; +import static org.tensorflow.keras.optimizers.OptimizerInterface.NAME_KEY; +import org.tensorflow.keras.utils.TestSession; +import org.tensorflow.ndarray.Shape; +import org.tensorflow.op.Op; +import org.tensorflow.op.Ops; +import org.tensorflow.op.core.Assign; +import org.tensorflow.op.core.Constant; +import org.tensorflow.op.core.Variable; +import org.tensorflow.types.TFloat32; + +/** Test cases for Ftrl Optimizer */ +public class FtrlTest { + private TestSession.Mode tf_mode = TestSession.Mode.GRAPH; + int index; + + public FtrlTest() {} + + @BeforeAll + public static void setUpClass() {} + + @AfterAll + public static void tearDownClass() {} + + @BeforeEach + public void setUp() {} + + @AfterEach + public void tearDown() {} + + /** Test of initConfig method, of class Ftrl. */ + @Test + public void testInitConfig() { + try (TestSession session = TestSession.createTestSession(tf_mode)) { + Ops tf = session.getTF(); + Map config = new HashMap<>(); + config.put(NAME_KEY, "Ftrl"); + config.put(LEARNING_RATE_KEY, 2.0F); + config.put(LEARNING_RATE_POWER_KEY, -0.5F); + config.put(INITIAL_ACCUM_VALUE_KEY, 0.1F); + config.put(L1STRENGTH_KEY, 0.0F); + config.put(L2STRENGTH_KEY, 0.0F); + config.put(L2_SHRINKAGE_REGULARIZATION_STRENGTH_KEY, 0.0F); + Ftrl expResult = new Ftrl(tf, 2.0F); + Ftrl result = Ftrl.create(tf, config); + assertEquals(expResult.getConfig(), result.getConfig()); + } + } + + /** Test of getOptimizerName method, of class Ftrl. */ + @Test + public void testGetOptimizerName() { + try (TestSession session = TestSession.createTestSession(tf_mode)) { + Ops tf = session.getTF(); + Ftrl instance = new Ftrl(tf); + String expResult = "Ftrl"; + String result = instance.getOptimizerName(); + assertEquals(expResult, result); + } + } + + @Test + public void testFtrlWithL1_L2_L2Shrinkage() { + float[] var0_init = {1.0F, 2.0F}; + float[] var1_init = {4.0F, 3.0F}; + float[] grads0_init = {0.1F, 0.2F}; + float[] grads1_init = {0.01F, 0.02F}; + float epsilon = 1e-8F; + float epsilon1 = 1e-5F; + + int numSteps = 10; + + try (TestSession session = TestSession.createTestSession(tf_mode)) { + Ops tf = session.getTF(); + + Shape shape0 = Shape.of(var0_init.length); + Shape shape1 = Shape.of(var1_init.length); + Variable var0 = tf.withName("var0").variable(shape0, TFloat32.DTYPE); + Variable var1 = tf.withName("var1").variable(shape1, TFloat32.DTYPE); + + Assign var0Initializer = tf.assign(var0, tf.constant(var0_init)); + Assign var1Initializer = tf.assign(var1, tf.constant(var1_init)); + + Constant grads0 = tf.constant(grads0_init); + Constant grads1 = tf.constant(grads1_init); + + float learningRate = 3.0F; + + Ftrl instance = + new Ftrl( + tf, + learningRate, + -0.5F, // learningRatePower + 0.1F, // initial_accumulator_value + 0.001F, // l1_regularization_strength + 2.0F, // l2_regularization_strength + 0.1F // l2_shrinkage_regularization_strength + ); + + /* build the GradsAnvVars */ + List gradsAndVars = new ArrayList<>(); + gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); + gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); + + Op ftrl_update = instance.applyGradients(gradsAndVars, "FtrlTest"); + + /* initialize the local variables */ + session.run(var0Initializer); + session.run(var1Initializer); + + /** initialize the accumulators */ + session.run(tf.init()); + + session.evaluate(var0_init, var0); + session.evaluate(var1_init, var1); + + for (int i = 0; i < numSteps; i++) { + session.run(ftrl_update); + } + + float[] expectedVar0 = {-0.22578995F, -0.44345796F}; + session.evaluate(expectedVar0, var0); + float[] expectedVar1 = {-0.14378493F, -0.13229476F}; + session.evaluate(expectedVar1, var1); + } + } + + @Test + public void testFtrlWithL1() { + float[] var0_init = {1.0F, 2.0F}; + float[] var1_init = {4.0F, 3.0F}; + float[] grads0_init = {0.1F, 0.2F}; + float[] grads1_init = {0.01F, 0.02F}; + float epsilon = 1e-8F; + float epsilon1 = 1e-5F; + + int numSteps = 10; + + try (TestSession session = TestSession.createTestSession(tf_mode)) { + Ops tf = session.getTF(); + + Shape shape0 = Shape.of(var0_init.length); + Shape shape1 = Shape.of(var1_init.length); + Variable var0 = tf.withName("var0").variable(shape0, TFloat32.DTYPE); + Variable var1 = tf.withName("var1").variable(shape1, TFloat32.DTYPE); + + Assign var0Initializer = tf.assign(var0, tf.constant(var0_init)); + Assign var1Initializer = tf.assign(var1, tf.constant(var1_init)); + + Constant grads0 = tf.constant(grads0_init); + Constant grads1 = tf.constant(grads1_init); + + float learningRate = 3.0F; + + Ftrl instance = + new Ftrl( + tf, + learningRate, + Ftrl.LEARNING_RATE_POWER_DEFAULT, // learningRatePower + 0.1F, // initial_accumulator_value + 0.001F, // l1_regularization_strength + 0.0F, // l2_regularization_strength + Ftrl + .L2_SHRINKAGE_REGULARIZATION_STRENGTH_DEFAULT // l2_shrinkage_regularization_strength + ); + + /* build the GradsAnvVars */ + List gradsAndVars = new ArrayList<>(); + gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); + gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); + + Op ftrl_update = instance.applyGradients(gradsAndVars, "FtrlTest"); + + /* initialize the local variables */ + session.run(var0Initializer); + session.run(var1Initializer); + + /** initialize the accumulators */ + session.run(tf.init()); + + session.evaluate(var0_init, var0); + session.evaluate(var1_init, var1); + + for (int i = 0; i < numSteps; i++) { + session.run(ftrl_update); + } + + float[] expectedVar0 = {-7.66718769F, -10.91273689F}; + session.evaluate(expectedVar0, var0); + + float[] expectedVar1 = {-0.93460727F, -1.86147261F}; + session.evaluate(expectedVar1, var1); + } + } + + @Test + public void testFtrlWithL1_L2() { + float[] var0_init = {1.0F, 2.0F}; + float[] var1_init = {4.0F, 3.0F}; + float[] grads0_init = {0.1F, 0.2F}; + float[] grads1_init = {0.01F, 0.02F}; + float epsilon = 1e-8F; + float epsilon1 = 1e-5F; + + int numSteps = 10; + + try (TestSession session = TestSession.createTestSession(tf_mode)) { + Ops tf = session.getTF(); + + Shape shape0 = Shape.of(var0_init.length); + Shape shape1 = Shape.of(var1_init.length); + Variable var0 = tf.withName("var0").variable(shape0, TFloat32.DTYPE); + Variable var1 = tf.withName("var1").variable(shape1, TFloat32.DTYPE); + + Assign var0Initializer = tf.assign(var0, tf.constant(var0_init)); + Assign var1Initializer = tf.assign(var1, tf.constant(var1_init)); + + Constant grads0 = tf.constant(grads0_init); + Constant grads1 = tf.constant(grads1_init); + + float learningRate = 3.0F; + + Ftrl instance = + new Ftrl( + tf, + learningRate, + Ftrl.LEARNING_RATE_POWER_DEFAULT, // learningRatePower + 0.1F, // initial_accumulator_value + 0.001F, // l1_regularization_strength + 2.0F, // l2_regularization_strength + Ftrl + .L2_SHRINKAGE_REGULARIZATION_STRENGTH_DEFAULT // l2_shrinkage_regularization_strength + ); + + /* build the GradsAnvVars */ + List gradsAndVars = new ArrayList<>(); + gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); + gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); + + Op ftrl_update = instance.applyGradients(gradsAndVars, "FtrlTest"); + + /* initialize the local variables */ + session.run(var0Initializer); + session.run(var1Initializer); + + /** initialize the accumulators */ + session.run(tf.init()); + + session.evaluate(var0_init, var0); + session.evaluate(var1_init, var1); + + for (int i = 0; i < numSteps; i++) { + session.run(ftrl_update); + } + + float[] expectedVar0 = {-0.24059935F, -0.46829352F}; + session.evaluate(expectedVar0, var0); + + float[] expectedVar1 = {-0.02406147F, -0.04830509F}; + session.evaluate(expectedVar1, var1); + } + } + + @Test + public void doTestFtrlwithoutRegularization() { + float[] var0_init = {0.0F, 0.0F}; + float[] var1_init = {0.0F, 0.0F}; + float[] grads0_init = {0.1F, 0.2F}; + float[] grads1_init = {0.01F, 0.02F}; + float epsilon = 1e-8F; + float epsilon1 = 1e-5F; + + int numSteps = 3; + + try (TestSession session = TestSession.createTestSession(tf_mode)) { + Ops tf = session.getTF(); + + Shape shape0 = Shape.of(var0_init.length); + Shape shape1 = Shape.of(var1_init.length); + Variable var0 = tf.withName("var0").variable(shape0, TFloat32.DTYPE); + Variable var1 = tf.withName("var1").variable(shape1, TFloat32.DTYPE); + + Assign var0Initializer = tf.assign(var0, tf.constant(var0_init)); + Assign var1Initializer = tf.assign(var1, tf.constant(var1_init)); + + Constant grads0 = tf.constant(grads0_init); + Constant grads1 = tf.constant(grads1_init); + + float learningRate = 3.0F; + + Ftrl instance = new Ftrl(tf, learningRate); + + /* build the GradsAnvVars */ + List gradsAndVars = new ArrayList<>(); + gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); + gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); + Op ftrl_update = instance.applyGradients(gradsAndVars, "FtrlTest"); + + /* initialize the local variables */ + session.run(var0Initializer); + session.run(var1Initializer); + + /** initialize the accumulators */ + session.run(tf.init()); + + session.evaluate(var0_init, var0); + session.evaluate(var1_init, var1); + + for (int i = 0; i < numSteps; i++) { + session.run(ftrl_update); + } + + float[] expectedVar0 = {-2.60260963F, -4.29698515F}; + float[] expectedVar1 = {-0.28432083F, -0.56694895F}; + + session.evaluate(expectedVar0, var0); + session.evaluate(expectedVar1, var1); + } + } +} diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/NadamTest.java b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/NadamTest.java new file mode 100644 index 00000000000..2b8bce40471 --- /dev/null +++ b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/NadamTest.java @@ -0,0 +1,286 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.optimizers; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; +import org.tensorflow.Tensor; +import org.tensorflow.framework.optimizers.Optimizer; +import static org.tensorflow.keras.optimizers.Adamax.LEARNING_RATE_KEY; +import static org.tensorflow.keras.optimizers.Nadam.BETA_ONE_DEFAULT; +import static org.tensorflow.keras.optimizers.Nadam.BETA_ONE_KEY; +import static org.tensorflow.keras.optimizers.Nadam.BETA_TWO_DEFAULT; +import static org.tensorflow.keras.optimizers.Nadam.BETA_TWO_KEY; +import static org.tensorflow.keras.optimizers.Nadam.EPSILON_DEFAULT; +import static org.tensorflow.keras.optimizers.Nadam.EPSILON_KEY; +import static org.tensorflow.keras.optimizers.Nadam.FIRST_MOMENT; +import static org.tensorflow.keras.optimizers.Nadam.LEARNING_RATE_DEFAULT; +import static org.tensorflow.keras.optimizers.Nadam.SECOND_MOMENT; +import static org.tensorflow.keras.optimizers.OptimizerInterface.NAME_KEY; +import org.tensorflow.keras.utils.ND; +import org.tensorflow.keras.utils.TestSession; +import org.tensorflow.ndarray.FloatNdArray; +import org.tensorflow.ndarray.NdArrays; +import org.tensorflow.ndarray.Shape; +import org.tensorflow.op.Op; +import org.tensorflow.op.Ops; +import org.tensorflow.op.core.Assign; +import org.tensorflow.op.core.Constant; +import org.tensorflow.op.core.Variable; +import org.tensorflow.types.TFloat32; + +/** Test cases for Nadam Optimizer */ +public class NadamTest { + private TestSession.Mode tf_mode = TestSession.Mode.GRAPH; + + private static final int VAR = 0; + private static final int M = 1; + private static final int V = 2; + + int index = 0; + float momentum = 1; + + public NadamTest() {} + + @BeforeAll + public static void setUpClass() {} + + @AfterAll + public static void tearDownClass() {} + + @BeforeEach + public void setUp() {} + + @AfterEach + public void tearDown() {} + + /** Test of create method, of class Nadam. */ + @Test + public void testCreate() { + try (TestSession session = TestSession.createTestSession(tf_mode)) { + Ops tf = session.getTF(); + Map config = new HashMap<>(); + config.put(NAME_KEY, "AdaDelta"); + config.put(LEARNING_RATE_KEY, LEARNING_RATE_DEFAULT); + config.put(BETA_ONE_KEY, BETA_ONE_DEFAULT); + config.put(BETA_TWO_KEY, BETA_TWO_DEFAULT); + config.put(EPSILON_KEY, EPSILON_DEFAULT); + AdaDelta expResult = new AdaDelta(tf); + AdaDelta result = AdaDelta.create(tf, config); + assertEquals(expResult.getConfig(), result.getConfig()); + } + } + + /** Test of getOptimizerName method, of class Nadam. */ + @Test + public void testGetOptimizerName() { + try (TestSession session = TestSession.createTestSession(tf_mode)) { + Ops tf = session.getTF(); + Nadam instance = new Nadam(tf); + String expResult = "Nadam"; + String result = instance.getOptimizerName(); + assertEquals(expResult, result); + } + } + + /** Test of applyDense method, of class Nadam. */ + @Test + public void testBasic() { + + int numSteps = 3; + + float[] var0_init = {1.0F, 2.0F}; + float[] var1_init = {3.0F, 4.0F}; + float[] grads0_init = {0.1F, 0.1F}; + float[] grads1_init = {0.01F, 0.01F}; + + float[] zeros = {0.0F, 0.0F}; + float[] ones = {1.0F, 1.0F}; + FloatNdArray m0 = NdArrays.vectorOf(zeros); + FloatNdArray v0 = NdArrays.vectorOf(zeros); + FloatNdArray m1 = NdArrays.vectorOf(zeros); + FloatNdArray v1 = NdArrays.vectorOf(zeros); + FloatNdArray mcache = NdArrays.vectorOf(ones); + FloatNdArray var0_np = NdArrays.vectorOf(var0_init); + FloatNdArray var1_np = NdArrays.vectorOf(var1_init); + FloatNdArray grads0_np = NdArrays.vectorOf(grads0_init); + FloatNdArray grads1_np = NdArrays.vectorOf(grads1_init); + + float epsilon = 1e-6f; + float epsilon1 = 1e-3F; + + try (TestSession session = TestSession.createTestSession(tf_mode)) { + Ops tf = session.getTF(); + + Shape shape0 = Shape.of(var0_init.length); + Shape shape1 = Shape.of(var1_init.length); + Variable var0 = tf.withName("var0").variable(shape0, TFloat32.DTYPE); + Variable var1 = tf.withName("var1").variable(shape1, TFloat32.DTYPE); + + Assign var0Initializer = tf.assign(var0, tf.constant(var0_init)); + Assign var1Initializer = tf.assign(var1, tf.constant(var1_init)); + + Constant grads0 = tf.constant(grads0_init); + Constant grads1 = tf.constant(grads1_init); + + Nadam instance = new Nadam(tf); + /* build the GradsAnvVars */ + List gradsAndVars = new ArrayList<>(); + gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); + gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); + + Op update = instance.applyGradients(gradsAndVars, "AdamTest"); + + /* Create and validae the shapes of the slota */ + Variable[] firstMomentSlots = new Variable[2]; + Variable[] secondMomentSlots = new Variable[2]; + + firstMomentSlots[0] = instance.getSlot(var0.asOutput(), FIRST_MOMENT).get(); + assertEquals(firstMomentSlots[0].asOutput().shape(), var0.asOutput().shape()); + + secondMomentSlots[0] = instance.getSlot(var0.asOutput(), SECOND_MOMENT).get(); + assertEquals(secondMomentSlots[0].asOutput().shape(), var0.asOutput().shape()); + + firstMomentSlots[1] = instance.getSlot(var1.asOutput(), FIRST_MOMENT).get(); + assertEquals(firstMomentSlots[1].asOutput().shape(), var1.asOutput().shape()); + + secondMomentSlots[1] = instance.getSlot(var1.asOutput(), SECOND_MOMENT).get(); + assertEquals(secondMomentSlots[1].asOutput().shape(), var1.asOutput().shape()); + + /* initialize the local variables */ + session.run(var0Initializer); + session.run(var1Initializer); + + /** initialize the accumulators */ + session.run(tf.init()); + + session.setEpsilon(epsilon1); + + session.evaluate(var0_init, var0); + session.evaluate(var1_init, var1); + + try (Tensor result = + session + .getGraphSession() + .runner() + .fetch("momentum") + .run() + .get(0) + .expect(TFloat32.DTYPE)) { + result + .data() + .scalars() + .forEach( + f -> { + assertEquals(1F, f.getFloat(), epsilon1); + }); + } + momentum = 1F; + + for (int step = 0; step < numSteps; step++) { + + session.run(update); + + float mut = + Nadam.BETA_ONE_DEFAULT * (1F - 0.5F * (float) Math.pow(0.96F, (0.004F * (step + 1)))); + momentum = momentum * mut; + + try (Tensor result = + session + .getGraphSession() + .runner() + .fetch("momentum") + .run() + .get(0) + .expect(TFloat32.DTYPE)) { + result + .data() + .scalars() + .forEach( + f -> { + assertEquals(momentum, f.getFloat(), epsilon1); + }); + } + mcache = ND.mul(mcache, momentum); + FloatNdArray[] resultsNP = nadam_update_numpy(var0_np, grads0_np, step, m0, v0, mcache); + var0_np = resultsNP[VAR]; + m0 = resultsNP[M]; + v0 = resultsNP[V]; + + resultsNP = nadam_update_numpy(var1_np, grads1_np, step, m1, v1, mcache); + var1_np = resultsNP[VAR]; + m1 = resultsNP[M]; + v1 = resultsNP[V]; + + // evaluate m0 and m1 + session.evaluate(m0, firstMomentSlots[0]); + session.evaluate(m1, firstMomentSlots[1]); + + // evaluate v0 and v1 + session.evaluate(v0, secondMomentSlots[0]); + session.evaluate(v1, secondMomentSlots[1]); + + // evaluate var0 and var1 + session.evaluate(var0_np, var0); + session.evaluate(var1_np, var1); + } + } + } + + private FloatNdArray update_m_cache(FloatNdArray mcache, int t) { + float mu_t = 0.9F * (1.0F - 0.5F * (float) Math.pow(0.96, (0.004 * (t + 1)))); + return ND.mul(mu_t, mcache); + } + + private FloatNdArray[] nadam_update_numpy( + FloatNdArray var_np, + FloatNdArray grads_np, + int t, + FloatNdArray m, + FloatNdArray v, + FloatNdArray m_cache) { + + float alpha = 0.001F; + float beta1 = 0.9F; + float beta2 = 0.999F; + float epsilon = 1e-8F; + float mu_t = beta1 * (1F - 0.5F * (float) Math.pow(0.96, 0.004 * (t + 1))); + float mu_t_1 = beta1 * (1F - 0.5F * (float) Math.pow(0.96, (0.004 * (t + 2)))); + FloatNdArray m_cache_t_1 = ND.mul(m_cache, mu_t_1); + FloatNdArray g_prime_t = ND.div(grads_np, ND.sub(1.0F, m_cache)); + FloatNdArray m_t = ND.add(ND.mul(beta1, m), ND.mul((1 - beta1), grads_np)); + FloatNdArray v_t = ND.add(ND.mul(beta2, v), ND.mul((1 - beta2), ND.square(grads_np))); + + FloatNdArray m_prime_t = ND.div(m_t, ND.sub(1.F, m_cache_t_1)); + FloatNdArray v_prime_t = ND.div(v_t, 1.F - (float) Math.pow(beta2, t + 1)); + FloatNdArray m_bar_t = ND.add(ND.mul((1 - mu_t), g_prime_t), ND.mul(mu_t_1, m_prime_t)); + FloatNdArray param_t = + ND.sub(var_np, ND.div(ND.mul(alpha, m_bar_t), ND.add(ND.sqrt(v_prime_t), epsilon))); + + FloatNdArray[] results = new FloatNdArray[3]; + results[VAR] = param_t; + results[M] = m_t; + results[V] = v_t; + return results; + } +} diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/RMSPropTest.java b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/RMSPropTest.java new file mode 100644 index 00000000000..b8fb4f40ee9 --- /dev/null +++ b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/RMSPropTest.java @@ -0,0 +1,307 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.optimizers; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; +import org.tensorflow.framework.optimizers.Optimizer; +import static org.tensorflow.framework.optimizers.RMSProp.MG; +import static org.tensorflow.framework.optimizers.RMSProp.MOMENTUM; +import static org.tensorflow.framework.optimizers.RMSProp.RMS; +import static org.tensorflow.keras.optimizers.Ftrl.LEARNING_RATE_KEY; +import static org.tensorflow.keras.optimizers.OptimizerInterface.NAME_KEY; +import static org.tensorflow.keras.optimizers.RMSProp.CENTERED_DEFAULT; +import static org.tensorflow.keras.optimizers.RMSProp.CENTERED_KEY; +import static org.tensorflow.keras.optimizers.RMSProp.DECAY_DEFAULT; +import static org.tensorflow.keras.optimizers.RMSProp.DECAY_KEY; +import static org.tensorflow.keras.optimizers.RMSProp.EPSILON_DEFAULT; +import static org.tensorflow.keras.optimizers.RMSProp.EPSILON_KEY; +import static org.tensorflow.keras.optimizers.RMSProp.MOMENTUM_DEFAULT; +import static org.tensorflow.keras.optimizers.RMSProp.MOMENTUM_KEY; +import org.tensorflow.keras.utils.ND; +import org.tensorflow.keras.utils.TestSession; +import org.tensorflow.ndarray.FloatNdArray; +import org.tensorflow.ndarray.NdArrays; +import org.tensorflow.ndarray.Shape; +import org.tensorflow.op.Op; +import org.tensorflow.op.Ops; +import org.tensorflow.op.core.Assign; +import org.tensorflow.op.core.Constant; +import org.tensorflow.op.core.Variable; +import org.tensorflow.types.TFloat32; + +/** Test cases for RMSProp Optimizer */ +public class RMSPropTest { + private TestSession.Mode tf_mode = TestSession.Mode.GRAPH; + + final int VAR_T = 0; + final int MG_T = 1; + final int RMS_T = 2; + final int MOM_T = 3; + + int index; + + public RMSPropTest() { + } + + @BeforeAll + public static void setUpClass() { + } + + @AfterAll + public static void tearDownClass() { + } + + @BeforeEach + public void setUp() { + } + + @AfterEach + public void tearDown() { + } + + /** + * Test of create method, of class RMSProp. + */ + @Test + public void testCreate() { + try (TestSession session = TestSession.createTestSession(tf_mode)) { + Ops tf = session.getTF(); + Map config = new HashMap<>(); + config.put(NAME_KEY, "Ftrl"); + config.put(LEARNING_RATE_KEY, 2.0F); + config.put(DECAY_KEY, DECAY_DEFAULT); + config.put(MOMENTUM_KEY, MOMENTUM_DEFAULT); + config.put(EPSILON_KEY, EPSILON_DEFAULT); + config.put(CENTERED_KEY, CENTERED_DEFAULT); + Ftrl expResult = new Ftrl(tf, 2.0F); + Ftrl result = Ftrl.create(tf, config); + assertEquals(expResult.getConfig(), result.getConfig()); + } + } + + Object[][] _test_param_values = { + // learning_rate, rho (decay), momentum, epsilon, centered + {0.05F, 0.9F, 0.0F, 1e-3F, true}, + {0.05F, 0.9F, 0.0F, 1e-3F, false}, + {0.1F, 0.9F, 0.0F, 1e-3F, true}, + {0.01F, 0.9F, 0.0F, 1e-5F, true}, + {0.01F, 0.9F, 0.9F, 1e-5F, true} + }; + + @Test + public void testDense() { + + int numSteps = 3; + + for (int run = 0; run < _test_param_values.length; run++) { + try (TestSession session = TestSession.createTestSession(tf_mode)) { + Ops tf = session.getTF(); + session.setEpsilon(1e-2f); + float[] var0_init = {1.0F, 2.0F}; + float[] var1_init = {3.0F, 4.0F}; + float[] grads0_init = {0.1F, 0.2F}; + float[] grads1_init = {0.01F, 0.2F}; + final float epsilon1 = 1e-2F; + + FloatNdArray var0_np = NdArrays.vectorOf(var0_init); + FloatNdArray var1_np = NdArrays.vectorOf(var1_init); + FloatNdArray grads0_np = NdArrays.vectorOf(grads0_init); + FloatNdArray grads1_np = NdArrays.vectorOf(grads1_init); + + Shape shape0 = Shape.of(var0_init.length); + Shape shape1 = Shape.of(var1_init.length); + Variable var0 = tf.withName("var0").variable(shape0, TFloat32.DTYPE); + Variable var1 = tf.withName("var1").variable(shape1, TFloat32.DTYPE); + + Assign var0Initializer = tf.assign(var0, tf.constant(var0_init)); + Assign var1Initializer = tf.assign(var1, tf.constant(var1_init)); + + Constant grads0 = tf.constant(grads0_init); + Constant grads1 = tf.constant(grads1_init); + + // learning_rate, rho (decay), momentum, epsilon, centered + float learningRate = (float) (float) _test_param_values[run][0]; + float decay = (float) _test_param_values[run][1]; + float momentum = (float) _test_param_values[run][2]; + float epsilon = (float) _test_param_values[run][3]; + boolean centered = (boolean) _test_param_values[run][4]; + + RMSProp instance = new RMSProp(tf, + learningRate, + decay, + momentum, + epsilon, + centered); + + /* build the GradsAnvVars */ + List gradsAndVars = new ArrayList<>(); + gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); + gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); + + Op update = instance.applyGradients(gradsAndVars, "RMSPropTest"); + + /* initialize the local variables */ + session.run(var0Initializer); + session.run(var1Initializer); + + /** + * initialize the accumulators + */ + session.run(tf.init()); + + /** + * make sure the variables were initialized properly + */ + session.evaluate(var0_init, var0); + session.evaluate(var1_init, var1); + + Variable mg0 = centered ? instance.getSlot(var0.asOutput(), MG).get() : null; + Variable mg1 = centered ? instance.getSlot(var1.asOutput(), MG).get() : null; + Variable mom0 = momentum > 0.F ? instance.getSlot(var0.asOutput(), MOMENTUM).get() : null; + Variable mom1 = momentum > 0.F ? instance.getSlot(var1.asOutput(), MOMENTUM).get() : null; + Variable rms0 = instance.getSlot(var0.asOutput(), RMS).get(); + Variable rms1 = instance.getSlot(var1.asOutput(), RMS).get(); + + float[] zeros = {0.0F, 0.0F}; + float[] ones = {1.0F, 1.0F}; // temp to match RMSProp + FloatNdArray mg0_np = NdArrays.vectorOf(zeros); + FloatNdArray mg1_np = NdArrays.vectorOf(zeros); + FloatNdArray rms0_np = NdArrays.vectorOf(ones); + FloatNdArray rms1_np = NdArrays.vectorOf(ones); + FloatNdArray mom0_np = NdArrays.vectorOf(zeros); + FloatNdArray mom1_np = NdArrays.vectorOf(zeros); + + + + for (int i = 0; i < numSteps; i++) { + session.run(update); + FloatNdArray[] result0 = calc(var0_np, grads0_np, mg0_np, rms0_np, + mom0_np, learningRate, decay, momentum, epsilon, centered); + var0_np = result0[VAR_T]; + mg0_np = result0[MG_T]; + rms0_np = result0[RMS_T]; + mom0_np = result0[MOM_T]; + + FloatNdArray[] result1 = calc(var1_np, grads1_np, mg1_np, rms1_np, + mom1_np, learningRate, decay, momentum, epsilon, centered); + + var1_np = result1[VAR_T]; + mg1_np = result1[MG_T]; + rms1_np = result1[RMS_T]; + mom1_np = result1[MOM_T]; + + if (centered) { + session.evaluate(mg0_np, mg0); + session.evaluate(mg0_np, mg0); + } + if (momentum > 0.F) { + session.evaluate(mom0_np, mom0); + session.evaluate(mom1_np, mom1); + } + + /* TODO the values returned from rms slot, do not match what I see in the python test */ + session.evaluate(rms0_np, rms0); + session.evaluate(rms1_np, rms1); + + session.evaluate(var0_np, var0); + session.evaluate(var1_np, var1); + } + } + } + } + + FloatNdArray[] calc(FloatNdArray var_np, FloatNdArray grad_np, FloatNdArray mg_np, + FloatNdArray rms_np, FloatNdArray mom, float lr, float decay, float momentum, + float epsilon, boolean centered) { + + FloatNdArray[] result = new FloatNdArray[4]; // var_t, mg_t, rms_t, mom_t + result[RMS_T] = calcRMS(rms_np, grad_np, decay); // RMS + + FloatNdArray denom_t; + if (centered) { + result[MG_T] = calcMG(mg_np, grad_np, decay); + //rms_t - mg_t * mg_t + denom_t = ND.sub(result[RMS_T], ND.square(result[MG_T])); + } else { + result[MG_T] = mg_np; + denom_t = rms_np; + } + if (momentum > 0.F) { + //momentum * mom + lr * g / (np.sqrt(denom_t + epsilon)) + result[MOM_T] = calcMom(momentum, mom, lr, grad_np, denom_t, epsilon); + //var_t = var - mom_t + result[VAR_T] = ND.sub(var_np, result[MOM_T]); + } else { + result[MOM_T] = mom; + result[VAR_T] = calcVar(var_np, grad_np, lr, denom_t, epsilon); + } + + + return result; + + } + + private FloatNdArray calcRMS(FloatNdArray rms_np, FloatNdArray grad_np, float decay) { + //rms * rho + (1 - rho) * g * g + FloatNdArray rms_rho = ND.mul(rms_np, decay); + FloatNdArray squareG = ND.square(grad_np); + float oneRHO = 1.0F - decay; + FloatNdArray decayG2 = ND.mul(oneRHO, squareG); + FloatNdArray result = ND.add(rms_rho, decayG2); + return result; + } + + private FloatNdArray calcMG(FloatNdArray mg_np, FloatNdArray grad_np, float decay) { + //mg_t = mg * rho + (1 - rho) * g + FloatNdArray mg_rho = ND.mul(mg_np, decay); + float oneRHO = 1.0F - decay; + FloatNdArray decayG = ND.mul(oneRHO, grad_np); + FloatNdArray result = ND.add(mg_rho, decayG); + return result; + + } + + private FloatNdArray calcMom(float momentum, FloatNdArray mom, float lr, + FloatNdArray grad_np, FloatNdArray denom_t, float epsilon) { + // momentum * mom + lr * g / (np.sqrt(denom_t + epsilon)) + FloatNdArray moMo = ND.mul(momentum, mom); + FloatNdArray dividend = ND.mul(lr, grad_np); + FloatNdArray divisor = ND.sqrt(ND.add(denom_t, epsilon)); + FloatNdArray quotient = ND.div(dividend, divisor); + FloatNdArray result = ND.add(moMo, quotient); + return result; + + } + + private FloatNdArray calcVar(FloatNdArray var_np, FloatNdArray grad_np, float lr, + FloatNdArray denom_t, float epsilon) { + // var - lr * g / (np.sqrt(denom_t) + epsilon) + FloatNdArray dividend = ND.mul(lr, grad_np); + FloatNdArray divisor = ND.add(ND.sqrt(denom_t), epsilon); + FloatNdArray quotient = ND.div(dividend, divisor); + FloatNdArray result = ND.sub(var_np, quotient); + return result; + + } +} diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/SGDTest.java b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/SGDTest.java new file mode 100644 index 00000000000..7e12b957f84 --- /dev/null +++ b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/SGDTest.java @@ -0,0 +1,227 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.optimizers; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; +import static org.tensorflow.framework.optimizers.Momentum.MOMENTUM; +import org.tensorflow.framework.optimizers.Optimizer; +import static org.tensorflow.keras.optimizers.OptimizerInterface.NAME_KEY; +import static org.tensorflow.keras.optimizers.SGD.LEARNING_RATE_KEY; +import static org.tensorflow.keras.optimizers.SGD.MOMENTUM_DEFAULT; +import static org.tensorflow.keras.optimizers.SGD.MOMENTUM_KEY; +import static org.tensorflow.keras.optimizers.SGD.NESTEROV_DEFAULT; +import static org.tensorflow.keras.optimizers.SGD.NESTEROV_KEY; +import org.tensorflow.keras.utils.TestSession; +import org.tensorflow.ndarray.Shape; +import org.tensorflow.op.Op; +import org.tensorflow.op.Ops; +import org.tensorflow.op.core.Assign; +import org.tensorflow.op.core.Constant; +import org.tensorflow.op.core.Variable; +import org.tensorflow.types.TFloat32; + +/** Test cases for SGD Optimizer */ +public class SGDTest { + + private TestSession.Mode tf_mode = TestSession.Mode.GRAPH; + + int index; + + public SGDTest() {} + + @BeforeAll + public static void setUpClass() {} + + @AfterAll + public static void tearDownClass() {} + + @BeforeEach + public void setUp() {} + + @AfterEach + public void tearDown() {} + + /** Test of create method, of class SGD. */ + @Test + public void testCreate() { + try (TestSession session = TestSession.createTestSession(tf_mode)) { + Ops tf = session.getTF(); + Map config = new HashMap<>(); + config.put(NAME_KEY, "Ftrl"); + config.put(LEARNING_RATE_KEY, 2.0F); + config.put(MOMENTUM_KEY, MOMENTUM_DEFAULT); + config.put(NESTEROV_KEY, NESTEROV_DEFAULT); + SGD expResult = new SGD(tf, 2.0F); + SGD result = SGD.create(tf, config); + assertEquals(expResult.getConfig(), result.getConfig()); + } + } + + /** Test of getOptimizerName method, of class SGD. */ + @Test + public void testGetOptimizerName() { + try (TestSession session = TestSession.createTestSession(tf_mode)) { + Ops tf = session.getTF(); + SGD instance = new SGD(tf); + String expResult = "SGD"; + String result = instance.getOptimizerName(); + assertEquals(expResult, result); + } + } + + @Test + public void testBasic() { + float[] var0_init = {1.0F, 2.0F}; + float[] var1_init = {3.0F, 4.0F}; + float[] grads0_init = {0.1F, 0.1F}; + float[] grads1_init = {0.01F, 0.01F}; + float learningRate = 3.0F; + + float epsilon = 1e-6F; + float epsilon1 = 1e-2F; + + try (TestSession session = TestSession.createTestSession(tf_mode)) { + Ops tf = session.getTF(); + + Shape shape0 = Shape.of(var0_init.length); + Shape shape1 = Shape.of(var1_init.length); + Variable var0 = tf.withName("var0").variable(shape0, TFloat32.DTYPE); + Variable var1 = tf.withName("var1").variable(shape1, TFloat32.DTYPE); + + Assign var0Initializer = tf.assign(var0, tf.constant(var0_init)); + Assign var1Initializer = tf.assign(var1, tf.constant(var1_init)); + + Constant grads0 = tf.constant(grads0_init); + Constant grads1 = tf.constant(grads1_init); + + /* build the GradsAnvVars */ + List gradsAndVars = new ArrayList<>(); + gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); + gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); + + SGD instance = new SGD(tf, learningRate); + Op update = instance.applyGradients(gradsAndVars, "SGDTest"); + + /* initialize the local variables */ + session.run(var0Initializer); + session.run(var1Initializer); + + /** initialize the accumulators */ + session.run(tf.init()); + + /** make sure the variables were initialized properly */ + session.evaluate(var0_init, var0); + session.evaluate(var1_init, var1); + + session.run(update); // 1 step + + float[] expectedVar0 = {1.0F - 3.0F * 0.1F, 2.0F - 3.0F * 0.1F}; + float[] expectedVar1 = {3.0F - 3.0F * 0.01F, 4.0F - 3.0F * 0.01F}; + session.evaluate(expectedVar0, var0); + session.evaluate(expectedVar1, var1); + } + } + + @Test + public void testMomentum() { + float[] var0_init = {1.0F, 2.0F}; + float[] var1_init = {3.0F, 4.0F}; + float[] grads0_init = {0.1F, 0.1F}; + float[] grads1_init = {0.01F, 0.01F}; + + float learningRate = 2.0F; + float momentum = 0.9F; + + float epsilon = 1e-6F; + float epsilon1 = 1e-2F; + + try (TestSession session = TestSession.createTestSession(tf_mode)) { + Ops tf = session.getTF(); + + Shape shape0 = Shape.of(var0_init.length); + Shape shape1 = Shape.of(var1_init.length); + Variable var0 = tf.withName("var0").variable(shape0, TFloat32.DTYPE); + Variable var1 = tf.withName("var1").variable(shape1, TFloat32.DTYPE); + + Assign var0Initializer = tf.assign(var0, tf.constant(var0_init)); + Assign var1Initializer = tf.assign(var1, tf.constant(var1_init)); + + Constant grads0 = tf.constant(grads0_init); + Constant grads1 = tf.constant(grads1_init); + + /* build the GradsAnvVars */ + List gradsAndVars = new ArrayList<>(); + gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); + gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); + + SGD instance = new SGD(tf, learningRate, momentum); + Op update = instance.applyGradients(gradsAndVars, "SGDTest"); + + Variable momentumSlot0 = instance.getSlot(var0.asOutput(), MOMENTUM).get(); + assertEquals(momentumSlot0.asOutput().shape(), var0.asOutput().shape()); + Variable momentumSlot1 = instance.getSlot(var1.asOutput(), MOMENTUM).get(); + assertEquals(momentumSlot1.asOutput().shape(), var1.asOutput().shape()); + + /* initialize the local variables */ + session.run(var0Initializer); + session.run(var1Initializer); + + /** initialize the accumulators */ + session.run(tf.init()); + + /** make sure the variables were initialized properly */ + session.evaluate(var0_init, var0); + session.evaluate(var1_init, var1); + + session.run(update); // 1 step + + float[] expectedMomentum0 = {0.1F, 0.1F}; + float[] expectedMomentum1 = {0.01F, 0.01F}; + session.evaluate(expectedMomentum0, momentumSlot0); + session.evaluate(expectedMomentum1, momentumSlot1); + + float[] expectedVar0 = {1.0F - (0.1F * 2.0F), 2.0F - (0.1F * 2.0F)}; + float[] expectedVar1 = {3.0F - (0.01F * 2.0F), 4.0F - (0.01F * 2.0F)}; + session.evaluate(expectedVar0, var0); + session.evaluate(expectedVar1, var1); + + session.run(update); // step 2 + + float[] expectedMomentum0_2 = {(0.9f * 0.1f + 0.1f), (0.9f * 0.1f + 0.1f)}; + float[] expectedMomentum1_2 = {(0.9f * 0.01f + 0.01f), (0.9f * 0.01f + 0.01f)}; + session.evaluate(expectedMomentum0_2, momentumSlot0); + session.evaluate(expectedMomentum1_2, momentumSlot1); + + float[] expectedVar0_2 = { + 1.0F - (0.1F * 2.0F) - ((0.9F * 0.1F + 0.1F) * 2.0F), + 2.0F - (0.1F * 2.0F) - ((0.9F * 0.1F + 0.1F) * 2.0F) + }; + float[] expectedVar1_2 = { + 2.98F - ((0.9F * 0.01F + 0.01F) * 2.0F), 3.98F - ((0.9F * 0.01F + 0.01F) * 2.0F) + }; + session.evaluate(expectedVar0_2, var0); + session.evaluate(expectedVar1_2, var1); + } + } +} diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/utils/EagerTestSession.java b/tensorflow-keras/src/test/java/org/tensorflow/keras/utils/EagerTestSession.java new file mode 100644 index 00000000000..3bc8091811a --- /dev/null +++ b/tensorflow-keras/src/test/java/org/tensorflow/keras/utils/EagerTestSession.java @@ -0,0 +1,747 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.utils; + +import java.io.PrintWriter; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicLong; +import java.util.function.Predicate; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; +import org.tensorflow.DataType; +import org.tensorflow.EagerSession; +import org.tensorflow.Operand; +import org.tensorflow.Output; +import org.tensorflow.Session; +import org.tensorflow.ndarray.FloatNdArray; +import org.tensorflow.ndarray.Shape; +import org.tensorflow.op.Ops; +import org.tensorflow.types.TBool; +import org.tensorflow.types.TFloat32; +import org.tensorflow.types.TFloat64; +import org.tensorflow.types.TInt32; +import org.tensorflow.types.TInt64; +import org.tensorflow.types.TString; +import org.tensorflow.types.family.TNumber; +import org.tensorflow.types.family.TType; + +/** Eaager Mode Test Session */ +public class EagerTestSession extends TestSession { + + private final EagerSession session; + private final Ops tf; + + /** Create an Eager mode test session. */ + public EagerTestSession() { + this.session = EagerSession.create(); + this.tf = Ops.create(session).withName("test"); + } + + /** {@inheritDoc} */ + @Override + public Ops getTF() { + return tf; + } + + /** + * Get the TensorFlow EagerSession instance + * @return the TensorFlow EagerSession instance + */ + public EagerSession getSession() { + return session; + } + + /** {@inheritDoc} */ + @Override + public void close() { + session.close(); + } + + /** {@inheritDoc} */ + @Override + public boolean isEager() { + return true; + } + + /** {@inheritDoc} */ + @Override + public Session getGraphSession() { + return null; + } + + /** {@inheritDoc} */ + @Override + public EagerSession getEagerSession() { + return this.session; + } + + /** {@inheritDoc} */ + @Override + public void evaluate(double expected, Operand input) { + DataType dtype = input.asOutput().dataType(); + if (dtype == TFloat32.DTYPE) { + Operand o = (Operand) input; + AtomicInteger index = new AtomicInteger(); + if (debug) { + o.data() + .scalars() + .forEach( + f -> { + System.out.printf("%d). %f\n", index.getAndIncrement(), f.getFloat()); + }); + } + index.set(0); + o.data() + .scalars() + .forEach( + f -> { + assertEquals(expected, f.getFloat(), epsilon); + }); + } else if (dtype == TFloat64.DTYPE) { + Operand o = (Operand) input; + AtomicInteger index = new AtomicInteger(); + if (debug) { + o.data() + .scalars() + .forEach( + f -> { + System.out.printf("%d). %f\n", index.getAndIncrement(), f.getDouble()); + }); + } + index.set(0); + o.data() + .scalars() + .forEach( + f -> { + assertEquals((double) expected, f.getDouble(), epsilon); + }); + } else if (dtype == TInt32.DTYPE) { + Operand o = (Operand) input; + AtomicInteger index = new AtomicInteger(); + if (debug) { + o.data() + .scalars() + .forEach( + f -> { + System.out.printf("%d). %d\n", index.getAndIncrement(), f.getInt()); + }); + } + index.set(0); + o.data() + .scalars() + .forEach( + f -> { + assertEquals((int) expected, f.getInt()); + }); + } else if (dtype == TInt64.DTYPE) { + Operand o = (Operand) input; + AtomicInteger index = new AtomicInteger(); + if (debug) { + o.data() + .scalars() + .forEach( + f -> { + System.out.printf("%d). %d\n", index.getAndIncrement(), f.getLong()); + }); + } + index.set(0); + o.data() + .scalars() + .forEach( + f -> { + assertEquals((long) expected, f.getLong()); + }); + } + } + + /** {@inheritDoc} */ + @Override + public void evaluate(Number[] expected, Output input) { + int size = input.shape().size() == 0 ? 1 : (int) input.shape().size(); + assertEquals( + expected.length, + size, + () -> String.format("expected length (%d) != to input length (%d)", expected.length, size)); + DataType dtype = input.dataType(); + if (dtype == TFloat32.DTYPE) { + Output o = (Output) input; + AtomicInteger index = new AtomicInteger(); + if (debug) { + o.data() + .scalars() + .forEach( + f -> { + System.out.printf("%d). %f\n", index.getAndIncrement(), f.getFloat()); + }); + } + index.set(0); + o.data() + .scalars() + .forEach( + f -> { + assertEquals(expected[index.getAndIncrement()].floatValue(), f.getFloat(), epsilon); + }); + } else if (dtype == TFloat64.DTYPE) { + Output o = (Output) input; + AtomicInteger index = new AtomicInteger(); + if (debug) { + o.data() + .scalars() + .forEach( + f -> { + System.out.printf("%d). %f\n", index.getAndIncrement(), f.getDouble()); + }); + } + index.set(0); + o.data() + .scalars() + .forEach( + f -> { + assertEquals( + expected[index.getAndIncrement()].doubleValue(), f.getDouble(), epsilon); + }); + } else if (dtype == TInt32.DTYPE) { + Output o = (Output) input; + AtomicInteger index = new AtomicInteger(); + if (debug) { + o.data() + .scalars() + .forEach( + f -> { + System.out.printf("%d). %d\n", index.getAndIncrement(), f.getInt()); + }); + } + index.set(0); + o.data() + .scalars() + .forEach( + f -> { + assertEquals(expected[index.getAndIncrement()].intValue(), f.getInt()); + }); + } else if (dtype == TInt64.DTYPE) { + Output o = (Output) input; + AtomicInteger index = new AtomicInteger(); + if (debug) { + o.data() + .scalars() + .forEach( + f -> { + System.out.printf("%d). %d\n", index.getAndIncrement(), f.getLong()); + }); + } + index.set(0); + o.data() + .scalars() + .forEach( + f -> { + assertEquals(expected[index.getAndIncrement()].longValue(), f.getLong()); + }); + } + } + + /** {@inheritDoc} */ + @Override + public void evaluate(FloatNdArray expected, Output input) { + DataType dtype = input.dataType(); + if (dtype == TFloat32.DTYPE) { + Output o = (Output) input; + AtomicLong index = new AtomicLong(); + if (debug) { + o.data() + .scalars() + .forEach( + f -> { + System.out.printf("%d). %f\n", index.getAndIncrement(), f.getFloat()); + }); + } + index.set(0); + o.data() + .scalars() + .forEach( + f -> { + assertEquals(expected.getFloat(index.getAndIncrement()), f.getFloat(), epsilon); + }); + } else if (dtype == TFloat64.DTYPE) { + Output o = (Output) input; + AtomicInteger index = new AtomicInteger(); + if (debug) { + o.data() + .scalars() + .forEach( + f -> { + System.out.printf("%d). %f\n", index.getAndIncrement(), f.getDouble()); + }); + } + index.set(0); + o.data() + .scalars() + .forEach( + f -> { + assertEquals( + (double) expected.getFloat(index.getAndIncrement()), f.getDouble(), epsilon); + }); + } else if (dtype == TInt32.DTYPE) { + Output o = (Output) input; + AtomicInteger index = new AtomicInteger(); + if (debug) { + o.data() + .scalars() + .forEach( + f -> { + System.out.printf("%d). %d\n", index.getAndIncrement(), f.getInt()); + }); + } + index.set(0); + o.data() + .scalars() + .forEach( + f -> { + assertEquals((int) expected.getFloat(index.getAndIncrement()), f.getInt()); + }); + } else if (dtype == TInt64.DTYPE) { + Output o = (Output) input; + AtomicInteger index = new AtomicInteger(); + if (debug) { + o.data() + .scalars() + .forEach( + f -> { + System.out.printf("%d). %d\n", index.getAndIncrement(), f.getLong()); + }); + } + index.set(0); + o.data() + .scalars() + .forEach( + f -> { + assertEquals((long) expected.getFloat(index.getAndIncrement()), f.getLong()); + }); + } + } + + /** {@inheritDoc} */ + @Override + public void evaluate(Output input, Predicate predicate) { + AtomicInteger index = new AtomicInteger(); + DataType dtype = input.asOutput().dataType(); + boolean isScalar = input.shape().equals(Shape.scalar()); + if (dtype == TFloat32.DTYPE) { + Output o = (Output) input; + if (debug) { + if (isScalar) { + System.out.printf( + "0). %b <==> %f\n", predicate.test(o.data().getFloat()), o.data().getFloat()); + } else { + o.data() + .scalars() + .forEachIndexed( + (idx, f) -> { + System.out.printf( + "%d). %b <==> %f\n", + index.getAndIncrement(), predicate.test(f.getFloat()), f.getFloat()); + }); + } + } + index.set(0); + if (isScalar) { + assertTrue(predicate.test(o.data().getFloat())); + } else { + o.data() + .scalars() + .forEachIndexed( + (idx, f) -> { + assertTrue(predicate.test(o.data().getFloat())); + }); + } + } else if (dtype == TFloat64.DTYPE) { + Output o = (Output) input; + if (debug) { + if (isScalar) { + System.out.printf( + "0). %b <==> %f\n", predicate.test(o.data().getDouble()), o.data().getDouble()); + } else { + o.data() + .scalars() + .forEachIndexed( + (idx, f) -> { + System.out.printf( + "%d). %b <==> %f\n", + index.getAndIncrement(), predicate.test(f.getDouble()), f.getDouble()); + }); + } + } + index.set(0); + if (isScalar) { + assertTrue(predicate.test(o.data().getDouble())); + } else { + o.data() + .scalars() + .forEachIndexed( + (idx, f) -> { + assertTrue(predicate.test(o.data().getDouble())); + }); + } + } else if (dtype == TInt32.DTYPE) { + Output o = (Output) input; + if (debug) { + if (isScalar) { + System.out.printf( + "0). %b <==> %d\n", predicate.test(o.data().getInt()), o.data().getInt()); + } else { + o.data() + .scalars() + .forEachIndexed( + (idx, f) -> { + System.out.printf( + "%d). %b <==> %d\n", + index.getAndIncrement(), predicate.test(f.getInt()), f.getInt()); + }); + } + } + index.set(0); + if (isScalar) { + assertTrue(predicate.test(o.data().getInt())); + } else { + o.data() + .scalars() + .forEachIndexed( + (idx, f) -> { + assertTrue(predicate.test(o.data().getInt())); + }); + } + } else if (dtype == TInt64.DTYPE) { + Output o = (Output) input; + if (debug) { + if (isScalar) { + System.out.printf( + "0). %b <==> %d\n", predicate.test(o.data().getLong()), o.data().getLong()); + } else { + o.data() + .scalars() + .forEachIndexed( + (idx, f) -> { + System.out.printf( + "%d). %b <==> %d\n", + index.getAndIncrement(), predicate.test(f.getLong()), f.getLong()); + }); + } + } + index.set(0); + if (isScalar) { + assertTrue(predicate.test(o.data().getLong())); + } else { + o.data() + .scalars() + .forEachIndexed( + (idx, f) -> { + assertTrue(predicate.test(o.data().getLong())); + }); + } + } else { + fail("Unexpected DataType: " + dtype); + } + } + + /** {@inheritDoc} */ + @Override + public void evaluate(String[] expected, Output input) { + int size = input.shape().size() == 0 ? 1 : (int) input.shape().size(); + assertEquals( + expected.length, + size, + () -> String.format("expected length (%d) != to input length (%d)", expected.length, size)); + AtomicInteger index = new AtomicInteger(); + if (debug) { + input + .data() + .scalars() + .forEach( + f -> { + System.out.printf("%d). %s\n", index.getAndIncrement(), f.getObject()); + }); + } + index.set(0); + input + .data() + .scalars() + .forEach( + f -> { + assertEquals(expected[index.getAndIncrement()], f.getObject()); + }); + } + + /** {@inheritDoc} */ + @Override + public void evaluate(Boolean[] expected, Output input) { + int size = input.shape().size() == 0 ? 1 : (int) input.shape().size(); + assertEquals( + expected.length, + size, + () -> String.format("expected size (%d) != to input length (%d)", expected.length, size)); + AtomicInteger index = new AtomicInteger(); + if (debug) { + input + .data() + .scalars() + .forEach( + f -> { + System.out.printf("%d). %b\n", index.getAndIncrement(), f.getBoolean()); + }); + } + index.set(0); + input + .data() + .scalars() + .forEach( + f -> { + assertEquals(expected[index.getAndIncrement()], f.getBoolean()); + }); + } + + /** {@inheritDoc} */ + @Override + public void evaluate(Output expected, Output input) { + assert input.shape().equals(expected.shape()) + : String.format( + "expected shape (%s) != to input shape (%ds)", + expected.shape().toString(), input.shape().toString()); + DataType dtype = input.asOutput().dataType(); + boolean isScalar = input.shape().equals(Shape.scalar()); + if (dtype == TFloat32.DTYPE) { + Output x = (Output) expected; + Output o = (Output) input; + AtomicInteger index = new AtomicInteger(); + if (debug) { + if (isScalar) { + System.out.printf("0). %f <==> %f\n", x.data().getFloat(), o.data().getFloat()); + } else { + o.data() + .scalars() + .forEachIndexed( + (idx, f) -> { + System.out.printf( + "%d). %f <==> %f\n", + index.getAndIncrement(), x.data().getFloat(idx), f.getFloat()); + }); + } + } + index.set(0); + if (isScalar) { + assertEquals(x.data().getFloat(), o.data().getFloat(), epsilon); + } else { + o.data() + .scalars() + .forEachIndexed( + (idx, f) -> assertEquals(x.data().getFloat(idx), f.getFloat(), epsilon)); + } + } else if (dtype == TFloat64.DTYPE) { + Output x = (Output) expected; + Output o = (Output) input; + AtomicInteger index = new AtomicInteger(); + if (debug) { + if (isScalar) { + System.out.printf("0). %f <==> %f\n", x.data().getDouble(), o.data().getDouble()); + } else { + o.data() + .scalars() + .forEachIndexed( + (idx, f) -> { + System.out.printf( + "%d). %f <==> %f\n", + index.getAndIncrement(), x.data().getDouble(idx), f.getDouble()); + }); + } + } + index.set(0); + if (isScalar) { + assertEquals(x.data().getDouble(), o.data().getDouble(), epsilon); + } else { + o.data() + .scalars() + .forEachIndexed( + (idx, f) -> assertEquals(x.data().getDouble(idx), f.getDouble(), epsilon)); + } + } else if (dtype == TInt32.DTYPE) { + Output x = (Output) expected; + Output o = (Output) input; + AtomicInteger index = new AtomicInteger(); + if (debug) { + if (isScalar) { + System.out.printf("0). %d <==> %d\n", x.data().getInt(), o.data().getInt()); + } else { + o.data() + .scalars() + .forEachIndexed( + (idx, f) -> { + System.out.printf( + "%d). %d <==> %d\n", + index.getAndIncrement(), x.data().getInt(idx), f.getInt()); + }); + } + } + index.set(0); + if (isScalar) { + assertEquals(x.data().getInt(), o.data().getInt()); + } else { + o.data() + .scalars() + .forEachIndexed((idx, f) -> assertEquals(x.data().getInt(idx), f.getInt())); + } + } else if (dtype == TInt64.DTYPE) { + Output x = (Output) expected; + Output o = (Output) input; + AtomicInteger index = new AtomicInteger(); + if (debug) { + if (isScalar) { + System.out.printf("0). %d <==> %d\n", x.data().getLong(), o.data().getLong()); + } else { + o.data() + .scalars() + .forEachIndexed( + (idx, f) -> { + System.out.printf( + "%d). %d <==> %d\n", + index.getAndIncrement(), x.data().getLong(idx), f.getLong()); + }); + } + } + index.set(0); + if (isScalar) { + assertEquals(x.data().getLong(), o.data().getLong()); + } else { + o.data() + .scalars() + .forEachIndexed((idx, f) -> assertEquals(x.data().getLong(idx), f.getLong())); + } + } else if (dtype == TString.DTYPE) { + Output x = (Output) expected; + Output o = (Output) input; + AtomicInteger index = new AtomicInteger(); + if (debug) { + if (isScalar) { + System.out.printf("0). %s <==> %s\n", x.data().getObject(), o.data().getObject()); + } else { + o.data() + .scalars() + .forEachIndexed( + (idx, f) -> { + System.out.printf( + "%d). %s <==> %s\n", + index.getAndIncrement(), x.data().getObject(idx), f.getObject()); + }); + } + } + index.set(0); + if (isScalar) { + assertEquals(x.data().getObject(), o.data().getObject()); + } else { + o.data() + .scalars() + .forEachIndexed((idx, f) -> assertEquals(x.data().getObject(idx), f.getObject())); + } + } else if (dtype == TBool.DTYPE) { + Output x = (Output) expected; + Output o = (Output) input; + AtomicInteger index = new AtomicInteger(); + if (debug) { + if (isScalar) { + System.out.printf("0). %b <==> %b\n", x.data().getBoolean(), o.data().getBoolean()); + } else { + o.data() + .scalars() + .forEachIndexed( + (idx, f) -> { + System.out.printf( + "%d). %b <==> %b\n", + index.getAndIncrement(), x.data().getBoolean(idx), f.getBoolean()); + }); + } + } + index.set(0); + if (isScalar) { + assertEquals(x.data().getBoolean(), o.data().getBoolean()); + } else { + o.data() + .scalars() + .forEachIndexed((idx, f) -> assertEquals(x.data().getBoolean(idx), f.getBoolean())); + } + } + } + + /** {@inheritDoc} */ + @Override + public void print(PrintWriter writer, Output input) { + DataType dtype = input.asOutput().dataType(); + if (dtype == TFloat32.DTYPE) { + Output o = (Output) input; + AtomicInteger index = new AtomicInteger(); + o.data() + .scalars() + .forEach( + f -> { + System.out.printf("%d). %f\n", index.getAndIncrement(), f.getFloat()); + }); + } else if (dtype == TFloat64.DTYPE) { + Output o = (Output) input; + AtomicInteger index = new AtomicInteger(); + o.data() + .scalars() + .forEach( + f -> { + System.out.printf("%d). %f\n", index.getAndIncrement(), f.getDouble()); + }); + } else if (dtype == TInt32.DTYPE) { + Output o = (Output) input; + AtomicInteger index = new AtomicInteger(); + o.data() + .scalars() + .forEach( + f -> { + System.out.printf("%d). %d\n", index.getAndIncrement(), f.getInt()); + }); + } else if (dtype == TInt64.DTYPE) { + Output o = (Output) input; + AtomicInteger index = new AtomicInteger(); + o.data() + .scalars() + .forEach( + f -> { + System.out.printf("%d). %d\n", index.getAndIncrement(), f.getLong()); + }); + } else if (dtype == TString.DTYPE) { + Output o = (Output) input; + AtomicInteger index = new AtomicInteger(); + o.data() + .scalars() + .forEach( + f -> { + System.out.printf("%d). %s\n", index.getAndIncrement(), f.getObject()); + }); + } else if (dtype == TBool.DTYPE) { + Output o = (Output) input; + AtomicInteger index = new AtomicInteger(); + o.data() + .scalars() + .forEach( + f -> { + System.out.printf("%d). %b\n", index.getAndIncrement(), f.getBoolean()); + }); + } else { + writer.println("Unexpected DataType: " + dtype); + } + writer.flush(); + } +} diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/utils/GraphTestSession.java b/tensorflow-keras/src/test/java/org/tensorflow/keras/utils/GraphTestSession.java new file mode 100644 index 00000000000..1a22289f4bf --- /dev/null +++ b/tensorflow-keras/src/test/java/org/tensorflow/keras/utils/GraphTestSession.java @@ -0,0 +1,1066 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.utils; + +import java.io.PrintWriter; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicLong; +import java.util.function.Predicate; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; +import org.tensorflow.DataType; +import org.tensorflow.EagerSession; +import org.tensorflow.Graph; +import org.tensorflow.Operand; +import org.tensorflow.Output; +import org.tensorflow.Session; +import org.tensorflow.Tensor; +import org.tensorflow.ndarray.FloatNdArray; +import org.tensorflow.ndarray.Shape; +import org.tensorflow.op.Op; +import org.tensorflow.op.Ops; +import org.tensorflow.types.TBool; +import org.tensorflow.types.TFloat32; +import org.tensorflow.types.TFloat64; +import org.tensorflow.types.TInt32; +import org.tensorflow.types.TInt64; +import org.tensorflow.types.TString; +import org.tensorflow.types.family.TNumber; +import org.tensorflow.types.family.TType; + +/** Graph Mode Test Session */ +public class GraphTestSession extends TestSession { + + private final Graph graph; + private final Session session; + private final Ops tf; + + /** Create a Graph mode test session. */ + public GraphTestSession() { + graph = new Graph(); + session = new Session(graph); + tf = Ops.create(graph).withName("test"); + } + + /** {@inheritDoc} */ + @Override + public Ops getTF() { + return tf; + } + + /** Get the Graph object that is represented by this Test Session */ + public Graph getGraph() { + return graph; + } + + + /** + * Get the TensorFlow Session instance + * @return the TensorFlow Session instance + */ + public Session getSession() { + return session; + } + + /** {@inheritDoc} */ + @Override + public void close() { + session.close(); + graph.close(); + } + + /** {@inheritDoc} */ + @Override + public boolean isEager() { + return false; + } + + /** {@inheritDoc} */ + @Override + public Session getGraphSession() { + return this.session; + } + + /** {@inheritDoc} */ + @Override + public EagerSession getEagerSession() { + return null; + } + + /** {@inheritDoc} */ + @Override + public void initialize() { + graph + .initializers() + .forEach( + initializer -> { + session.runner().addTarget(initializer).run(); + }); + } + + /** {@inheritDoc} */ + @Override + public void run(Op op) { + session.run(op); + } + + /** {@inheritDoc} */ + @Override + public void evaluate(double expected, Operand input) { + DataType dtype = input.asOutput().dataType(); + if (dtype == TFloat32.DTYPE) { + AtomicInteger index = new AtomicInteger(); + if (debug) { + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TFloat32.DTYPE)) { + result + .data() + .scalars() + .forEach( + f -> { + System.out.printf("%d). %f\n", index.getAndIncrement(), f.getFloat()); + }); + } + } + index.set(0); + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TFloat32.DTYPE)) { + result + .data() + .scalars() + .forEach( + f -> { + assertEquals((float) expected, f.getFloat(), epsilon); + }); + } + } else if (dtype == TFloat64.DTYPE) { + AtomicInteger index = new AtomicInteger(); + if (debug) { + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TFloat64.DTYPE)) { + result + .data() + .scalars() + .forEach( + f -> { + System.out.printf("%d). %f\n", index.getAndIncrement(), f.getDouble()); + }); + } + } + index.set(0); + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TFloat64.DTYPE)) { + result + .data() + .scalars() + .forEach( + f -> { + assertEquals(expected, f.getDouble(), epsilon); + }); + } + } else if (dtype == TInt32.DTYPE) { + AtomicInteger index = new AtomicInteger(); + if (debug) { + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt32.DTYPE)) { + result + .data() + .scalars() + .forEach( + f -> { + System.out.printf("%d). %d\n", index.getAndIncrement(), f.getInt()); + }); + } + } + index.set(0); + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt32.DTYPE)) { + result + .data() + .scalars() + .forEach( + f -> { + assertEquals((int) expected, f.getInt()); + }); + } + } else if (dtype == TInt64.DTYPE) { + Output o = (Output) input; + AtomicInteger index = new AtomicInteger(); + if (debug) { + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt64.DTYPE)) { + result + .data() + .scalars() + .forEach( + f -> { + System.out.printf("%d). %d\n", index.getAndIncrement(), f.getLong()); + }); + } + } + index.set(0); + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt64.DTYPE)) { + result + .data() + .scalars() + .forEach( + f -> { + assertEquals((long) expected, f.getLong()); + }); + } + } else { + fail("Unexpected DataType: " + dtype); + } + } + + /** {@inheritDoc} */ + @Override + public void evaluate(Number[] expected, Output input) { + int size = input.shape().size() == 0 ? 1 : (int) input.shape().size(); + assertEquals( + expected.length, + size, + () -> String.format("expected length (%d) != to input length (%d)", expected.length, size)); + DataType dtype = input.asOutput().dataType(); + if (dtype == TFloat32.DTYPE) { + AtomicInteger index = new AtomicInteger(); + if (debug) { + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TFloat32.DTYPE)) { + result + .data() + .scalars() + .forEach( + f -> { + System.out.printf("%d). %f\n", index.getAndIncrement(), f.getFloat()); + }); + } + } + index.set(0); + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TFloat32.DTYPE)) { + result + .data() + .scalars() + .forEach( + f -> { + assertEquals( + expected[index.getAndIncrement()].floatValue(), f.getFloat(), epsilon); + }); + } + } else if (dtype == TFloat64.DTYPE) { + AtomicInteger index = new AtomicInteger(); + if (debug) { + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TFloat64.DTYPE)) { + result + .data() + .scalars() + .forEach( + f -> { + System.out.printf("%d). %f\n", index.getAndIncrement(), f.getDouble()); + }); + } + } + index.set(0); + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TFloat64.DTYPE)) { + result + .data() + .scalars() + .forEach( + f -> { + assertEquals( + expected[index.getAndIncrement()].doubleValue(), f.getDouble(), epsilon); + }); + } + } else if (dtype == TInt32.DTYPE) { + AtomicInteger index = new AtomicInteger(); + if (debug) { + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt32.DTYPE)) { + result + .data() + .scalars() + .forEach( + f -> { + System.out.printf("%d). %d\n", index.getAndIncrement(), f.getInt()); + }); + } + } + index.set(0); + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt32.DTYPE)) { + result + .data() + .scalars() + .forEach( + f -> { + assertEquals(expected[index.getAndIncrement()].intValue(), f.getInt()); + }); + } + } else if (dtype == TInt64.DTYPE) { + Output o = (Output) input; + AtomicInteger index = new AtomicInteger(); + if (debug) { + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt64.DTYPE)) { + result + .data() + .scalars() + .forEach( + f -> { + System.out.printf("%d). %d\n", index.getAndIncrement(), f.getLong()); + }); + } + } + index.set(0); + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt64.DTYPE)) { + result + .data() + .scalars() + .forEach( + f -> { + assertEquals(expected[index.getAndIncrement()].longValue(), f.getLong()); + }); + } + } else { + fail("Unexpected DataType: " + dtype); + } + } + + /** {@inheritDoc} */ + @Override + public void evaluate(FloatNdArray expected, Output input) { + DataType dtype = input.asOutput().dataType(); + if (dtype == TFloat32.DTYPE) { + AtomicLong index = new AtomicLong(); + if (debug) { + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TFloat32.DTYPE)) { + result + .data() + .scalars() + .forEach( + f -> { + System.out.printf("%d). %f\n", index.getAndIncrement(), f.getFloat()); + }); + } + } + index.set(0); + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TFloat32.DTYPE)) { + result + .data() + .scalars() + .forEach( + f -> { + assertEquals(expected.getFloat(index.getAndIncrement()), f.getFloat(), epsilon); + }); + } + } else if (dtype == TFloat64.DTYPE) { + AtomicInteger index = new AtomicInteger(); + if (debug) { + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TFloat64.DTYPE)) { + result + .data() + .scalars() + .forEach( + f -> { + System.out.printf("%d). %f\n", index.getAndIncrement(), f.getDouble()); + }); + } + } + index.set(0); + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TFloat64.DTYPE)) { + result + .data() + .scalars() + .forEach( + f -> { + assertEquals( + (double) expected.getFloat(index.getAndIncrement()), f.getDouble(), epsilon); + }); + } + } else if (dtype == TInt32.DTYPE) { + AtomicInteger index = new AtomicInteger(); + if (debug) { + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt32.DTYPE)) { + result + .data() + .scalars() + .forEach( + f -> { + System.out.printf("%d). %d\n", index.getAndIncrement(), f.getInt()); + }); + } + } + index.set(0); + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt32.DTYPE)) { + result + .data() + .scalars() + .forEach( + f -> { + assertEquals((int) expected.getFloat(index.getAndIncrement()), f.getInt()); + }); + } + } else if (dtype == TInt64.DTYPE) { + Output o = (Output) input; + AtomicInteger index = new AtomicInteger(); + if (debug) { + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt64.DTYPE)) { + result + .data() + .scalars() + .forEach( + f -> { + System.out.printf("%d). %d\n", index.getAndIncrement(), f.getLong()); + }); + } + } + index.set(0); + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt64.DTYPE)) { + result + .data() + .scalars() + .forEach( + f -> { + assertEquals((long) expected.getFloat(index.getAndIncrement()), f.getLong()); + }); + } + } else { + fail("Unexpected DataType: " + dtype); + } + } + + /** {@inheritDoc} */ + @Override + public void evaluate(String[] expected, Output input) { + int size = input.shape().size() == 0 ? 1 : (int) input.shape().size(); + assertEquals( + expected.length, + size, + () -> String.format("expected length (%d) != to input length (%d)", expected.length, size)); + AtomicInteger index = new AtomicInteger(); + if (debug) { + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TString.DTYPE)) { + result + .data() + .scalars() + .forEach( + f -> { + System.out.printf("%d). %s\n", index.getAndIncrement(), f.getObject()); + }); + } + } + index.set(0); + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TString.DTYPE)) { + result + .data() + .scalars() + .forEach( + f -> { + assertEquals(expected[index.getAndIncrement()], f.getObject()); + }); + } + } + + /** {@inheritDoc} */ + @Override + public void evaluate(Boolean[] expected, Output input) { + int size = input.shape().size() == 0 ? 1 : (int) input.shape().size(); + assertEquals( + expected.length, + size, + () -> String.format("expected length (%d) != to input length (%d)", expected.length, size)); + AtomicInteger index = new AtomicInteger(); + if (debug) { + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TBool.DTYPE)) { + result + .data() + .scalars() + .forEach( + f -> { + System.out.printf("%d). %b\n", index.getAndIncrement(), f.getObject()); + }); + } + } + index.set(0); + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TBool.DTYPE)) { + result + .data() + .scalars() + .forEach( + f -> { + assertEquals(expected[index.getAndIncrement()], f.getObject()); + }); + } + } + + /** {@inheritDoc} */ + @Override + public void evaluate(Output expected, Output input) { + assert input.shape().equals(expected.shape()) + : String.format( + "expected shape (%s) != to input shape (%ds)", + expected.shape().toString(), input.shape().toString()); + AtomicInteger index = new AtomicInteger(); + DataType dtype = input.asOutput().dataType(); + boolean isScalar = input.shape().equals(Shape.scalar()); + if (dtype == TFloat32.DTYPE) { + final Output finalExpected = (Output) expected; + if (debug) { + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TFloat32.DTYPE); + Tensor expectedResult = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TFloat32.DTYPE)) { + if (isScalar) { + System.out.printf( + "0). %f <==> %f\n", expectedResult.data().getFloat(), result.data().getFloat()); + } else { + result + .data() + .scalars() + .forEachIndexed( + (idx, f) -> { + System.out.printf( + "%d). %f <==> %f\n", + index.getAndIncrement(), + finalExpected.data().getFloat(idx), + f.getFloat()); + }); + } + } + } + index.set(0); + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TFloat32.DTYPE); + Tensor expectedResult = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TFloat32.DTYPE)) { + if (isScalar) { + assertEquals(expectedResult.data().getFloat(), result.data().getFloat(), epsilon); + } else { + result + .data() + .scalars() + .forEachIndexed( + (idx, f) -> { + assertEquals(expectedResult.data().getFloat(idx), f.getFloat(), epsilon); + }); + } + } + } else if (dtype == TFloat64.DTYPE) { + final Output finalExpected = (Output) expected; + if (debug) { + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TFloat64.DTYPE); + Tensor expectedResult = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TFloat64.DTYPE)) { + if (isScalar) { + System.out.printf( + "0). %f <==> %f\n", expectedResult.data().getDouble(), result.data().getDouble()); + } else { + result + .data() + .scalars() + .forEachIndexed( + (idx, f) -> { + System.out.printf( + "%d). %f <==> %f\n", + index.getAndIncrement(), + finalExpected.data().getDouble(idx), + f.getDouble()); + }); + } + } + } + index.set(0); + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TFloat64.DTYPE); + Tensor expectedResult = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TFloat64.DTYPE)) { + if (isScalar) { + assertEquals(expectedResult.data().getDouble(), result.data().getDouble(), epsilon); + } else { + result + .data() + .scalars() + .forEachIndexed( + (idx, f) -> { + assertEquals(expectedResult.data().getDouble(idx), f.getDouble(), epsilon); + }); + } + } + } else if (dtype == TInt32.DTYPE) { + final Output finalExpected = (Output) expected; + if (debug) { + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt32.DTYPE); + Tensor expectedResult = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt32.DTYPE)) { + if (isScalar) { + System.out.printf( + "0). %d <==> %d\n", expectedResult.data().getInt(), result.data().getInt()); + } else { + result + .data() + .scalars() + .forEachIndexed( + (idx, f) -> { + System.out.printf( + "%d). %d <==> %d\n", + index.getAndIncrement(), finalExpected.data().getInt(idx), f.getInt()); + }); + } + } + } + index.set(0); + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt32.DTYPE); + Tensor expectedResult = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt32.DTYPE)) { + if (isScalar) { + assertEquals(expectedResult.data().getInt(), result.data().getInt(), epsilon); + } else { + result + .data() + .scalars() + .forEachIndexed( + (idx, f) -> { + assertEquals(expectedResult.data().getInt(idx), f.getInt(), epsilon); + }); + } + } + } else if (dtype == TInt64.DTYPE) { + final Output finalExpected = (Output) expected; + if (debug) { + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt64.DTYPE); + Tensor expectedResult = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt64.DTYPE)) { + if (isScalar) { + System.out.printf( + "0). %d <==> %d\n", expectedResult.data().getLong(), result.data().getLong()); + } else { + result + .data() + .scalars() + .forEachIndexed( + (idx, f) -> { + System.out.printf( + "%d). %d <==> %d\n", + index.getAndIncrement(), finalExpected.data().getLong(idx), f.getLong()); + }); + } + } + } + index.set(0); + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt64.DTYPE); + Tensor expectedResult = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt64.DTYPE)) { + if (isScalar) { + assertEquals(expectedResult.data().getLong(), result.data().getLong(), epsilon); + } else { + result + .data() + .scalars() + .forEachIndexed( + (idx, f) -> { + assertEquals(expectedResult.data().getLong(idx), f.getLong(), epsilon); + }); + } + } + } else if (dtype == TBool.DTYPE) { + final Output finalExpected = (Output) expected; + if (debug) { + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TBool.DTYPE); + Tensor expectedResult = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TBool.DTYPE)) { + if (isScalar) { + System.out.printf( + "0). %b <==> %b\n", expectedResult.data().getBoolean(), result.data().getBoolean()); + } else { + result + .data() + .scalars() + .forEachIndexed( + (idx, f) -> { + System.out.printf( + "%d). %b <==> %b\n", + index.getAndIncrement(), + finalExpected.data().getBoolean(idx), + f.getBoolean()); + }); + } + } + } + index.set(0); + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TBool.DTYPE); + Tensor expectedResult = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TBool.DTYPE)) { + if (isScalar) { + assertEquals(expectedResult.data().getBoolean(), result.data().getBoolean()); + } else { + result + .data() + .scalars() + .forEachIndexed( + (idx, f) -> { + assertEquals(expectedResult.data().getBoolean(idx), f.getBoolean()); + }); + } + } + } else if (dtype == TString.DTYPE) { + final Output finalExpected = (Output) expected; + if (debug) { + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TString.DTYPE); + Tensor expectedResult = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TString.DTYPE)) { + if (isScalar) { + System.out.printf( + "0). %s <==> %s\n", expectedResult.data().getObject(), result.data().getObject()); + } else { + result + .data() + .scalars() + .forEachIndexed( + (idx, f) -> { + System.out.printf( + "%d). %s <==> %s\n", + index.getAndIncrement(), + finalExpected.data().getObject(idx), + f.getObject()); + }); + } + } + } + index.set(0); + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TString.DTYPE); + Tensor expectedResult = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TString.DTYPE)) { + if (isScalar) { + assertEquals(expectedResult.data().getObject(), result.data().getObject()); + } else { + result + .data() + .scalars() + .forEachIndexed( + (idx, f) -> { + assertEquals(expectedResult.data().getObject(idx), f.getObject()); + }); + } + } + } else { + fail("Unexpected DataType: " + dtype); + } + } + + /** {@inheritDoc} */ + @Override + public void evaluate(Output input, Predicate predicate) { + AtomicInteger index = new AtomicInteger(); + DataType dtype = input.asOutput().dataType(); + boolean isScalar = input.shape().equals(Shape.scalar()); + if (dtype == TFloat32.DTYPE) { + if (debug) { + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TFloat32.DTYPE)) { + if (isScalar) { + System.out.printf( + "0). %b <==> %f\n", + predicate.test(result.data().getFloat()), result.data().getFloat()); + } else { + result + .data() + .scalars() + .forEachIndexed( + (idx, f) -> { + System.out.printf( + "%d). %b <==> %f\n", + index.getAndIncrement(), predicate.test(f.getFloat()), f.getFloat()); + }); + } + } + } + index.set(0); + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TFloat32.DTYPE)) { + if (isScalar) { + assertTrue(predicate.test(result.data().getFloat())); + } else { + result + .data() + .scalars() + .forEachIndexed( + (idx, f) -> { + assertTrue(predicate.test(result.data().getFloat())); + }); + } + } + } else if (dtype == TFloat64.DTYPE) { + if (debug) { + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TFloat64.DTYPE)) { + if (isScalar) { + System.out.printf( + "0). %b <==> %f\n", + predicate.test(result.data().getDouble()), result.data().getDouble()); + } else { + result + .data() + .scalars() + .forEachIndexed( + (idx, f) -> { + System.out.printf( + "%d). %b <==> %f\n", + index.getAndIncrement(), predicate.test(f.getDouble()), f.getDouble()); + }); + } + } + } + index.set(0); + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TFloat64.DTYPE); + Tensor expectedResult = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TFloat64.DTYPE)) { + if (isScalar) { + assertTrue(predicate.test(result.data().getDouble())); + } else { + result + .data() + .scalars() + .forEachIndexed( + (idx, f) -> { + assertTrue(predicate.test(result.data().getDouble())); + }); + } + } + } else if (dtype == TInt32.DTYPE) { + if (debug) { + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt32.DTYPE)) { + if (isScalar) { + System.out.printf( + "0). %b <==> %d\n", predicate.test(result.data().getInt()), result.data().getInt()); + } else { + result + .data() + .scalars() + .forEachIndexed( + (idx, f) -> { + System.out.printf( + "%d). %b <==> %d\n", + index.getAndIncrement(), predicate.test(f.getInt()), f.getInt()); + }); + } + } + } + index.set(0); + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt32.DTYPE); + Tensor expectedResult = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt32.DTYPE)) { + if (isScalar) { + assertTrue(predicate.test(result.data().getInt())); + } else { + result + .data() + .scalars() + .forEachIndexed( + (idx, f) -> { + assertTrue(predicate.test(result.data().getInt())); + }); + } + } + } else if (dtype == TInt64.DTYPE) { + if (debug) { + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt64.DTYPE)) { + if (isScalar) { + System.out.printf( + "0). %b <==> %d\n", + predicate.test(result.data().getLong()), result.data().getLong()); + } else { + result + .data() + .scalars() + .forEachIndexed( + (idx, f) -> { + System.out.printf( + "%d). %b <==> %d\n", + index.getAndIncrement(), predicate.test(f.getLong()), f.getLong()); + }); + } + } + } + index.set(0); + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt64.DTYPE); + Tensor expectedResult = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt64.DTYPE)) { + if (isScalar) { + assertTrue(predicate.test(result.data().getLong())); + } else { + result + .data() + .scalars() + .forEachIndexed( + (idx, f) -> { + assertTrue(predicate.test(result.data().getLong())); + }); + } + } + } else { + fail("Unexpected DataType: " + dtype); + } + } + + /** {@inheritDoc} */ + @Override + public void print(PrintWriter writer, Output input) { + boolean isScalar = input.asOutput().shape().size() == 1; + + DataType dtype = input.dataType(); + if (dtype == TFloat32.DTYPE) { + AtomicInteger index = new AtomicInteger(); + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TFloat32.DTYPE)) { + if (isScalar) { + writer.printf("%d). %f\n", index.getAndIncrement(), result.data().getFloat()); + } else { + result + .data() + .scalars() + .forEachIndexed( + (idx, f) -> { + writer.printf("%d). %f\n", index.getAndIncrement(), f.getFloat()); + }); + } + } + } else if (dtype == TFloat64.DTYPE) { + AtomicInteger index = new AtomicInteger(); + + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TFloat64.DTYPE)) { + if (isScalar) { + writer.printf( + "%d). %f\n", index.getAndIncrement(), ((Output) input).data().getDouble()); + } else { + result + .data() + .scalars() + .forEachIndexed( + (idx, f) -> { + writer.printf("%d). %f\n", index.getAndIncrement(), f.getDouble()); + }); + } + } + } else if (dtype == TInt32.DTYPE) { + AtomicInteger index = new AtomicInteger(); + + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt32.DTYPE)) { + if (isScalar) { + writer.printf( + "%d). %f\n", index.getAndIncrement(), ((Output) input).data().getInt()); + } else { + result + .data() + .scalars() + .forEachIndexed( + (idx, f) -> { + writer.printf("%d). %d\n", index.getAndIncrement(), f.getInt()); + }); + } + } + } else if (dtype == TInt64.DTYPE) { + AtomicInteger index = new AtomicInteger(); + + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt64.DTYPE)) { + if (isScalar) { + writer.printf( + "%d). %f\n", index.getAndIncrement(), ((Output) input).data().getLong()); + } else { + result + .data() + .scalars() + .forEachIndexed( + (idx, f) -> { + writer.printf("%d). %d\n", index.getAndIncrement(), f.getLong()); + }); + } + } + } else if (dtype == TBool.DTYPE) { + AtomicInteger index = new AtomicInteger(); + + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TBool.DTYPE)) { + if (isScalar) { + writer.printf( + "%d). %b\n", index.getAndIncrement(), ((Output) input).data().getBoolean()); + } else { + result + .data() + .scalars() + .forEachIndexed( + (idx, f) -> { + writer.printf("%d). %b\n", index.getAndIncrement(), f.getBoolean()); + }); + } + } + } else if (dtype == TString.DTYPE) { + AtomicInteger index = new AtomicInteger(); + + try (Tensor result = + this.getGraphSession().runner().fetch(input).run().get(0).expect(TString.DTYPE)) { + if (isScalar) { + writer.printf( + "%d). %s\n", index.getAndIncrement(), ((Output) input).data().getObject()); + } else { + result + .data() + .scalars() + .forEachIndexed( + (idx, f) -> { + writer.printf("%d). %s\n", index.getAndIncrement(), f.getObject()); + }); + } + } + } else { + writer.println("Unexpected DataType: " + dtype); + } + writer.flush(); + } +} diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/utils/SmartCondTest.java b/tensorflow-keras/src/test/java/org/tensorflow/keras/utils/SmartCondTest.java new file mode 100644 index 00000000000..1aaa4aa7af4 --- /dev/null +++ b/tensorflow-keras/src/test/java/org/tensorflow/keras/utils/SmartCondTest.java @@ -0,0 +1,247 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.utils; + +import java.util.function.Supplier; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; +import org.tensorflow.Graph; +import org.tensorflow.Operand; +import org.tensorflow.Session; +import org.tensorflow.Tensor; +import org.tensorflow.op.Ops; +import org.tensorflow.op.core.Constant; +import org.tensorflow.types.TBool; + +/** + * + * @author Jim Clarke + */ +public class SmartCondTest { + + public SmartCondTest() { + } + + @BeforeAll + public static void setUpClass() { + } + + @AfterAll + public static void tearDownClass() { + } + + @BeforeEach + public void setUp() { + } + + @AfterEach + public void tearDown() { + } + + /** + * Test of cond method, of class SmartCond. + */ + @Test + public void testCondOp() { + try (Graph graph = new Graph(); Session sess = new Session(graph)) { + Ops tf = Ops.create(graph).withName("test"); + Constant pred = tf.constant(true); + sess.run(pred); + + Supplier true_fn = () -> tf.constant(true); + Supplier false_fn = () -> tf.constant(false); + boolean expResult = true; + Operand resultOp = SmartCond.select(tf, pred, true_fn, false_fn); + boolean actualResult; + try (Tensor result = sess.runner().fetch(resultOp).run().get(0).expect(TBool.DTYPE)) { + actualResult = result.data().getBoolean(); + assertEquals(expResult, actualResult); + } + + } + } + + @Test + public void testCondOp2() { + try (Graph graph = new Graph(); Session sess = new Session(graph)) { + Ops tf = Ops.create(graph).withName("test"); + Constant pred = tf.constant(true); + sess.run(pred); + + Supplier true_fn = () -> tf.constant(true); + Supplier false_fn = () -> tf.constant(false); + boolean expResult = true; + Operand resultOp = SmartCond.select(tf, pred, true_fn, false_fn); + boolean actualResult; + try (Tensor result = sess.runner().fetch(resultOp).run().get(0).expect(TBool.DTYPE)) { + actualResult = result.data().getBoolean(); + assertEquals(expResult, actualResult); + } + + } + } + + @Test + public void testCondOpPoint1() { + try (Graph graph = new Graph(); Session sess = new Session(graph)) { + Ops tf = Ops.create(graph).withName("test"); + Operand pred = tf.math.equal(tf.constant(0.1), tf.constant(1.0)); + sess.run(pred); + + Supplier true_fn = () -> tf.constant(true); + Supplier false_fn = () -> tf.constant(false); + boolean expResult = false; + Operand resultOp = SmartCond.select(tf, pred, true_fn, false_fn); + boolean actualResult; + try (Tensor result = sess.runner().fetch(resultOp).run().get(0).expect(TBool.DTYPE)) { + actualResult = result.data().getBoolean(); + assertEquals(expResult, actualResult); + } + } + } + + @Test + public void testCondOpString() { + try (Graph graph = new Graph(); Session sess = new Session(graph)) { + Ops tf = Ops.create(graph).withName("test"); + Operand pred = tf.math.equal(tf.constant("TRUE"), tf.constant("TRUE")); + + Supplier true_fn = () -> tf.constant(true); + Supplier false_fn = () -> tf.constant(false); + boolean expResult = true; + Operand resultOp = SmartCond.select(tf, pred, true_fn, false_fn); + boolean actualResult; + try (Tensor result = sess.runner().fetch(resultOp).run().get(0).expect(TBool.DTYPE)) { + actualResult = result.data().getBoolean(); + assertEquals(expResult, actualResult); + } + } + } + + /** + * Test of cond method, of class SmartCond. + */ + @Test + public void testCondBoolean() { + try (Graph graph = new Graph(); Session sess = new Session(graph)) { + Ops tf = Ops.create(graph).withName("test"); + boolean pred = false; + + Supplier true_fn = () -> tf.constant(true); + Supplier false_fn = () -> tf.constant(false); + boolean expResult = false; + Operand resultOp = SmartCond.select(pred, true_fn, false_fn); + boolean actualResult; + try (Tensor result = sess.runner().fetch(resultOp).run().get(0).expect(TBool.DTYPE)) { + actualResult = result.data().getBoolean(); + assertEquals(expResult, actualResult); + } + + } + } + + /** + * Test of cond method, of class SmartCond. + */ + @Test + public void testCondInt() { + try (Graph graph = new Graph(); Session sess = new Session(graph)) { + Ops tf = Ops.create(graph).withName("test"); + int pred = 1; + + Supplier true_fn = () -> tf.constant(true); + Supplier false_fn = () -> tf.constant(false); + boolean expResult = true; + Operand resultOp = SmartCond.select(pred, true_fn, false_fn); + boolean actualResult; + try (Tensor result = sess.runner().fetch(resultOp).run().get(0).expect(TBool.DTYPE)) { + actualResult = result.data().getBoolean(); + assertEquals(expResult, actualResult); + } + + } + } + + /** + * Test of cond method, of class SmartCond. + */ + @Test + public void testCondFloat1() { + try (Graph graph = new Graph(); Session sess = new Session(graph)) { + Ops tf = Ops.create(graph).withName("test"); + float pred = 1.0F; + + Supplier true_fn = () -> tf.constant(true); + Supplier false_fn = () -> tf.constant(false); + boolean expResult = true; + Operand resultOp = SmartCond.select(pred, true_fn, false_fn); + boolean actualResult; + try (Tensor result = sess.runner().fetch(resultOp).run().get(0).expect(TBool.DTYPE)) { + actualResult = result.data().getBoolean(); + assertEquals(expResult, actualResult); + } + + } + } + + /** + * Test of cond method, of class SmartCond. + */ + @Test + public void testCondFloat0_1() { + try (Graph graph = new Graph(); Session sess = new Session(graph)) { + Ops tf = Ops.create(graph).withName("test"); + float pred = 0.1F; + + Supplier true_fn = () -> tf.constant(true); + Supplier false_fn = () -> tf.constant(false); + boolean expResult = false; + Operand resultOp = SmartCond.select(pred, true_fn, false_fn); + boolean actualResult; + try (Tensor result = sess.runner().fetch(resultOp).run().get(0).expect(TBool.DTYPE)) { + actualResult = result.data().getBoolean(); + assertEquals(expResult, actualResult); + } + + } + } + + /** + * Test of cond method, of class SmartCond. + */ + @Test + public void testCondString() { + try (Graph graph = new Graph(); Session sess = new Session(graph)) { + Ops tf = Ops.create(graph).withName("test"); + String pred = "true"; + + Supplier true_fn = () -> tf.constant(true); + Supplier false_fn = () -> tf.constant(false); + boolean expResult = true; + Operand resultOp = SmartCond.select(pred, true_fn, false_fn); + boolean actualResult; + try (Tensor result = sess.runner().fetch(resultOp).run().get(0).expect(TBool.DTYPE)) { + actualResult = result.data().getBoolean(); + assertEquals(expResult, actualResult); + } + + } + } + +} diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/utils/TestSession.java b/tensorflow-keras/src/test/java/org/tensorflow/keras/utils/TestSession.java new file mode 100644 index 00000000000..1e5393aa2af --- /dev/null +++ b/tensorflow-keras/src/test/java/org/tensorflow/keras/utils/TestSession.java @@ -0,0 +1,618 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.utils; + +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.PrintWriter; +import java.io.Writer; +import java.util.function.Predicate; +import static org.junit.jupiter.api.Assertions.assertTrue; +import org.tensorflow.EagerSession; +import org.tensorflow.Operand; +import org.tensorflow.Output; +import org.tensorflow.Session; +import org.tensorflow.ndarray.FloatNdArray; +import org.tensorflow.op.Op; +import org.tensorflow.op.Ops; +import org.tensorflow.types.TBool; +import org.tensorflow.types.TString; +import org.tensorflow.types.family.TNumber; +import org.tensorflow.types.family.TType; + +/** Base class for Test Session */ +public abstract class TestSession implements AutoCloseable { + + protected float epsilon = 1e-5F; + protected boolean debug; + + /** The Test Session mode, either Eager or Graph */ + public enum Mode { + EAGER, + GRAPH; + } + + /** + * Create an Eager Test Session + * + * @return the Eager Test Session + */ + public static TestSession createEagerSession() { + return new EagerTestSession(); + } + + /** + * Create a Graph Test Session + * + * @return the Graph Test Session + */ + public static TestSession createGraphSession() { + return new GraphTestSession(); + } + + /** + * Create a Test Session + * + * @param mode + * @return + */ + public static TestSession createTestSession(Mode mode) { + return mode == Mode.EAGER ? createEagerSession() : createGraphSession(); + } + + /** Initialize the Test Session, default implementation is do nothing. */ + public void initialize() { + // empty + } + + /** + * Run the Operation + * + * @param op the Operation to run + */ + public void run(Op op) { + // empty + } + + /** + * Evaluate the input against the expected value + * + * @param expected the expected value + * @param input the operand to evaluate + * @param the data type of the input + * @throws org.opentest4j.AssertionFailedError + */ + public void evaluate(Number expected, Operand input) { + evaluate(new Number[] {expected}, input); + } + + /** + * Evaluate the input against the expected value + * + * @param expected the expected value + * @param input the operand to evaluate + * @param the data type of the input + * @throws org.opentest4j.AssertionFailedError + */ + public void evaluate(Number expected, Op input) { + evaluate(new Number[] {expected}, input); + } + + /** + * Evaluate the input against the expected values + * + * @param expected the expected values + * @param input the operand to evaluate + * @param the data type of the input + * @throws org.opentest4j.AssertionFailedError + */ + public void evaluate(Number[] expected, Op input) { + Output output = input.op().output(0); + evaluate(expected, output); + } + + /** + * Evaluate the input against the expected value + * + * @param expected the expected value + * @param input the operand to evaluate + * @param the data type of the input + * @throws org.opentest4j.AssertionFailedError + */ + public void evaluate(Number[] expected, Operand input) { + Output output = input.asOutput(); + evaluate(expected, output); + } + + /** + * Evaluate the input against the expected value + * + * @param expected the expected value + * @param input the operand to evaluate + * @param the data type of the input + * @throws org.opentest4j.AssertionFailedError + */ + public void evaluate(byte expected, Operand input) { + evaluate((double) expected, input); + } + + /** + * Evaluate the input against the expected value + * + * @param expected the expected value + * @param input the operand to evaluate + * @param the data type of the input + * @throws org.opentest4j.AssertionFailedError + */ + public void evaluate(int expected, Operand input) { + evaluate((double) expected, input); + } + + /** + * Evaluate the input against the expected value + * + * @param expected the expected value + * @param input the operand to evaluate + * @param the data type of the input + * @throws org.opentest4j.AssertionFailedError + */ + public void evaluate(long expected, Operand input) { + evaluate((double) expected, input); + } + + /** + * Evaluate the input against the expected value + * + * @param expected the expected value + * @param input the operand to evaluate + * @param the data type of the input + * @throws org.opentest4j.AssertionFailedError + */ + public void evaluate(float expected, Operand input) { + evaluate((double) expected, input); + } + + /** + * Evaluate the input against the expected value + * + * @param expected the expected value + * @param input the operand to evaluate + * @param the data type of the input + * @throws org.opentest4j.AssertionFailedError + */ + public abstract void evaluate(double expected, Operand input); + + /** + * Evaluate the input against the expected value + * + * @param expected the expected value + * @param input the operand to evaluate + * @param the data type of the input + * @throws org.opentest4j.AssertionFailedError + */ + public void evaluate(byte[] expected, Operand input) { + Byte[] iArray = new Byte[expected.length]; + for (int i = 0; i < expected.length; i++) iArray[i] = expected[i]; + evaluate(iArray, input); + } + + /** + * Evaluate the input against the expected value + * + * @param expected the expected value + * @param input the operand to evaluate + * @param the data type of the input + * @throws org.opentest4j.AssertionFailedError + */ + public void evaluate(int[] expected, Operand input) { + Integer[] iArray = new Integer[expected.length]; + for (int i = 0; i < expected.length; i++) iArray[i] = expected[i]; + evaluate(iArray, input); + } + + /** + * Evaluate the input against the expected value + * + * @param expected the expected value + * @param input the operand to evaluate + * @param the data type of the input + * @throws org.opentest4j.AssertionFailedError + */ + public void evaluate(long[] expected, Operand input) { + Long[] iArray = new Long[expected.length]; + for (int i = 0; i < expected.length; i++) iArray[i] = expected[i]; + evaluate(iArray, input); + } + + /** + * Evaluate the input against the expected values + * + * @param expected the expected values + * @param input the operand to evaluate + * @param the data type of the input + * @throws org.opentest4j.AssertionFailedError + */ + public void evaluate(float[] expected, Operand input) { + Float[] iArray = new Float[expected.length]; + for (int i = 0; i < expected.length; i++) iArray[i] = expected[i]; + evaluate(iArray, input); + } + + /** + * Evaluate the input against the expected value + * + * @param expected the expected value + * @param input the operand to evaluate + * @param the data type of the input + * @throws org.opentest4j.AssertionFailedError + */ + public void evaluate(double[] expected, Operand input) { + Double[] iArray = new Double[expected.length]; + for (int i = 0; i < expected.length; i++) iArray[i] = expected[i]; + evaluate(iArray, input); + } + + /** + * Evaluate the input against the expected value + * + * @param expected the expected value + * @param input the operand to evaluate + * @param the data type of the input + * @throws org.opentest4j.AssertionFailedError + */ + public abstract void evaluate(Number[] expected, Output input); + + /** + * Evaluate the input against the expected value + * + * @param expected the expected value + * @param input the operand to evaluate + * @param the data type of the input + * @throws org.opentest4j.AssertionFailedError + */ + public void evaluate(String expected, Operand input) { + evaluate(new String[] {expected}, input); + } + + /** + * Evaluate the input against the expected value + * + * @param expected the expected value + * @param input the operand to evaluate + * @param the data type of the input + * @throws org.opentest4j.AssertionFailedError + */ + public void evaluate(String expected, Op input) { + evaluate(new String[] {expected}, input); + } + + /** + * Evaluate the input against the expected value + * + * @param expected the expected value + * @param input the operand to evaluate + * @param the data type of the input + * @throws org.opentest4j.AssertionFailedError + */ + public void evaluate(String[] expected, Op input) { + Output output = input.op().output(0); + evaluate(expected, output); + } + + /** + * Evaluate the input against the expected value + * + * @param expected the expected value + * @param input the operand to evaluate + * @param the data type of the input + * @throws org.opentest4j.AssertionFailedError + */ + public void evaluate(String[] expected, Operand input) { + Output output = input.asOutput(); + evaluate(expected, output); + } + + /** + * Evaluate the input against the expected value + * + * @param expected the expected value + * @param input the operand to evaluate + * @param the data type of the input + * @throws org.opentest4j.AssertionFailedError + */ + public abstract void evaluate(String[] expected, Output input); + + /** + * Evaluate the input against the expected value + * + * @param expected the expected value + * @param input the operand to evaluate + * @param the data type of the input + * @throws org.opentest4j.AssertionFailedError + */ + public void evaluate(Boolean expected, Operand input) { + evaluate(new Boolean[] {expected}, input); + } + + /** + * Evaluate the input against the expected value + * + * @param expected the expected value + * @param input the operand to evaluate + * @param the data type of the input + * @throws org.opentest4j.AssertionFailedError + */ + public void evaluate(Boolean expected, Op input) { + evaluate(new Boolean[] {expected}, input); + } + + /** + * Evaluate the input against the expected value + * + * @param expected the expected value + * @param input the operand to evaluate + * @param the data type of the input + * @throws org.opentest4j.AssertionFailedError + */ + public void evaluate(Boolean[] expected, Op input) { + Output output = input.op().output(0); + evaluate(expected, output); + } + + /** + * Evaluate the input against the expected value + * + * @param expected the expected value + * @param input the operand to evaluate + * @param the data type of the input + * @throws org.opentest4j.AssertionFailedError + */ + public void evaluate(Boolean[] expected, Operand input) { + Output output = input.asOutput(); + evaluate(expected, output); + } + + /** + * Evaluate the input against the expected value + * + * @param expected the expected value + * @param input the operand to evaluate + * @param the data type of the input + * @throws org.opentest4j.AssertionFailedError + */ + public abstract void evaluate(Boolean[] expected, Output input); + + public void evaluate(Operand expected, Op input) { + Output output = input.op().output(0); + evaluate(expected, output); + } + + /** + * Evaluate the input against the expected value + * + * @param expected the expected value + * @param input the operand to evaluate + * @param the data type of the input + * @throws org.opentest4j.AssertionFailedError + */ + public void evaluate(Operand expected, Operand input) { + evaluate(expected.asOutput(), input.asOutput()); + } + + /** + * Evaluate the input against the expected value + * + * @param expected the expected value + * @param input the operand to evaluate + * @param the data type of the input + * @throws org.opentest4j.AssertionFailedError + */ + public abstract void evaluate(Output expected, Output input); + + /** + * Evaluate the input against the expected value + * + * @param expected the expected value + * @param input the operand to evaluate + * @param the data type of the input + * @throws org.opentest4j.AssertionFailedError + */ + public void evaluate(FloatNdArray expected, Operand input) { + evaluate(expected, input.asOutput()); + } + + /** + * Evaluate the input against the expected value + * + * @param expected the expected value + * @param input the operand to evaluate + * @param the data type of the input + * @throws org.opentest4j.AssertionFailedError + */ + public abstract void evaluate(FloatNdArray expected, Output input); + + public void evaluate(Operand input, Predicate predicate) { + evaluate(input.asOutput(), predicate); + } + + /** + * Evaluate the input against the expected value + * + * @param expected the expected value + * @param input the operand to evaluate + * @param the data type of the input + * @throws org.opentest4j.AssertionFailedError + */ + public abstract void evaluate(Output input, Predicate predicate); + + /** + * Evaluate the input against the expected value + * + * @param expected the expected value + * @param input the operand to evaluate + * @param the data type of the input + * @throws org.opentest4j.AssertionFailedError + */ + public void evaluate(FloatNdArray input, Predicate predicate) { + input.scalars().forEach(f -> assertTrue(predicate.test(f.getFloat()))); + } + + /** + * Print the input + * + * @param out the output stream + * @param input the operand to print + * @param the data type of the input + */ + public void print(OutputStream out, Operand input) { + print(new PrintWriter(new OutputStreamWriter(out)), input.asOutput()); + } + + /** + * Print the input + * + * @param out the output stream + * @param input the op to print + * @param the data type of the input + */ + public void print(OutputStream out, Op input) { + print(new PrintWriter(new OutputStreamWriter(out)), input.op().output(0)); + } + + /** + * Print the input + * + * @param out the output stream + * @param input the op to print + * @param the data type of the input + */ + public void print(OutputStream out, Output input) { + print(new PrintWriter(new OutputStreamWriter(out)), input); + } + + /** + * Print the input + * + * @param witer the output writer + * @param input the operand to print + * @param the data type of the input + */ + public void print(Writer writer, Operand input) { + print(new PrintWriter(writer), input.asOutput()); + } + + /** + * Print the input + * + * @param witer the output writer + * @param input the op to print + * @param the data type of the input + */ + public void print(Writer writer, Op input) { + print(new PrintWriter(writer), input.op().output(0)); + } + + /** + * Print the input + * + * @param witer the output writer + * @param input the op to print + * @param the data type of the input + */ + public void print(Writer writer, Output input) { + print(new PrintWriter(writer), input); + } + + /** + * Print the input + * + * @param witer the output writer + * @param input the op to print + */ + public abstract void print(PrintWriter writer, Output input); + + /** + * Get the TensorFlow Ops + * + * @return the TensorFlow Ops + */ + public abstract Ops getTF(); + + /** + * Determine if this Test Session represents an Eager Session + * + * @return true, if this Test Session represents an Eager Session + */ + public abstract boolean isEager(); + + /** + * Determine if this Test Session represents a Graph Session + * + * @return true, if this Test Session represents a Graph Session + */ + public boolean isGraph() { + return !isEager(); + } + + /** + * Get the epsilon value for evaluating float values + * + * @return the epsilon value for evaluating float values + */ + public float getEpsilon() { + return this.epsilon; + } + + /** + * Set the epsilon value for evaluating float values + * + * @param epsilon the epsilon value for evaluating float values + */ + public void setEpsilon(float epsilon) { + this.epsilon = epsilon; + } + + /** + * Get the TensorFlow session object associated with this Test Session + * + * @return a TensorFlow session if this is a Graph session, otherwise null + */ + public abstract Session getGraphSession(); + + /** + * Get the TensorFlow eager session object associated with this Test Session + * + * @return a TensorFlow session if this is an eager session, otherwise null + */ + public abstract EagerSession getEagerSession(); + + /** {@inheritDoc} */ + @Override + public abstract void close(); + + /** @return the debug setting */ + public boolean isDebug() { + return debug; + } + + /** + * Set the debug flag + * + * @param debug the setting for debugging + */ + public void setDebug(boolean debug) { + this.debug = debug; + } +} diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/utils/TypeUtilTest.java b/tensorflow-keras/src/test/java/org/tensorflow/keras/utils/TypeUtilTest.java new file mode 100644 index 00000000000..18442961ac5 --- /dev/null +++ b/tensorflow-keras/src/test/java/org/tensorflow/keras/utils/TypeUtilTest.java @@ -0,0 +1,234 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ +package org.tensorflow.keras.utils; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; +import org.tensorflow.DataType; +import org.tensorflow.types.TBfloat16; +import org.tensorflow.types.TBool; +import org.tensorflow.types.TFloat16; +import org.tensorflow.types.TFloat32; +import org.tensorflow.types.TFloat64; +import org.tensorflow.types.TInt32; +import org.tensorflow.types.TInt64; +import org.tensorflow.types.TString; +import org.tensorflow.types.TUint8; + +/** + * + * @author Jim Clarke + */ +public class TypeUtilTest { + + public TypeUtilTest() { + } + + @BeforeAll + public static void setUpClass() { + } + + @AfterAll + public static void tearDownClass() { + } + + @BeforeEach + public void setUp() { + } + + @AfterEach + public void tearDown() { + } + + /** + * Test of isFloating method, of class TypeUtils. + */ + @Test + public void testIsFloating() { + DataType dtype = TFloat32.DTYPE; + boolean expResult = true; + boolean result = TypeUtils.isFloating(dtype); + assertEquals(expResult, result); + + dtype = TInt32.DTYPE; + expResult = false; + result = TypeUtils.isFloating(dtype); + assertEquals(expResult, result); + + dtype = TString.DTYPE; + expResult = false; + result = TypeUtils.isFloating(dtype); + assertEquals(expResult, result); + } + + /** + * Test of isInteger method, of class TypeUtils. + */ + @Test + public void testIsInteger() { + DataType dtype = TFloat32.DTYPE; + boolean expResult = false; + boolean result = TypeUtils.isInteger(dtype); + assertEquals(expResult, result); + + dtype = TInt32.DTYPE; + expResult = true; + result = TypeUtils.isInteger(dtype); + assertEquals(expResult, result); + + dtype = TString.DTYPE; + expResult = false; + result = TypeUtils.isInteger(dtype); + assertEquals(expResult, result); + } + + /** + * Test of isNumeric method, of class TypeUtils. + */ + @Test + public void testIsNumeric() { + DataType dtype = TFloat16.DTYPE; + boolean expResult = true; + boolean result = TypeUtils.isNumeric(dtype); + assertEquals(expResult, result); + + dtype = TInt64.DTYPE; + expResult = true; + result = TypeUtils.isNumeric(dtype); + assertEquals(expResult, result); + + dtype = TUint8.DTYPE; + expResult = true; + result = TypeUtils.isNumeric(dtype); + assertEquals(expResult, result); + + dtype = TBool.DTYPE; + expResult = false; + result = TypeUtils.isNumeric(dtype); + assertEquals(expResult, result); + + dtype = TString.DTYPE; + expResult = false; + result = TypeUtils.isNumeric(dtype); + assertEquals(expResult, result); + } + + /** + * Test of isBoolean method, of class TypeUtils. + */ + @Test + public void testIsBoolean() { + DataType dtype = TFloat16.DTYPE; + boolean expResult = false; + boolean result = TypeUtils.isBoolean(dtype); + assertEquals(expResult, result); + + dtype = TInt64.DTYPE; + expResult = false; + result = TypeUtils.isBoolean(dtype); + assertEquals(expResult, result); + + dtype = TBool.DTYPE; + expResult = true; + result = TypeUtils.isBoolean(dtype); + assertEquals(expResult, result); + } + + /** + * Test of isString method, of class TypeUtils. + */ + @Test + public void testIsString() { + DataType dtype = TFloat16.DTYPE; + boolean expResult = false; + boolean result = TypeUtils.isString(dtype); + assertEquals(expResult, result); + + dtype = TBool.DTYPE; + expResult = false; + result = TypeUtils.isString(dtype); + assertEquals(expResult, result); + + dtype = TString.DTYPE; + expResult = true; + result = TypeUtils.isString(dtype); + assertEquals(expResult, result); + } + + /** + * Test of of method, of class TypeUtils. + */ + @Test + public void testOf() { + String name = "BFLOAT16"; + DataType expResult = TBfloat16.DTYPE; + DataType result = TypeUtils.of(name); + assertEquals(expResult, result); + + name = "FLOAT16"; + expResult = TFloat16.DTYPE; + result = TypeUtils.of(name); + assertEquals(expResult, result); + + name = "FLOAT"; + expResult = TFloat32.DTYPE; + result = TypeUtils.of(name); + assertEquals(expResult, result); + + name = "DOUBLE"; + expResult = TFloat64.DTYPE; + result = TypeUtils.of(name); + assertEquals(expResult, result); + + name = "UINT8"; + expResult = TUint8.DTYPE; + result = TypeUtils.of(name); + assertEquals(expResult, result); + + name = "INT32"; + expResult = TInt32.DTYPE; + result = TypeUtils.of(name); + assertEquals(expResult, result); + + name = "INT64"; + expResult = TInt64.DTYPE; + result = TypeUtils.of(name); + assertEquals(expResult, result); + + name = "BOOL"; + expResult = TBool.DTYPE; + result = TypeUtils.of(name); + assertEquals(expResult, result); + + name = "STRING"; + expResult = TString.DTYPE; + result = TypeUtils.of(name); + assertEquals(expResult, result); + + name = "FOO"; + try { + TypeUtils.of(name); + fail("IllegalArgumentException not thrown."); + } catch (IllegalArgumentException expected) { + + } + + } + +} From 9c113a7e6dfcc98c0e57bede8dcb46de56125320 Mon Sep 17 00:00:00 2001 From: Jim Clarke Date: Thu, 20 Aug 2020 08:12:27 -0400 Subject: [PATCH 02/33] Added static final NAME to replace hardcoded String in the create method. This allows the NAME to be used elsewhere instead of hardcoding the string. --- .../java/org/tensorflow/types/TBfloat16.java | 29 ++++++----- .../main/java/org/tensorflow/types/TBool.java | 13 +++-- .../java/org/tensorflow/types/TFloat16.java | 28 +++++----- .../java/org/tensorflow/types/TFloat32.java | 14 +++-- .../java/org/tensorflow/types/TFloat64.java | 13 +++-- .../java/org/tensorflow/types/TInt32.java | 13 +++-- .../java/org/tensorflow/types/TInt64.java | 13 +++-- .../java/org/tensorflow/types/TString.java | 52 +++++++++---------- .../java/org/tensorflow/types/TUint8.java | 13 +++-- 9 files changed, 92 insertions(+), 96 deletions(-) diff --git a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TBfloat16.java b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TBfloat16.java index 531bedc5e40..faf698a6fe5 100644 --- a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TBfloat16.java +++ b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TBfloat16.java @@ -36,21 +36,24 @@ * Brain 16-bit float tensor type. * *

This type differs from {@link TFloat16} as it truncates the mantissa of a 32-bit float and - * preserve all exponent bits for faster conversion, while the latter shrink the exponent and have - * a longer mantissa for more precision. + * preserve all exponent bits for faster conversion, while the latter shrink the exponent and have a + * longer mantissa for more precision. * - *

Since there is no floating-point type that fits in 16 bits in Java, a conversion (with potentially - * a precision loss) is required for each 32 bits value written or read on a tensor of this type from - * the JVM. Therefore, if a lot of I/O operations are to be expected on a tensor, performances will be - * improved by working with {@link TFloat32} or {@link TFloat64} data types whenever possible. + *

Since there is no floating-point type that fits in 16 bits in Java, a conversion (with + * potentially a precision loss) is required for each 32 bits value written or read on a tensor of + * this type from the JVM. Therefore, if a lot of I/O operations are to be expected on a tensor, + * performances will be improved by working with {@link TFloat32} or {@link TFloat64} data types + * whenever possible. * - *

Note that some CPUs support the bfloat16 format natively, which can result in faster computation - * compared to {@link TFloat16} when GPUs are not used. + *

Note that some CPUs support the bfloat16 format natively, which can result in faster + * computation compared to {@link TFloat16} when GPUs are not used. */ public interface TBfloat16 extends FloatNdArray, TNumber { + /** readable-name for the data type */ + static final String NAME = "BFLOAT16"; /** Type metadata */ - DataType DTYPE = DataType.create("BFLOAT16", 14, 2, TBfloat16Impl::mapTensor); + DataType DTYPE = DataType.create(NAME, 14, 2, TBfloat16Impl::mapTensor); /** * Allocates a new tensor for storing a single float value. @@ -121,17 +124,15 @@ static Tensor tensorOf(Shape shape, Consumer dataInit) { } } -/** - * Hidden implementation of a {@code TBfloat16} - */ +/** Hidden implementation of a {@code TBfloat16} */ class TBfloat16Impl extends FloatDenseNdArray implements TBfloat16 { static TBfloat16 mapTensor(TF_Tensor nativeTensor, Shape shape) { - return new TBfloat16Impl(DataLayouts.BFLOAT16.applyTo(TensorBuffers.toShorts(nativeTensor)), shape); + return new TBfloat16Impl( + DataLayouts.BFLOAT16.applyTo(TensorBuffers.toShorts(nativeTensor)), shape); } private TBfloat16Impl(FloatDataBuffer buffer, Shape shape) { super(buffer, shape); } } - diff --git a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TBool.java b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TBool.java index 835d0a1be31..bac5fb96f87 100644 --- a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TBool.java +++ b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TBool.java @@ -36,14 +36,15 @@ * Boolean tensor type. * *

If direct memory mapping is not available in the JVM, tensors of this type might require an - * explicit mapping between Java boolean values and byte buffers using the - * {@link DataLayouts#BOOL BOOL} layout, which may impact I/O - * performances. + * explicit mapping between Java boolean values and byte buffers using the {@link DataLayouts#BOOL + * BOOL} layout, which may impact I/O performances. */ public interface TBool extends BooleanNdArray, TType { + /** readable-name for the data type */ + static final String NAME = "BOOL"; /** Type metadata */ - DataType DTYPE = DataType.create("BOOL", 10, 1, TBoolImpl::mapTensor); + DataType DTYPE = DataType.create(NAME, 10, 1, TBoolImpl::mapTensor); /** * Allocates a new tensor for storing a single boolean value. @@ -114,9 +115,7 @@ static Tensor tensorOf(Shape shape, Consumer dataInit) { } } -/** - * Hidden implementation of a {@code TBool} - */ +/** Hidden implementation of a {@code TBool} */ class TBoolImpl extends BooleanDenseNdArray implements TBool { static TBool mapTensor(TF_Tensor nativeTensor, Shape shape) { diff --git a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TFloat16.java b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TFloat16.java index 3f0deb00d0f..6ce463ff2c0 100644 --- a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TFloat16.java +++ b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TFloat16.java @@ -35,19 +35,23 @@ /** * IEEE-754 half-precision 16-bit float tensor type. * - *

Since there is no floating-point type that fits in 16 bits in Java, a conversion (with potentially - * a precision loss) is required for each 32 bits value written or read on a tensor of this type from - * the JVM. Therefore, if a lot of I/O operations are to be expected on a tensor, performances will be - * improved by working with {@link TFloat32} or {@link TFloat64} data types whenever possible. + *

Since there is no floating-point type that fits in 16 bits in Java, a conversion (with + * potentially a precision loss) is required for each 32 bits value written or read on a tensor of + * this type from the JVM. Therefore, if a lot of I/O operations are to be expected on a tensor, + * performances will be improved by working with {@link TFloat32} or {@link TFloat64} data types + * whenever possible. * - *

Also, {@code TFloat16} tensors normally perform better if they are located in GPU memory since most - * CPUs do not support this format natively. For CPU computation on 16-bit floats, the {@link TBfloat16} - * tensor type might be a better option. + *

Also, {@code TFloat16} tensors normally perform better if they are located in GPU memory since + * most CPUs do not support this format natively. For CPU computation on 16-bit floats, the {@link + * TBfloat16} tensor type might be a better option. */ public interface TFloat16 extends FloatNdArray, TNumber { + /** readable-name for the data type */ + static final String NAME = "FLOAT16"; + /** Type metadata */ - DataType DTYPE = DataType.create("FLOAT16", 19, 2, TFloat16Impl::mapTensor); + DataType DTYPE = DataType.create(NAME, 19, 2, TFloat16Impl::mapTensor); /** * Allocates a new tensor for storing a single float value. @@ -118,17 +122,15 @@ static Tensor tensorOf(Shape shape, Consumer dataInit) { } } -/** - * Hidden implementation of a {@code TFloat16} - */ +/** Hidden implementation of a {@code TFloat16} */ class TFloat16Impl extends FloatDenseNdArray implements TFloat16 { static TFloat16 mapTensor(TF_Tensor nativeTensor, Shape shape) { - return new TFloat16Impl(DataLayouts.FLOAT16.applyTo(TensorBuffers.toShorts(nativeTensor)), shape); + return new TFloat16Impl( + DataLayouts.FLOAT16.applyTo(TensorBuffers.toShorts(nativeTensor)), shape); } private TFloat16Impl(FloatDataBuffer buffer, Shape shape) { super(buffer, shape); } } - diff --git a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TFloat32.java b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TFloat32.java index 4b06ad2d57e..968b3f2a539 100644 --- a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TFloat32.java +++ b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TFloat32.java @@ -31,13 +31,14 @@ import org.tensorflow.ndarray.impl.dense.FloatDenseNdArray; import org.tensorflow.types.family.TNumber; -/** - * IEEE-754 single-precision 32-bit float tensor type. - */ +/** IEEE-754 single-precision 32-bit float tensor type. */ public interface TFloat32 extends FloatNdArray, TNumber { + /** readable-name for the data type */ + static final String NAME = "FLOAT"; + /** Type metadata */ - DataType DTYPE = DataType.create("FLOAT", 1, 4, TFloat32Impl::mapTensor); + DataType DTYPE = DataType.create(NAME, 1, 4, TFloat32Impl::mapTensor); /** * Allocates a new tensor for storing a single float value. @@ -108,9 +109,7 @@ static Tensor tensorOf(Shape shape, Consumer dataInit) { } } -/** - * Hidden implementation of a {@code TFloat32} - */ +/** Hidden implementation of a {@code TFloat32} */ class TFloat32Impl extends FloatDenseNdArray implements TFloat32 { static TFloat32 mapTensor(TF_Tensor nativeTensor, Shape shape) { @@ -121,4 +120,3 @@ private TFloat32Impl(FloatDataBuffer buffer, Shape shape) { super(buffer, shape); } } - diff --git a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TFloat64.java b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TFloat64.java index 0b2109ac374..9cf5fdaaeaa 100644 --- a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TFloat64.java +++ b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TFloat64.java @@ -31,13 +31,14 @@ import org.tensorflow.ndarray.impl.dense.DoubleDenseNdArray; import org.tensorflow.types.family.TNumber; -/** - * IEEE-754 double-precision 64-bit float tensor type. - */ +/** IEEE-754 double-precision 64-bit float tensor type. */ public interface TFloat64 extends DoubleNdArray, TNumber { + /** readable-name for the data type */ + static final String NAME = "DOUBLE"; + /** Type metadata */ - DataType DTYPE = DataType.create("DOUBLE", 2, 8, TFloat64Impl::mapTensor); + DataType DTYPE = DataType.create(NAME, 2, 8, TFloat64Impl::mapTensor); /** * Allocates a new tensor for storing a single double value. @@ -108,9 +109,7 @@ static Tensor tensorOf(Shape shape, Consumer dataInit) { } } -/** - * Hidden implementation of a {@code TFloat64} - */ +/** Hidden implementation of a {@code TFloat64} */ class TFloat64Impl extends DoubleDenseNdArray implements TFloat64 { static TFloat64 mapTensor(TF_Tensor nativeTensor, Shape shape) { diff --git a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TInt32.java b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TInt32.java index ac0dbec1d42..4a1139ddde2 100644 --- a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TInt32.java +++ b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TInt32.java @@ -30,13 +30,14 @@ import org.tensorflow.ndarray.impl.dense.IntDenseNdArray; import org.tensorflow.types.family.TNumber; -/** - * 32-bit signed integer tensor type. - */ +/** 32-bit signed integer tensor type. */ public interface TInt32 extends IntNdArray, TNumber { + /** readable-name for the data type */ + static final String NAME = "INT32"; + /** Type metadata */ - DataType DTYPE = DataType.create("INT32", 3, 4, TInt32Impl::mapTensor); + DataType DTYPE = DataType.create(NAME, 3, 4, TInt32Impl::mapTensor); /** * Allocates a new tensor for storing a single int value. @@ -107,9 +108,7 @@ static Tensor tensorOf(Shape shape, Consumer dataInit) { } } -/** - * Hidden implementation of a {@code TInt32} - */ +/** Hidden implementation of a {@code TInt32} */ class TInt32Impl extends IntDenseNdArray implements TInt32 { static TInt32 mapTensor(TF_Tensor nativeTensor, Shape shape) { diff --git a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TInt64.java b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TInt64.java index bbe05f9b1ff..04fd4fd7799 100644 --- a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TInt64.java +++ b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TInt64.java @@ -31,13 +31,14 @@ import org.tensorflow.ndarray.impl.dense.LongDenseNdArray; import org.tensorflow.types.family.TNumber; -/** - * 64-bit signed integer tensor type. - */ +/** 64-bit signed integer tensor type. */ public interface TInt64 extends LongNdArray, TNumber { + /** readable-name for the data type */ + static final String NAME = "INT64"; + /** Type metadata */ - DataType DTYPE = DataType.create("INT64", 9, 8, TInt64Impl::mapTensor); + DataType DTYPE = DataType.create(NAME, 9, 8, TInt64Impl::mapTensor); /** * Allocates a new tensor for storing a single long value. @@ -108,9 +109,7 @@ static Tensor tensorOf(Shape shape, Consumer dataInit) { } } -/** - * Hidden implementation of a {@code TInt64} - */ +/** Hidden implementation of a {@code TInt64} */ class TInt64Impl extends LongDenseNdArray implements TInt64 { static TInt64 mapTensor(TF_Tensor nativeTensor, Shape shape) { diff --git a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TString.java b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TString.java index 90ae4ef9cb8..0f097a16ddb 100644 --- a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TString.java +++ b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TString.java @@ -40,15 +40,16 @@ *

This type can be used to store any arbitrary byte sequence of variable length. * *

Since the size of a tensor is fixed, creating a tensor of this type requires to provide all of - * its values initially, so TensorFlow can compute and allocate the right amount of memory. Then - * the data in the tensor is initialized once and cannot be modified afterwards. + * its values initially, so TensorFlow can compute and allocate the right amount of memory. Then the + * data in the tensor is initialized once and cannot be modified afterwards. */ public interface TString extends NdArray, TType { - /** - * Type metadata - */ - DataType DTYPE = DataType.create("STRING", 7, -1, TStringImpl::mapTensor); + /** readable-name for the data type */ + static final String NAME = "STRING"; + + /** Type metadata */ + DataType DTYPE = DataType.create(NAME, 7, -1, TStringImpl::mapTensor); /** * Allocates a new tensor for storing a string scalar. @@ -96,8 +97,8 @@ static Tensor tensorOf(NdArray src) { *

The tensor will have the same shape as the source array and its data will be copied. The * strings are encoded into bytes using the charset passed in parameter. * - *

If charset is different than default UTF-8, then it must also be provided explicitly - * when reading data from the tensor, using {@link #using(Charset)}:

+ *

If charset is different than default UTF-8, then it must also be provided explicitly when + * reading data from the tensor, using {@link #using(Charset)}: * *

{@code
    * // Given `originalStrings` an initialized vector of strings
@@ -135,8 +136,8 @@ static Tensor tensorOf(Shape shape, DataBuffer data) {
    * 

The data will be copied from the provided buffer to the tensor after it is allocated. The * strings are encoded into bytes using the charset passed in parameter. * - *

If charset is different than default UTF-8, then it must also be provided explicitly - * when reading data from the tensor, using {@link #using(Charset)}:

+ *

If charset is different than default UTF-8, then it must also be provided explicitly when + * reading data from the tensor, using {@link #using(Charset)}: * *

{@code
    * // Given `originalStrings` an initialized buffer of strings
@@ -161,8 +162,8 @@ static Tensor tensorOf(Charset charset, Shape shape, DataBuffer
    *
    * 

The tensor will have the same shape as the source array and its data will be copied. * - *

If data must be read as raw bytes as well, the user must specify it explicitly by - * invoking {@link #asBytes()} on the returned data:

+ *

If data must be read as raw bytes as well, the user must specify it explicitly by invoking + * {@link #asBytes()} on the returned data: * *

{@code
    * byte[] bytes = tensor.data().asBytes().getObject(0);  // returns first sequence of bytes in the tensor
@@ -180,8 +181,8 @@ static Tensor tensorOfBytes(NdArray src) {
    *
    * 

The data will be copied from the provided buffer to the tensor after it has been allocated. * - *

If data must be read as raw bytes as well, the user must specify it explicitly by - * invoking {@link #asBytes()} on the returned data:

+ *

If data must be read as raw bytes as well, the user must specify it explicitly by invoking + * {@link #asBytes()} on the returned data: * *

{@code
    * byte[] bytes = tensor.data().asBytes().getObject(0);  // returns first sequence of bytes in the tensor
@@ -212,15 +213,11 @@ static Tensor tensorOfBytes(Shape shape, DataBuffer data) {
    */
   TString using(Charset charset);
 
-  /**
-   * @return the tensor data as a n-dimensional array of raw byte sequences.
-   */
+  /** @return the tensor data as a n-dimensional array of raw byte sequences. */
   NdArray asBytes();
 }
 
-/**
- * Hidden implementation of a {@code TString}
- */
+/** Hidden implementation of a {@code TString} */
 class TStringImpl extends DenseNdArray implements TString {
 
   @Override
@@ -235,9 +232,11 @@ public NdArray asBytes() {
 
   static  Tensor createTensor(NdArray src, Function getBytes) {
     long size = StringTensorBuffer.computeSize(src, getBytes);
-    return Tensor.of(TString.DTYPE, src.shape(), size, data ->
-        ((TStringImpl)data).tensorBuffer.init(src, getBytes)
-    );
+    return Tensor.of(
+        TString.DTYPE,
+        src.shape(),
+        size,
+        data -> ((TStringImpl) data).tensorBuffer.init(src, getBytes));
   }
 
   static TString mapTensor(TF_Tensor nativeTensor, Shape shape) {
@@ -245,13 +244,14 @@ static TString mapTensor(TF_Tensor nativeTensor, Shape shape) {
     return new TStringImpl(buffer, UTF_8_LAYOUT, shape);
   }
 
-  private static DataLayout, String> UTF_8_LAYOUT = DataLayouts.ofStrings(StandardCharsets.UTF_8);
+  private static DataLayout, String> UTF_8_LAYOUT =
+      DataLayouts.ofStrings(StandardCharsets.UTF_8);
 
   private final StringTensorBuffer tensorBuffer;
 
-  private TStringImpl(StringTensorBuffer buffer, DataLayout, String> layout, Shape shape) {
+  private TStringImpl(
+      StringTensorBuffer buffer, DataLayout, String> layout, Shape shape) {
     super(layout.applyTo(buffer), shape);
     tensorBuffer = buffer;
   }
 }
-
diff --git a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TUint8.java b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TUint8.java
index f55959194e5..365f41196fb 100644
--- a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TUint8.java
+++ b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TUint8.java
@@ -31,13 +31,14 @@
 import org.tensorflow.ndarray.impl.dense.ByteDenseNdArray;
 import org.tensorflow.types.family.TNumber;
 
-/**
- * 8-bit unsigned integer tensor type.
- */
+/** 8-bit unsigned integer tensor type. */
 public interface TUint8 extends ByteNdArray, TNumber {
 
+  /** readable-name for the data type */
+  static final String NAME = "UINT8";
+
   /** Type metadata */
-  DataType DTYPE = DataType.create("UINT8", 4, 1, TUint8Impl::mapTensor);
+  DataType DTYPE = DataType.create(NAME, 4, 1, TUint8Impl::mapTensor);
 
   /**
    * Allocates a new tensor for storing a single byte value.
@@ -108,9 +109,7 @@ static Tensor tensorOf(Shape shape, Consumer dataInit) {
   }
 }
 
-/**
- * Hidden implementation of a {@code TUint8}
- */
+/** Hidden implementation of a {@code TUint8} */
 class TUint8Impl extends ByteDenseNdArray implements TUint8 {
 
   static TUint8 mapTensor(TF_Tensor nativeTensor, Shape shape) {

From 824d4872257a5a614a53c7dff579748b819c800e Mon Sep 17 00:00:00 2001
From: Jim Clarke 
Date: Thu, 20 Aug 2020 08:14:26 -0400
Subject: [PATCH 03/33] Changed of method to use the DataType NAME attribute
 rather than hardcoding the string. added methods isFloating(), isInteger(),
 isNUmeric(), isBoolean() and isString()

---
 .../main/java/org/tensorflow/DataType.java    | 98 ++++++++++++++++---
 1 file changed, 87 insertions(+), 11 deletions(-)

diff --git a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/DataType.java b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/DataType.java
index 24bd0826fa8..48940f793dc 100644
--- a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/DataType.java
+++ b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/DataType.java
@@ -17,6 +17,15 @@
 
 import org.tensorflow.internal.c_api.TF_Tensor;
 import org.tensorflow.ndarray.Shape;
+import org.tensorflow.types.TBfloat16;
+import org.tensorflow.types.TBool;
+import org.tensorflow.types.TFloat16;
+import org.tensorflow.types.TFloat32;
+import org.tensorflow.types.TFloat64;
+import org.tensorflow.types.TInt32;
+import org.tensorflow.types.TInt64;
+import org.tensorflow.types.TUint8;
+import org.tensorflow.types.TString;
 import org.tensorflow.types.family.TType;
 
 /** Represents a type of elements in a {@link Tensor} */
@@ -43,27 +52,96 @@ public interface TensorMapper {
    * @param byteSize size of an element of this type, in bytes, -1 if unknown
    * @param tensorMapper method for mapping tensor memory to elements of this type
    */
-  public static  DataType create(String name, int value, int byteSize, TensorMapper tensorMapper) {
+  public static  DataType create(
+      String name, int value, int byteSize, TensorMapper tensorMapper) {
     return new DataType<>(name, value, byteSize, tensorMapper);
   }
 
   /**
-   * Returns the size of an element of this type, in bytes, or -1 if element size is variable.
+   * Gets the DataType associated with the readable-name for the type
+   * 

The name must match exactly the name used to create the desired DataType

+ * + * @param name readable-name for the type + * @return the DataType + * @throws java.lang.IllegalArgumentException if the name is not a valid data type name + * @throws java.lang.NullPointerException if name is null */ + public static DataType of(String name) { + switch (name) { + case TBfloat16.NAME: + return TBfloat16.DTYPE; + case TFloat16.NAME: + return TFloat16.DTYPE; + case TFloat32.NAME: + return TFloat32.DTYPE; + case TFloat64.NAME: + return TFloat64.DTYPE; + case TUint8.NAME: + return TUint8.DTYPE; + case TInt32.NAME: + return TInt32.DTYPE; + case TInt64.NAME: + return TInt64.DTYPE; + case TBool.NAME: + return TBool.DTYPE; + case TString.NAME: + return TString.DTYPE; + default: + throw new IllegalArgumentException(String.format("%s is an unknown DataType", name)); + } + } + + /** Returns true if this data type represents a floating point type */ + public boolean isFloating() { + switch (this.name()) { + case TBfloat16.NAME: + case TFloat16.NAME: + case TFloat32.NAME: + case TFloat64.NAME: + return true; + default: + return false; + } + } + + /** Returns true if this data type represents an integer type */ + public boolean isInteger() { + switch (this.name()) { + case TInt32.NAME: + case TInt64.NAME: + case TUint8.NAME: + return true; + default: + return false; + } + } + + /** Returns true if this data type represents a numeric type */ + public boolean isNumeric() { + return isFloating() || isInteger(); + } + + /** Returns true if this data type represents a boolean type */ + public boolean isBoolean() { + return this.name().equals(TBool.NAME); + } + + /** Returns true if this data type represents a string type */ + public boolean isString() { + return this.name().equals(TString.NAME); + } + + /** Returns the size of an element of this type, in bytes, or -1 if element size is variable. */ public int byteSize() { return byteSize; } - /** - * Returns true if this datatype has elements of variable length - */ + /** Returns true if this datatype has elements of variable length */ public boolean isVariableLength() { return byteSize == -1; } - /** - * Returns a readable name for this type - */ + /** Returns a readable name for this type */ public String name() { return name; } @@ -73,9 +151,7 @@ public String toString() { return name + " (" + nativeCode + ")"; } - /** - * Returns the numeric code for this datatype, as recognized by the native library (C API) - */ + /** Returns the numeric code for this datatype, as recognized by the native library (C API) */ int nativeCode() { return nativeCode; } From 07a83a5aef5a25f385aa762e3bb929e22c8052e3 Mon Sep 17 00:00:00 2001 From: Jim Clarke Date: Thu, 20 Aug 2020 08:17:40 -0400 Subject: [PATCH 04/33] Added method WriteFieldWithInitializer to output a "final static String OP_NAME" to each generated operation. --- .../src/bazel/op_generator/op_generator.cc | 7 +++++++ .../src/bazel/op_generator/source_writer.cc | 16 ++++++++++++++++ .../src/bazel/op_generator/source_writer.h | 5 ++++- 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/tensorflow-core/tensorflow-core-api/src/bazel/op_generator/op_generator.cc b/tensorflow-core/tensorflow-core-api/src/bazel/op_generator/op_generator.cc index f0fb802d548..03db4be125b 100644 --- a/tensorflow-core/tensorflow-core-api/src/bazel/op_generator/op_generator.cc +++ b/tensorflow-core/tensorflow-core-api/src/bazel/op_generator/op_generator.cc @@ -509,6 +509,13 @@ void GenerateOp(const OpSpec& op, const EndpointSpec& endpoint, RenderInterfaceImpl(op, mode, &writer); } writer.EndLine(); + + Variable nameVariable = Variable::Create("OP_NAME", Type::Class("String")); + Javadoc name_javadoc = Javadoc::Create("The name of this op, as known by TensorFlow core engine"); + string quoted_string = "\"" + op.graph_op_name() + "\""; + writer.WriteFieldWithInitializer(nameVariable, PUBLIC|STATIC|FINAL, &name_javadoc, quoted_string ); + writer.EndLine(); + for (const ArgumentSpec& output : op.outputs()) { writer.WriteField(output.var(), PRIVATE); } diff --git a/tensorflow-core/tensorflow-core-api/src/bazel/op_generator/source_writer.cc b/tensorflow-core/tensorflow-core-api/src/bazel/op_generator/source_writer.cc index 63191c080ac..8598b1d945d 100644 --- a/tensorflow-core/tensorflow-core-api/src/bazel/op_generator/source_writer.cc +++ b/tensorflow-core/tensorflow-core-api/src/bazel/op_generator/source_writer.cc @@ -238,6 +238,22 @@ SourceWriter& SourceWriter::WriteField(const Variable& field, int modifiers, return *this; } +SourceWriter& SourceWriter::WriteFieldWithInitializer(const Variable& field, + int modifiers, const Javadoc* javadoc, const string& initializer) { + // If present, write field javadoc only as one brief line + if (javadoc != nullptr && !javadoc->brief().empty()) { + Append("/** ").Append(javadoc->brief()).Append(" */").EndLine(); + } + WriteModifiers(modifiers); + if (!initializer.empty()) + AppendType(field.type()).Append(" ").Append(field.name()). + Append(" = ").Append(initializer).Append(";"); + else + AppendType(field.type()).Append(" ").Append(field.name()).Append(";"); + EndLine(); + return *this; +} + SourceWriter& SourceWriter::WriteModifiers(int modifiers) { if (modifiers & PUBLIC) { Append("public "); diff --git a/tensorflow-core/tensorflow-core-api/src/bazel/op_generator/source_writer.h b/tensorflow-core/tensorflow-core-api/src/bazel/op_generator/source_writer.h index 73f487bb46c..097887083e7 100644 --- a/tensorflow-core/tensorflow-core-api/src/bazel/op_generator/source_writer.h +++ b/tensorflow-core/tensorflow-core-api/src/bazel/op_generator/source_writer.h @@ -153,6 +153,9 @@ class SourceWriter { SourceWriter& WriteField(const Variable& field, int modifiers, const Javadoc* javadoc = nullptr); + SourceWriter& WriteFieldWithInitializer(const Variable& field, + int modifiers, const Javadoc* javadoc = nullptr, const string& initializer = nullptr); + protected: virtual void DoAppend(const StringPiece& str) = 0; @@ -161,7 +164,7 @@ class SourceWriter { class TypeVisitor { public: virtual ~TypeVisitor() = default; - void Visit(const Type& type); + void Visit(const Type& type); protected: virtual void DoVisit(const Type& type) = 0; From 3d26831bab64cc4fdd2340403cafa229f0fb7099 Mon Sep 17 00:00:00 2001 From: Jim Clarke Date: Thu, 20 Aug 2020 09:52:13 -0400 Subject: [PATCH 05/33] Added tf.nn.softmaxCrossEntropyWitLogits() and tf.nn.raw.softmaxCrossEntropyWitLogits() Added tf.nn.sparesSoftmaxCrossEntropyWithLogits() and tf.nn.raw.sparesSoftmaxCrossEntropyWithLogits() Added tf.nn.sigmoidCrossEntropyWithLogits() --- ...pi_def_SoftmaxCrossEntropyWithLogits.pbtxt | 2 +- ..._SparseSoftmaxCrossEntropyWithLogits.pbtxt | 2 +- .../main/java/org/tensorflow/op/core/NN.java | 379 ++++++++++++++++++ 3 files changed, 381 insertions(+), 2 deletions(-) create mode 100644 tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/core/NN.java diff --git a/tensorflow-core/tensorflow-core-api/src/bazel/api_def/api_def_SoftmaxCrossEntropyWithLogits.pbtxt b/tensorflow-core/tensorflow-core-api/src/bazel/api_def/api_def_SoftmaxCrossEntropyWithLogits.pbtxt index e064562c0f2..5dba2164cd6 100644 --- a/tensorflow-core/tensorflow-core-api/src/bazel/api_def/api_def_SoftmaxCrossEntropyWithLogits.pbtxt +++ b/tensorflow-core/tensorflow-core-api/src/bazel/api_def/api_def_SoftmaxCrossEntropyWithLogits.pbtxt @@ -1,6 +1,6 @@ op { graph_op_name: "SoftmaxCrossEntropyWithLogits" endpoint { - name: "nn.SoftmaxCrossEntropyWithLogits" + name: "nn.raw.SoftmaxCrossEntropyWithLogits" } } diff --git a/tensorflow-core/tensorflow-core-api/src/bazel/api_def/api_def_SparseSoftmaxCrossEntropyWithLogits.pbtxt b/tensorflow-core/tensorflow-core-api/src/bazel/api_def/api_def_SparseSoftmaxCrossEntropyWithLogits.pbtxt index 7627d5f6074..cf80ff77565 100644 --- a/tensorflow-core/tensorflow-core-api/src/bazel/api_def/api_def_SparseSoftmaxCrossEntropyWithLogits.pbtxt +++ b/tensorflow-core/tensorflow-core-api/src/bazel/api_def/api_def_SparseSoftmaxCrossEntropyWithLogits.pbtxt @@ -1,6 +1,6 @@ op { graph_op_name: "SparseSoftmaxCrossEntropyWithLogits" endpoint { - name: "nn.SparseSoftmaxCrossEntropyWithLogits" + name: "nn.raw.SparseSoftmaxCrossEntropyWithLogits" } } diff --git a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/core/NN.java b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/core/NN.java new file mode 100644 index 00000000000..b4fa7bd01de --- /dev/null +++ b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/core/NN.java @@ -0,0 +1,379 @@ +package org.tensorflow.op.core; + +import org.tensorflow.DataType; +import org.tensorflow.Operand; +import org.tensorflow.ndarray.Shape; +import org.tensorflow.op.Op; +import org.tensorflow.op.Scope; +import org.tensorflow.op.annotation.Endpoint; +import org.tensorflow.op.annotation.Operator; +import org.tensorflow.op.math.*; +import org.tensorflow.op.nn.raw.SoftmaxCrossEntropyWithLogits; +import org.tensorflow.op.nn.raw.SparseSoftmaxCrossEntropyWithLogits; +import org.tensorflow.types.*; +import org.tensorflow.types.family.TNumber; +import org.tensorflow.op.dtypes.Cast; +import org.tensorflow.types.family.TType; +import org.tensorflow.op.linalg.Transpose; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +@Operator(group = "nn") +public abstract class NN { + + /** + * Computes softmax cross entropy between `logits` and `labels`. + * + *

Measures the probability error in discrete classification tasks in which the classes are + * mutually exclusive (each entry is in exactly one class). For example, each CIFAR-10 image is + * labeled with one and only one label: an image can be a dog or a truck, but not both. + * + *

**NOTE:** While the classes are mutually exclusive, their probabilities need not be. All + * that is required is that each row of `labels` is a valid probability distribution. If they are + * not, the computation of the gradient will be incorrect. + * + *

If using exclusive `labels` (wherein one and only one class is true at a time), see + * `sparse_softmax_cross_entropy_with_logits`. + * + *

Usage: + * + *

+   *   >>> logits = [[4.0, 2.0, 1.0], [0.0, 5.0, 1.0]]
+   *   >>> labels = [[1.0, 0.0, 0.0], [0.0, 0.8, 0.2]]
+   *   >>> tf.nn.softmax_cross_entropy_with_logits(labels=labels, logits=logits)
+   *   
+   * 
+ * + *

Backpropagation will happen into both `logits` and `labels`. To disallow backpropagation + * into `labels`, pass label tensors through `tf.stop_gradient` before feeding it to this + * function. + * + * @param scope current scope + * @param labels Each vector along the class dimension should hold a valid probability + * distribution e.g. for the case in which labels are of shape `[batch_size, num_classes]`, + * each row of `labels[i]` must be a valid probability distribution. + * @param logits Per-label activations, typically a linear output. These activation energies are + * interpreted as unnormalized log probabilities. + * @param axis The class dimension. -1 is the last dimension. + * @param the data type of the logits + * @param the number type of the operands + * @return the softmax cross entropy loss. Its type is the same as `logits` and its shape is the + * same as `labels` except that it does not have the last dimension of `labels`. + */ + @Endpoint(name = "softmaxCrossEntropyWithLogits") + public static Operand softmaxCrossEntropyWithLogits( + Scope scope, Operand labels, Operand logits, int axis) { + axis = axis % logits.asOutput().shape().numDimensions(); + if (axis < 0) { + axis += logits.asOutput().shape().numDimensions(); + } + + Operand precise_logits = + logits; // cannot use generics cause logits of bool gets cast to TFloat32 + + boolean convertToFloat32 = + logits.asOutput().dataType() == TFloat16.DTYPE + || logits.asOutput().dataType() == TBfloat16.DTYPE; + if (convertToFloat32) { + precise_logits = Cast.create(scope, logits, TFloat32.DTYPE); + } + /* cannot use generics on DataType because precis_logits may have been cast. */ + DataType dtype = precise_logits.asOutput().dataType(); + labels = Cast.create(scope, labels, dtype); + Operand inputRank = + Cast.create(scope, Rank.create(scope, precise_logits), TInt64.DTYPE); + Shape shape = logits.asOutput().shape(); + + // Move the dim to the end if dim is not the last dimension. + if (axis != -1 && axis != precise_logits.asOutput().shape().numDimensions() - 1) { + precise_logits = moveDimToEnd(scope, precise_logits, axis, inputRank); + labels = moveDimToEnd(scope, labels, axis, inputRank); + } + + Shape inputShape = precise_logits.asOutput().shape(); + precise_logits = flattenOuterDims(scope, precise_logits); + labels = flattenOuterDims(scope, labels); + SoftmaxCrossEntropyWithLogits smax = + SoftmaxCrossEntropyWithLogits.create(scope, precise_logits, labels); + /* cannot use generic on cost, because cost may be recast later. */ + Operand cost = smax.loss(); + Operand outputShape = + Slice.create( + scope, + Constant.vectorOf(scope, inputShape.asArray()), + Constant.vectorOf(scope, new long[] {0}), + Constant.vectorOf(scope, new long[] {inputShape.numDimensions() - 1})); + cost = Reshape.create(scope, cost, outputShape); + if (scope.env().isGraph() && !shape.hasUnknownDimension()) { + long[] array = shape.asArray(); + long[] newArray = new long[array.length - 1]; + if (axis < 0) { + axis = shape.numDimensions() + axis; + } + for (int i = 0; i < axis; i++) { + newArray[i] = shape.size(i); + } + for (int i = axis + 1; i < shape.numDimensions(); i++) { + newArray[i - 1] = shape.size(i); + } + Shape newShape = Shape.of(newArray); + cost = Reshape.create(scope, cost, Constant.vectorOf(scope, newShape.asArray())); + } + + if (convertToFloat32) { + cost = Cast.create(scope, cost, logits.asOutput().dataType()); + } + return cost; + } + + /** + * Computes sparse softmax cross entropy between `logits` and `labels`. + * + * @param scope current scope + * @param labels `Tensor` of shape `[d_0, d_1, ..., d_{r-1}]` (where `r` is rank of `labels` and + * result) and dtype `int32` or `int64`. Each entry in `labels` must be an index in `[0, + * num_classes)`. Other values will raise an exception when this op is run on CPU, and return + * `NaN` for corresponding loss and gradient rows on GPU. + * @param logits Per-label activations (typically a linear output) of shape `[d_0, d_1, ..., + * d_{r-1}, num_classes]` and dtype `float16`, `float32`, or `float64`. These activation + * energies are interpreted as unnormalized log probabilities. + * @return A `Tensor` of the same shape as `labels` and of the same type as `logits` with the + * softmax cross entropy loss. + */ + @Endpoint(name = "sparseSoftmaxCrossEntropyWithLogits") + public static Operand sparseSoftmaxCrossEntropyWithLogits( + Scope scope, Operand labels, Operand logits) { + // assert shapeIsCompatible(labels.asOutput().shape(), logits.asOutput().shape()): + // String.format("Shapes %s and %s are incompatible", + // labels.asOutput().shape(), logits.asOutput().shape()); + scope = scope.withSubScope("SparseSoftmaxCrossEntropyWithLogits"); + /** cannot use generics on precise_logits as it may be recast later */ + Operand precise_logits = logits; + boolean convertToFloat32 = + logits.asOutput().dataType() == TFloat16.DTYPE + || logits.asOutput().dataType() == TBfloat16.DTYPE; + if (convertToFloat32) { + precise_logits = Cast.create(scope, logits, TFloat32.DTYPE); + } + Shape labelsStaticShape = labels.asOutput().shape(); + org.tensorflow.op.core.Shape labelsShape = + org.tensorflow.op.core.Shape.create(scope, labels); + Shape logitsShape = logits.asOutput().shape(); + Shape logitsShortened = logitsShape.take(logitsShape.numDimensions() - 1); + + boolean staticShapesFullyDefined = + !labelsStaticShape.hasUnknownDimension() && !logitsShortened.hasUnknownDimension(); + if (logitsShape.numDimensions() == 0) { + throw new IllegalArgumentException( + String.format("Logits cannot be scalars - received shape %s.", logitsShape)); + } + if (!logitsShape.hasUnknownDimension() + && !labelsStaticShape.hasUnknownDimension() + && labelsStaticShape.numDimensions() != logitsShape.numDimensions() - 1) { + throw new IllegalArgumentException( + String.format( + "Rank mismatch: Rank of labels (received %s) should equal rank of logits minus 1 (received %s).", + labelsStaticShape.toString(), logitsShape.toString())); + } + + if (staticShapesFullyDefined && !labelsStaticShape.equals(logitsShortened)) { + throw new IllegalArgumentException( + String.format( + "Shape mismatch: The shape of labels (received %s) " + + "should equal the shape of logits except for the last " + + "dimension (received %s).", + labelsStaticShape.toString(), logitsShape.toString())); + } + // Check if no reshapes are required. + if (logitsShape.numDimensions() == 2) { + SparseSoftmaxCrossEntropyWithLogits smax = + SparseSoftmaxCrossEntropyWithLogits.create(scope, precise_logits, labels); + Operand loss = smax.loss(); + if (logits.asOutput().dataType() == TFloat16.DTYPE) { + loss = Cast.create(scope, loss, TFloat16.DTYPE); + } + return loss; + } + + List shapeChecks = new ArrayList<>(); + + if (!staticShapesFullyDefined) { + shapeChecks.add( + AssertThat.create( + scope, + Equal.create( + scope, + org.tensorflow.op.core.Shape.create(scope, labels), + Shapes.take( + scope, + org.tensorflow.op.core.Shape.create(scope, logits), + Constant.scalarOf(scope, -1))), + Collections.singletonList( + Constant.scalarOf( + scope, + "Shape mismatch: The shape of labels " + + "should equal the shape of logits except for the last " + + "dimension ")))); + } + + // Reshape logits to 2 dim, labels to 1 dim. + long numClassses = logitsShape.size(logitsShape.numDimensions() - 1); + + precise_logits = + Reshape.create( + scope, precise_logits, Constant.vectorOf(scope, new long[] {-1, numClassses})); + labels = Reshape.create(scope, labels, Constant.scalarOf(scope, -1)); + scope.withControlDependencies(shapeChecks); + SparseSoftmaxCrossEntropyWithLogits smax = + SparseSoftmaxCrossEntropyWithLogits.create(scope, precise_logits, labels); + Operand cost = smax.loss(); + cost = Reshape.create(scope, cost, labelsShape); + if (logits.asOutput().dataType() == TFloat16.DTYPE) { + cost = Cast.create(scope, cost, TFloat16.DTYPE); + } + return cost; + } + + /** + * Computes sigmoid cross entropy given `logits`. + * + *

Measures the probability error in discrete classification tasks in which each class is + * independent and not mutually exclusive. For instance, one could perform multilabel + * classification where a picture can contain both an elephant and a dog at the same time. + * + *

For brevity, let `x = logits`, `z = labels`. The logistic loss is + * + *

+   *     z * -log(sigmoid(x)) + (1 - z) * -log(1 - sigmoid(x))
+   *     = z * -log(1 / (1 + exp(-x))) + (1 - z) * -log(exp(-x) / (1 + exp(-x)))
+   *     = z * log(1 + exp(-x)) + (1 - z) * (-log(exp(-x)) + log(1 + exp(-x)))
+   *     = z * log(1 + exp(-x)) + (1 - z) * (x + log(1 + exp(-x))
+   *     = (1 - z) * x + log(1 + exp(-x))
+   *     = x - x * z + log(1 + exp(-x))
+   * 
+ * + *

For x < 0, to avoid overflow in exp(-x), we reformulate the above + * + *

+   *      x - x * z + log(1 + exp(-x))
+   *      = log(exp(x)) - x * z + log(1 + exp(-x))
+   *      = - x * z + log(1 + exp(x))
+   * 
+ * + *

Hence, to ensure stability and avoid overflow, the implementation uses this equivalent + * formulation + * + *

+   *     max(x, 0) - x * z + log(1 + exp(-abs(x)))
+   * 
+ * + *

`logits` and `labels` must have the same type and shape. + * + * @param scope The TensorFlow scope + * @param labels the labels + * @param logits the logits of type float32 or float64 + * @param the type of labels and logits + * @return the component-wise logistic losses. + */ + @Endpoint(name = "sigmoidCrossEntropyWithLogits") + public static Operand sigmoidCrossEntropyWithLogits( + Scope scope, Operand labels, Operand logits) { + if (labels.asOutput().shape().numDimensions() != logits.asOutput().shape().numDimensions()) + throw new IllegalArgumentException( + String.format( + "logits and labels must have the same shape (%s vs %s)", + labels.asOutput().shape().toString(), logits.asOutput().shape())); + Operand zeros = + Cast.create(scope, ZerosLike.create(scope, logits), logits.asOutput().dataType()); + Operand cond = GreaterEqual.create(scope, logits, zeros); + + Operand relu_logits = Select.create(scope, cond, logits, zeros); + Operand neg_abs_logits = Select.create(scope, cond, Neg.create(scope, logits), logits); + return Add.create( + scope, + Sub.create(scope, relu_logits, Mul.create(scope, logits, labels)), + Log1p.create(scope, Exp.create(scope, neg_abs_logits))); + } + + /** + * Flattens logits' outer dimensions and keep its last dimension. + * + * @param scope the TensorFlow scope + * @param logits the logits + * @param the type of logits + * @return the flattened logits + */ + private static Operand flattenOuterDims(Scope scope, Operand logits) { + Operand one = Constant.scalarOf(scope, 1L); + + org.tensorflow.ndarray.Shape shape = logits.asOutput().shape(); + int ndims = shape.numDimensions(); + if (!shape.hasUnknownDimension()) { + long product = 1L; + boolean productValid = true; + for (int i = ndims - 2; i >= 0; i--) { + long d = shape.size(i); + if (d == org.tensorflow.ndarray.Shape.UNKNOWN_SIZE) { + productValid = false; + break; + } + product *= d; + } + if (productValid) { + org.tensorflow.ndarray.Shape outputShape = Shape.of(product, shape.size(ndims - 1)); + return Reshape.create(scope, logits, Constant.vectorOf(scope, outputShape.asArray())); + } + } + + Operand rank = Cast.create(scope, Rank.create(scope, logits), TInt64.DTYPE); + Operand rankMinusOne = Sub.create(scope, rank, one); + + Operand last_dim_size = + Slice.create( + scope, + org.tensorflow.op.core.Shape.create(scope, logits, TInt64.DTYPE), + rankMinusOne, + one); + Operand concat = + Concat.create( + scope, + Arrays.asList(Constant.vectorOf(scope, new long[] {-1}), last_dim_size), + Constant.scalarOf(scope, 0)); + return Reshape.create(scope, logits, concat); + } + + /** + * Move the dim to the end if dim is not the last dimension. + * + * @param scope The TensorFlow Scope + * @param input the input to reshape + * @param dim_index the index to move + * @param rank the number of Dimensions in the tensor + * @param the data type of the tensor. + * @param the data type of the rank + * @return the reshaped input + */ + private static Operand moveDimToEnd( + Scope scope, Operand input, int dim_index, Operand rank) { + DataType rankDType = rank.asOutput().dataType(); + Operand one = Cast.create(scope, Constant.scalarOf(scope, 1), rankDType); + List> concatList = + Arrays.asList( + Range.create( + scope, + Cast.create(scope, Constant.scalarOf(scope, dim_index), rankDType), + one, + one), + Range.create( + scope, + Cast.create(scope, Constant.scalarOf(scope, (dim_index + 1)), rankDType), + rank, + one)); + return Transpose.create( + scope, input, Concat.create(scope, concatList, Constant.scalarOf(scope, 0))); + } +} From 11cda5fde99a6bec21fb04ed1465934ec1889485 Mon Sep 17 00:00:00 2001 From: Jim Clarke Date: Thu, 20 Aug 2020 09:58:05 -0400 Subject: [PATCH 06/33] Moved SoftmaxCrossEntropyWithLogits and SparseSoftmaxCrossEntropyWithLogits to org.tensorflow.op.nn.raw --- .../nn/raw/SoftmaxCrossEntropyWithLogits.java | 86 ++++++++++++++++++ .../SparseSoftmaxCrossEntropyWithLogits.java | 90 +++++++++++++++++++ 2 files changed, 176 insertions(+) create mode 100644 tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/raw/SoftmaxCrossEntropyWithLogits.java create mode 100644 tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/raw/SparseSoftmaxCrossEntropyWithLogits.java diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/raw/SoftmaxCrossEntropyWithLogits.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/raw/SoftmaxCrossEntropyWithLogits.java new file mode 100644 index 00000000000..4c23683d9ef --- /dev/null +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/raw/SoftmaxCrossEntropyWithLogits.java @@ -0,0 +1,86 @@ +/* Copyright 2018 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ + +// This class has been generated, DO NOT EDIT! + +package org.tensorflow.op.nn.raw; + +import org.tensorflow.Operand; +import org.tensorflow.Operation; +import org.tensorflow.OperationBuilder; +import org.tensorflow.Output; +import org.tensorflow.op.RawOp; +import org.tensorflow.op.Scope; +import org.tensorflow.op.annotation.Endpoint; +import org.tensorflow.op.annotation.Operator; +import org.tensorflow.types.family.TNumber; +import org.tensorflow.types.family.TType; + +/** + * Computes softmax cross entropy cost and gradients to backpropagate. + *

+ * Inputs are the logits, not probabilities. + * + * @param data type for {@code loss()} output + */ +@Operator(group = "nn.raw") +public final class SoftmaxCrossEntropyWithLogits extends RawOp { + + /** + * Factory method to create a class wrapping a new SoftmaxCrossEntropyWithLogits operation. + * + * @param scope current scope + * @param features batch_size x num_classes matrix + * @param labels batch_size x num_classes matrix + * The caller must ensure that each batch of labels represents a valid + * probability distribution. + * @return a new instance of SoftmaxCrossEntropyWithLogits + */ + @Endpoint(describeByClass = true) + public static SoftmaxCrossEntropyWithLogits create(Scope scope, Operand features, Operand labels) { + OperationBuilder opBuilder = scope.env().opBuilder("SoftmaxCrossEntropyWithLogits", scope.makeOpName("SoftmaxCrossEntropyWithLogits")); + opBuilder.addInput(features.asOutput()); + opBuilder.addInput(labels.asOutput()); + opBuilder = scope.applyControlDependencies(opBuilder); + return new SoftmaxCrossEntropyWithLogits(opBuilder.build()); + } + + /** + * Per example loss (batch_size vector). + */ + public Output loss() { + return loss; + } + + /** + * backpropagated gradients (batch_size x num_classes matrix). + */ + public Output backprop() { + return backprop; + } + + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SoftmaxCrossEntropyWithLogits"; + + private Output loss; + private Output backprop; + + private SoftmaxCrossEntropyWithLogits(Operation operation) { + super(operation); + int outputIdx = 0; + loss = operation.output(outputIdx++); + backprop = operation.output(outputIdx++); + } +} diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/raw/SparseSoftmaxCrossEntropyWithLogits.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/raw/SparseSoftmaxCrossEntropyWithLogits.java new file mode 100644 index 00000000000..e7cb45231de --- /dev/null +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/raw/SparseSoftmaxCrossEntropyWithLogits.java @@ -0,0 +1,90 @@ +/* Copyright 2018 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +=======================================================================*/ + +// This class has been generated, DO NOT EDIT! + +package org.tensorflow.op.nn.raw; + +import org.tensorflow.Operand; +import org.tensorflow.Operation; +import org.tensorflow.OperationBuilder; +import org.tensorflow.Output; +import org.tensorflow.op.RawOp; +import org.tensorflow.op.Scope; +import org.tensorflow.op.annotation.Endpoint; +import org.tensorflow.op.annotation.Operator; +import org.tensorflow.types.family.TNumber; +import org.tensorflow.types.family.TType; + +/** + * Computes softmax cross entropy cost and gradients to backpropagate. + *

+ * Unlike `SoftmaxCrossEntropyWithLogits`, this operation does not accept + * a matrix of label probabilities, but rather a single label per row + * of features. This label is considered to have probability 1.0 for the + * given row. + *

+ * Inputs are the logits, not probabilities. + * + * @param data type for {@code loss()} output + */ +@Operator(group = "nn.raw") +public final class SparseSoftmaxCrossEntropyWithLogits extends RawOp { + + /** + * Factory method to create a class wrapping a new SparseSoftmaxCrossEntropyWithLogits operation. + * + * @param scope current scope + * @param features batch_size x num_classes matrix + * @param labels batch_size vector with values in [0, num_classes). + * This is the label for the given minibatch entry. + * @return a new instance of SparseSoftmaxCrossEntropyWithLogits + */ + @Endpoint(describeByClass = true) + public static SparseSoftmaxCrossEntropyWithLogits create(Scope scope, Operand features, Operand labels) { + OperationBuilder opBuilder = scope.env().opBuilder("SparseSoftmaxCrossEntropyWithLogits", scope.makeOpName("SparseSoftmaxCrossEntropyWithLogits")); + opBuilder.addInput(features.asOutput()); + opBuilder.addInput(labels.asOutput()); + opBuilder = scope.applyControlDependencies(opBuilder); + return new SparseSoftmaxCrossEntropyWithLogits(opBuilder.build()); + } + + /** + * Per example loss (batch_size vector). + */ + public Output loss() { + return loss; + } + + /** + * backpropagated gradients (batch_size x num_classes matrix). + */ + public Output backprop() { + return backprop; + } + + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseSoftmaxCrossEntropyWithLogits"; + + private Output loss; + private Output backprop; + + private SparseSoftmaxCrossEntropyWithLogits(Operation operation) { + super(operation); + int outputIdx = 0; + loss = operation.output(outputIdx++); + backprop = operation.output(outputIdx++); + } +} From 9c7dfaa92815bf85cbf97febcbb61e1aaf707142 Mon Sep 17 00:00:00 2001 From: Jim Clarke Date: Thu, 20 Aug 2020 10:00:25 -0400 Subject: [PATCH 07/33] Generated classes now have public static final String OP_NAME = "XXXXXXXX"; --- .../src/gen/java/org/tensorflow/op/nn/AvgPool.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/AvgPool3d.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/AvgPool3dGrad.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/AvgPoolGrad.java | 3 +++ .../org/tensorflow/op/nn/BatchNormWithGlobalNormalization.java | 3 +++ .../tensorflow/op/nn/BatchNormWithGlobalNormalizationGrad.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/BiasAdd.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/BiasAddGrad.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/BlockLSTM.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/BlockLSTMGrad.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/CTCLossV2.java | 3 +++ .../gen/java/org/tensorflow/op/nn/ComputeAccidentalHits.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/Conv2d.java | 3 +++ .../gen/java/org/tensorflow/op/nn/Conv2dBackpropFilter.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/Conv2dBackpropInput.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/Conv3d.java | 3 +++ .../gen/java/org/tensorflow/op/nn/Conv3dBackpropFilter.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/Conv3dBackpropInput.java | 3 +++ .../gen/java/org/tensorflow/op/nn/CtcBeamSearchDecoder.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/CtcGreedyDecoder.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/CtcLoss.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/CudnnRNN.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/CudnnRNNBackprop.java | 3 +++ .../java/org/tensorflow/op/nn/CudnnRNNCanonicalToParams.java | 3 +++ .../java/org/tensorflow/op/nn/CudnnRNNParamsToCanonical.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/CudnnRnnParamsSize.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/DataFormatDimMap.java | 3 +++ .../gen/java/org/tensorflow/op/nn/DataFormatVecPermute.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/DepthToSpace.java | 3 +++ .../gen/java/org/tensorflow/op/nn/DepthwiseConv2dNative.java | 3 +++ .../tensorflow/op/nn/DepthwiseConv2dNativeBackpropFilter.java | 3 +++ .../tensorflow/op/nn/DepthwiseConv2dNativeBackpropInput.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/Dilation2d.java | 3 +++ .../java/org/tensorflow/op/nn/Dilation2dBackpropFilter.java | 3 +++ .../gen/java/org/tensorflow/op/nn/Dilation2dBackpropInput.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/Elu.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/EluGrad.java | 3 +++ .../org/tensorflow/op/nn/FixedUnigramCandidateSampler.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/FractionalAvgPool.java | 3 +++ .../gen/java/org/tensorflow/op/nn/FractionalAvgPoolGrad.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/FractionalMaxPool.java | 3 +++ .../gen/java/org/tensorflow/op/nn/FractionalMaxPoolGrad.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/FusedBatchNorm.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/FusedBatchNormGrad.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/FusedPadConv2d.java | 3 +++ .../gen/java/org/tensorflow/op/nn/FusedResizeAndPadConv2d.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/GRUBlockCell.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/GRUBlockCellGrad.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/InTopK.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/InvGrad.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/L2Loss.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/LSTMBlockCell.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/LSTMBlockCellGrad.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/LeakyRelu.java | 3 +++ .../org/tensorflow/op/nn/LearnedUnigramCandidateSampler.java | 3 +++ .../java/org/tensorflow/op/nn/LocalResponseNormalization.java | 3 +++ .../org/tensorflow/op/nn/LocalResponseNormalizationGrad.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/LogSoftmax.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/MaxPool.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/MaxPool3d.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/MaxPool3dGrad.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/MaxPool3dGradGrad.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/MaxPoolGrad.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/MaxPoolGradGrad.java | 3 +++ .../java/org/tensorflow/op/nn/MaxPoolGradGradWithArgmax.java | 3 +++ .../gen/java/org/tensorflow/op/nn/MaxPoolGradWithArgmax.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/MaxPoolWithArgmax.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/NthElement.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/QuantizedAvgPool.java | 3 +++ .../op/nn/QuantizedBatchNormWithGlobalNormalization.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/QuantizedBiasAdd.java | 3 +++ .../gen/java/org/tensorflow/op/nn/QuantizedConv2DAndRelu.java | 3 +++ .../tensorflow/op/nn/QuantizedConv2DAndReluAndRequantize.java | 3 +++ .../org/tensorflow/op/nn/QuantizedConv2DAndRequantize.java | 3 +++ .../java/org/tensorflow/op/nn/QuantizedConv2DPerChannel.java | 3 +++ .../gen/java/org/tensorflow/op/nn/QuantizedConv2DWithBias.java | 3 +++ .../org/tensorflow/op/nn/QuantizedConv2DWithBiasAndRelu.java | 3 +++ .../op/nn/QuantizedConv2DWithBiasAndReluAndRequantize.java | 3 +++ .../tensorflow/op/nn/QuantizedConv2DWithBiasAndRequantize.java | 3 +++ .../QuantizedConv2DWithBiasSignedSumAndReluAndRequantize.java | 3 +++ .../tensorflow/op/nn/QuantizedConv2DWithBiasSumAndRelu.java | 3 +++ .../op/nn/QuantizedConv2DWithBiasSumAndReluAndRequantize.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/QuantizedConv2d.java | 3 +++ .../java/org/tensorflow/op/nn/QuantizedDepthwiseConv2D.java | 3 +++ .../org/tensorflow/op/nn/QuantizedDepthwiseConv2DWithBias.java | 3 +++ .../op/nn/QuantizedDepthwiseConv2DWithBiasAndRelu.java | 3 +++ .../QuantizedDepthwiseConv2DWithBiasAndReluAndRequantize.java | 3 +++ .../gen/java/org/tensorflow/op/nn/QuantizedInstanceNorm.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/QuantizedMaxPool.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/QuantizedRelu.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/QuantizedRelu6.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/QuantizedReluX.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/Relu.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/Relu6.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/Relu6Grad.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/ReluGrad.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/Selu.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/SeluGrad.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/Softmax.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/Softsign.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/SoftsignGrad.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/SpaceToBatch.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/SpaceToDepth.java | 3 +++ .../src/gen/java/org/tensorflow/op/nn/TopK.java | 3 +++ 104 files changed, 312 insertions(+) diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/AvgPool.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/AvgPool.java index de1a858b738..527d1a49713 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/AvgPool.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/AvgPool.java @@ -123,6 +123,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "AvgPool"; + private Output output; private AvgPool(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/AvgPool3d.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/AvgPool3d.java index 1700745d1ba..87467c8a982 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/AvgPool3d.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/AvgPool3d.java @@ -122,6 +122,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "AvgPool3D"; + private Output output; private AvgPool3d(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/AvgPool3dGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/AvgPool3dGrad.java index 9426ff8f682..3e34c87f9b6 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/AvgPool3dGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/AvgPool3dGrad.java @@ -125,6 +125,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "AvgPool3DGrad"; + private Output output; private AvgPool3dGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/AvgPoolGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/AvgPoolGrad.java index 9389f98ad3b..7ec252eaac0 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/AvgPoolGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/AvgPoolGrad.java @@ -123,6 +123,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "AvgPoolGrad"; + private Output output; private AvgPoolGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/BatchNormWithGlobalNormalization.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/BatchNormWithGlobalNormalization.java index 23cc0b463ba..6c30a52cf2e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/BatchNormWithGlobalNormalization.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/BatchNormWithGlobalNormalization.java @@ -83,6 +83,9 @@ public Output asOutput() { return result; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BatchNormWithGlobalNormalization"; + private Output result; private BatchNormWithGlobalNormalization(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/BatchNormWithGlobalNormalizationGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/BatchNormWithGlobalNormalizationGrad.java index fe2813b3342..be07a5eea25 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/BatchNormWithGlobalNormalizationGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/BatchNormWithGlobalNormalizationGrad.java @@ -106,6 +106,9 @@ public Output dg() { return dg; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BatchNormWithGlobalNormalizationGrad"; + private Output dx; private Output dm; private Output dv; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/BiasAdd.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/BiasAdd.java index 6296f75db61..462eaa6edc7 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/BiasAdd.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/BiasAdd.java @@ -113,6 +113,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BiasAdd"; + private Output output; private BiasAdd(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/BiasAddGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/BiasAddGrad.java index dcc2b537f65..df90cf9a2f3 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/BiasAddGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/BiasAddGrad.java @@ -112,6 +112,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BiasAddGrad"; + private Output output; private BiasAddGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/BlockLSTM.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/BlockLSTM.java index 22f0d16f540..79de4f2f88c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/BlockLSTM.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/BlockLSTM.java @@ -192,6 +192,9 @@ public Output h() { return h; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BlockLSTMV2"; + private Output i; private Output cs; private Output f; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/BlockLSTMGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/BlockLSTMGrad.java index e80bea4006d..4e49f23cb6e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/BlockLSTMGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/BlockLSTMGrad.java @@ -146,6 +146,9 @@ public Output bGrad() { return bGrad; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BlockLSTMGradV2"; + private Output xGrad; private Output csPrevGrad; private Output hPrevGrad; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CTCLossV2.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CTCLossV2.java index 918230851c3..c60fef4b2a7 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CTCLossV2.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CTCLossV2.java @@ -158,6 +158,9 @@ public Output gradient() { return gradient; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "CTCLossV2"; + private Output loss; private Output gradient; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/ComputeAccidentalHits.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/ComputeAccidentalHits.java index a11bb983ae9..f6daea0df2e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/ComputeAccidentalHits.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/ComputeAccidentalHits.java @@ -139,6 +139,9 @@ public Output weights() { return weights; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ComputeAccidentalHits"; + private Output indices; private Output ids; private Output weights; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Conv2d.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Conv2d.java index 632d54c3890..79f2022d807 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Conv2d.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Conv2d.java @@ -222,6 +222,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Conv2D"; + private Output output; private Conv2d(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Conv2dBackpropFilter.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Conv2dBackpropFilter.java index 91e147def81..9c145dc3d60 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Conv2dBackpropFilter.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Conv2dBackpropFilter.java @@ -205,6 +205,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Conv2DBackpropFilter"; + private Output output; private Conv2dBackpropFilter(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Conv2dBackpropInput.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Conv2dBackpropInput.java index 389ddb0be4e..492c4f2aebb 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Conv2dBackpropInput.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Conv2dBackpropInput.java @@ -204,6 +204,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Conv2DBackpropInput"; + private Output output; private Conv2dBackpropInput(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Conv3d.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Conv3d.java index 1e80fdb7f80..94ae4ffd2b5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Conv3d.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Conv3d.java @@ -154,6 +154,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Conv3D"; + private Output output; private Conv3d(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Conv3dBackpropFilter.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Conv3dBackpropFilter.java index d6d85797b3f..0d73e491717 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Conv3dBackpropFilter.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Conv3dBackpropFilter.java @@ -154,6 +154,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Conv3DBackpropFilterV2"; + private Output output; private Conv3dBackpropFilter(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Conv3dBackpropInput.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Conv3dBackpropInput.java index 08e163494bf..8b153890811 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Conv3dBackpropInput.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Conv3dBackpropInput.java @@ -153,6 +153,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Conv3DBackpropInputV2"; + private Output output; private Conv3dBackpropInput(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CtcBeamSearchDecoder.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CtcBeamSearchDecoder.java index 8d212909901..96f179641e7 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CtcBeamSearchDecoder.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CtcBeamSearchDecoder.java @@ -136,6 +136,9 @@ public Output logProbability() { return logProbability; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "CTCBeamSearchDecoder"; + private List> decodedIndices; private List> decodedValues; private List> decodedShape; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CtcGreedyDecoder.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CtcGreedyDecoder.java index eecea029a34..b8b35b8ceaa 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CtcGreedyDecoder.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CtcGreedyDecoder.java @@ -131,6 +131,9 @@ public Output logProbability() { return logProbability; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "CTCGreedyDecoder"; + private Output decodedIndices; private Output decodedValues; private Output decodedShape; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CtcLoss.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CtcLoss.java index b39f344373e..ceb60a4baf7 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CtcLoss.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CtcLoss.java @@ -161,6 +161,9 @@ public Output gradient() { return gradient; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "CTCLoss"; + private Output loss; private Output gradient; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CudnnRNN.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CudnnRNN.java index 9159d1c69c3..7cd9771acf1 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CudnnRNN.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CudnnRNN.java @@ -313,6 +313,9 @@ public Output hostReserved() { return hostReserved; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "CudnnRNNV3"; + private Output output; private Output outputH; private Output outputC; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CudnnRNNBackprop.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CudnnRNNBackprop.java index adeadb27292..3719c186716 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CudnnRNNBackprop.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CudnnRNNBackprop.java @@ -314,6 +314,9 @@ public Output paramsBackprop() { return paramsBackprop; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "CudnnRNNBackpropV3"; + private Output inputBackprop; private Output inputHBackprop; private Output inputCBackprop; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CudnnRNNCanonicalToParams.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CudnnRNNCanonicalToParams.java index 945fdacdf62..155cfd2c0a4 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CudnnRNNCanonicalToParams.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CudnnRNNCanonicalToParams.java @@ -251,6 +251,9 @@ public Output asOutput() { return params; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "CudnnRNNCanonicalToParamsV2"; + private Output params; private CudnnRNNCanonicalToParams(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CudnnRNNParamsToCanonical.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CudnnRNNParamsToCanonical.java index e7fbeebf99f..ea575f2d7a1 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CudnnRNNParamsToCanonical.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CudnnRNNParamsToCanonical.java @@ -255,6 +255,9 @@ public List> biases() { return biases; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "CudnnRNNParamsToCanonicalV2"; + private List> weights; private List> biases; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CudnnRnnParamsSize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CudnnRnnParamsSize.java index 6cff6fe9836..94421d0aa6e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CudnnRnnParamsSize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/CudnnRnnParamsSize.java @@ -242,6 +242,9 @@ public Output asOutput() { return paramsSize; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "CudnnRNNParamsSize"; + private Output paramsSize; private CudnnRnnParamsSize(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/DataFormatDimMap.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/DataFormatDimMap.java index eb82df7184c..6b1ff40761b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/DataFormatDimMap.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/DataFormatDimMap.java @@ -119,6 +119,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DataFormatDimMap"; + private Output y; private DataFormatDimMap(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/DataFormatVecPermute.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/DataFormatVecPermute.java index 5a04c0847c7..ba218c1923f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/DataFormatVecPermute.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/DataFormatVecPermute.java @@ -118,6 +118,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DataFormatVecPermute"; + private Output y; private DataFormatVecPermute(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/DepthToSpace.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/DepthToSpace.java index 523977a1db0..6456eff1f95 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/DepthToSpace.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/DepthToSpace.java @@ -177,6 +177,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DepthToSpace"; + private Output output; private DepthToSpace(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/DepthwiseConv2dNative.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/DepthwiseConv2dNative.java index 36277e498d5..8775abedbaa 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/DepthwiseConv2dNative.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/DepthwiseConv2dNative.java @@ -164,6 +164,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DepthwiseConv2dNative"; + private Output output; private DepthwiseConv2dNative(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/DepthwiseConv2dNativeBackpropFilter.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/DepthwiseConv2dNativeBackpropFilter.java index 074d37aba9b..bdbcf9f384b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/DepthwiseConv2dNativeBackpropFilter.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/DepthwiseConv2dNativeBackpropFilter.java @@ -160,6 +160,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DepthwiseConv2dNativeBackpropFilter"; + private Output output; private DepthwiseConv2dNativeBackpropFilter(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/DepthwiseConv2dNativeBackpropInput.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/DepthwiseConv2dNativeBackpropInput.java index 323890cbc1e..b5315e2ffde 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/DepthwiseConv2dNativeBackpropInput.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/DepthwiseConv2dNativeBackpropInput.java @@ -160,6 +160,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DepthwiseConv2dNativeBackpropInput"; + private Output output; private DepthwiseConv2dNativeBackpropInput(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Dilation2d.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Dilation2d.java index 984c4621881..c7135b20361 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Dilation2d.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Dilation2d.java @@ -106,6 +106,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Dilation2D"; + private Output output; private Dilation2d(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Dilation2dBackpropFilter.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Dilation2dBackpropFilter.java index 1e413d9a08c..9254ff8c285 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Dilation2dBackpropFilter.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Dilation2dBackpropFilter.java @@ -84,6 +84,9 @@ public Output asOutput() { return filterBackprop; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Dilation2DBackpropFilter"; + private Output filterBackprop; private Dilation2dBackpropFilter(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Dilation2dBackpropInput.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Dilation2dBackpropInput.java index 7d247c4288b..525e06182c5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Dilation2dBackpropInput.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Dilation2dBackpropInput.java @@ -84,6 +84,9 @@ public Output asOutput() { return inBackprop; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Dilation2DBackpropInput"; + private Output inBackprop; private Dilation2dBackpropInput(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Elu.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Elu.java index f138ee46ce3..daeef97895b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Elu.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Elu.java @@ -65,6 +65,9 @@ public Output asOutput() { return activations; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Elu"; + private Output activations; private Elu(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/EluGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/EluGrad.java index fd41f261813..664475879a0 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/EluGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/EluGrad.java @@ -65,6 +65,9 @@ public Output asOutput() { return backprops; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "EluGrad"; + private Output backprops; private EluGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FixedUnigramCandidateSampler.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FixedUnigramCandidateSampler.java index e99a41a2c56..25fd11071f9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FixedUnigramCandidateSampler.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FixedUnigramCandidateSampler.java @@ -312,6 +312,9 @@ public Output sampledExpectedCount() { return sampledExpectedCount; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "FixedUnigramCandidateSampler"; + private Output sampledCandidates; private Output trueExpectedCount; private Output sampledExpectedCount; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FractionalAvgPool.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FractionalAvgPool.java index 189f1b9c27c..101ea21ec8c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FractionalAvgPool.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FractionalAvgPool.java @@ -230,6 +230,9 @@ public Output colPoolingSequence() { return colPoolingSequence; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "FractionalAvgPool"; + private Output output; private Output rowPoolingSequence; private Output colPoolingSequence; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FractionalAvgPoolGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FractionalAvgPoolGrad.java index 26c06215c54..03ae0136311 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FractionalAvgPoolGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FractionalAvgPoolGrad.java @@ -128,6 +128,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "FractionalAvgPoolGrad"; + private Output output; private FractionalAvgPoolGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FractionalMaxPool.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FractionalMaxPool.java index 015b99a14eb..a621e037740 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FractionalMaxPool.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FractionalMaxPool.java @@ -254,6 +254,9 @@ public Output colPoolingSequence() { return colPoolingSequence; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "FractionalMaxPool"; + private Output output; private Output rowPoolingSequence; private Output colPoolingSequence; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FractionalMaxPoolGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FractionalMaxPoolGrad.java index cabbf2e038a..1b2bcc62dbf 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FractionalMaxPoolGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FractionalMaxPoolGrad.java @@ -124,6 +124,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "FractionalMaxPoolGrad"; + private Output output; private FractionalMaxPoolGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FusedBatchNorm.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FusedBatchNorm.java index 464ae92f2ae..04e8d71e1e5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FusedBatchNorm.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FusedBatchNorm.java @@ -205,6 +205,9 @@ public Output reserveSpace3() { return reserveSpace3; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "FusedBatchNormV3"; + private Output y; private Output batchMean; private Output batchVariance; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FusedBatchNormGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FusedBatchNormGrad.java index 52bd5e98084..4d2ecc74a4f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FusedBatchNormGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FusedBatchNormGrad.java @@ -187,6 +187,9 @@ public Output reserveSpace5() { return reserveSpace5; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "FusedBatchNormGradV3"; + private Output xBackprop; private Output scaleBackprop; private Output offsetBackprop; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FusedPadConv2d.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FusedPadConv2d.java index 11ec154a076..2d3de921f0b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FusedPadConv2d.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FusedPadConv2d.java @@ -93,6 +93,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "FusedPadConv2D"; + private Output output; private FusedPadConv2d(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FusedResizeAndPadConv2d.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FusedResizeAndPadConv2d.java index 4eda6e97eaa..02f82242c7a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FusedResizeAndPadConv2d.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/FusedResizeAndPadConv2d.java @@ -131,6 +131,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "FusedResizeAndPadConv2D"; + private Output output; private FusedResizeAndPadConv2d(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/GRUBlockCell.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/GRUBlockCell.java index 49c7d619410..446f43cfb0c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/GRUBlockCell.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/GRUBlockCell.java @@ -129,6 +129,9 @@ public Output h() { return h; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "GRUBlockCell"; + private Output r; private Output u; private Output c; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/GRUBlockCellGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/GRUBlockCellGrad.java index bea3442c6c9..4a6b72b8e4c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/GRUBlockCellGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/GRUBlockCellGrad.java @@ -173,6 +173,9 @@ public Output dRBarUBar() { return dRBarUBar; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "GRUBlockCellGrad"; + private Output dX; private Output dHPrev; private Output dCBar; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/InTopK.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/InTopK.java index 1255067ed44..d38388a3fd5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/InTopK.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/InTopK.java @@ -82,6 +82,9 @@ public Output asOutput() { return precision; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "InTopKV2"; + private Output precision; private InTopK(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/InvGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/InvGrad.java index b0df0c43ee0..161d8771b83 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/InvGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/InvGrad.java @@ -65,6 +65,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "InvGrad"; + private Output z; private InvGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/L2Loss.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/L2Loss.java index 91d141c787c..b38d9e99d96 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/L2Loss.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/L2Loss.java @@ -67,6 +67,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "L2Loss"; + private Output output; private L2Loss(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/LSTMBlockCell.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/LSTMBlockCell.java index a10d335bc0b..ab5d1b8aee2 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/LSTMBlockCell.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/LSTMBlockCell.java @@ -210,6 +210,9 @@ public Output h() { return h; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LSTMBlockCell"; + private Output i; private Output cs; private Output f; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/LSTMBlockCellGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/LSTMBlockCellGrad.java index bfb5dae0118..3635ec433d6 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/LSTMBlockCellGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/LSTMBlockCellGrad.java @@ -119,6 +119,9 @@ public Output wcoGrad() { return wcoGrad; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LSTMBlockCellGrad"; + private Output csPrevGrad; private Output dicfo; private Output wciGrad; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/LeakyRelu.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/LeakyRelu.java index 54579426b78..230b4238047 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/LeakyRelu.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/LeakyRelu.java @@ -95,6 +95,9 @@ public Output asOutput() { return activations; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LeakyRelu"; + private Output activations; private LeakyRelu(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/LearnedUnigramCandidateSampler.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/LearnedUnigramCandidateSampler.java index 017ee428cde..3f850ce672c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/LearnedUnigramCandidateSampler.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/LearnedUnigramCandidateSampler.java @@ -154,6 +154,9 @@ public Output sampledExpectedCount() { return sampledExpectedCount; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LearnedUnigramCandidateSampler"; + private Output sampledCandidates; private Output trueExpectedCount; private Output sampledExpectedCount; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/LocalResponseNormalization.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/LocalResponseNormalization.java index 0004fed685b..a560c9cfb58 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/LocalResponseNormalization.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/LocalResponseNormalization.java @@ -165,6 +165,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LRN"; + private Output output; private LocalResponseNormalization(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/LocalResponseNormalizationGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/LocalResponseNormalizationGrad.java index 24d769e571a..08f10c12f26 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/LocalResponseNormalizationGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/LocalResponseNormalizationGrad.java @@ -157,6 +157,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LRNGrad"; + private Output output; private LocalResponseNormalizationGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/LogSoftmax.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/LogSoftmax.java index 58035248560..bd1bff467a1 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/LogSoftmax.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/LogSoftmax.java @@ -67,6 +67,9 @@ public Output asOutput() { return logsoftmax; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LogSoftmax"; + private Output logsoftmax; private LogSoftmax(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPool.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPool.java index 4df68034706..f7b75951e31 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPool.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPool.java @@ -112,6 +112,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MaxPoolV2"; + private Output output; private MaxPool(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPool3d.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPool3d.java index c38fd7b341e..61bf43372cc 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPool3d.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPool3d.java @@ -122,6 +122,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MaxPool3D"; + private Output output; private MaxPool3d(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPool3dGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPool3dGrad.java index 8361c38b80a..7e11914cca2 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPool3dGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPool3dGrad.java @@ -125,6 +125,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MaxPool3DGrad"; + private Output output; private MaxPool3dGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPool3dGradGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPool3dGradGrad.java index 93407692efa..4243e1e5143 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPool3dGradGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPool3dGradGrad.java @@ -126,6 +126,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MaxPool3DGradGrad"; + private Output output; private MaxPool3dGradGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPoolGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPoolGrad.java index 7db3693e736..6f5cbd2ce64 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPoolGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPoolGrad.java @@ -117,6 +117,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MaxPoolGradV2"; + private Output output; private MaxPoolGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPoolGradGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPoolGradGrad.java index 9fee7af4c0e..4f9255e9286 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPoolGradGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPoolGradGrad.java @@ -117,6 +117,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MaxPoolGradGradV2"; + private Output output; private MaxPoolGradGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPoolGradGradWithArgmax.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPoolGradGradWithArgmax.java index 232f2ec18a8..6258024daa9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPoolGradGradWithArgmax.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPoolGradGradWithArgmax.java @@ -118,6 +118,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MaxPoolGradGradWithArgmax"; + private Output output; private MaxPoolGradGradWithArgmax(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPoolGradWithArgmax.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPoolGradWithArgmax.java index 8d1aa1da798..329c88b4d33 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPoolGradWithArgmax.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPoolGradWithArgmax.java @@ -117,6 +117,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MaxPoolGradWithArgmax"; + private Output output; private MaxPoolGradWithArgmax(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPoolWithArgmax.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPoolWithArgmax.java index 4eeb66cbc68..63f92de1fea 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPoolWithArgmax.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/MaxPoolWithArgmax.java @@ -147,6 +147,9 @@ public Output argmax() { return argmax; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MaxPoolWithArgmax"; + private Output output; private Output argmax; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/NthElement.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/NthElement.java index cf379fa5ecf..340cd4b98f7 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/NthElement.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/NthElement.java @@ -111,6 +111,9 @@ public Output asOutput() { return values; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "NthElement"; + private Output values; private NthElement(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedAvgPool.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedAvgPool.java index 9ac24133f7c..0da9f10b1ef 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedAvgPool.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedAvgPool.java @@ -92,6 +92,9 @@ public Output maxOutput() { return maxOutput; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizedAvgPool"; + private Output output; private Output minOutput; private Output maxOutput; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedBatchNormWithGlobalNormalization.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedBatchNormWithGlobalNormalization.java index dd5b716b401..41cc16017fc 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedBatchNormWithGlobalNormalization.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedBatchNormWithGlobalNormalization.java @@ -115,6 +115,9 @@ public Output resultMax() { return resultMax; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizedBatchNormWithGlobalNormalization"; + private Output result; private Output resultMin; private Output resultMax; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedBiasAdd.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedBiasAdd.java index 818c4455ac5..62a8002ad49 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedBiasAdd.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedBiasAdd.java @@ -86,6 +86,9 @@ public Output maxOut() { return maxOut; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizedBiasAdd"; + private Output output; private Output minOut; private Output maxOut; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DAndRelu.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DAndRelu.java index f1258c3ac71..961a4245155 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DAndRelu.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DAndRelu.java @@ -149,6 +149,9 @@ public Output maxOutput() { return maxOutput; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizedConv2DAndRelu"; + private Output output; private Output minOutput; private Output maxOutput; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DAndReluAndRequantize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DAndReluAndRequantize.java index 9a763e629d9..8b231edc09b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DAndReluAndRequantize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DAndReluAndRequantize.java @@ -153,6 +153,9 @@ public Output maxOutput() { return maxOutput; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizedConv2DAndReluAndRequantize"; + private Output output; private Output minOutput; private Output maxOutput; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DAndRequantize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DAndRequantize.java index ac1ca66f079..8c9f1247d97 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DAndRequantize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DAndRequantize.java @@ -153,6 +153,9 @@ public Output maxOutput() { return maxOutput; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizedConv2DAndRequantize"; + private Output output; private Output minOutput; private Output maxOutput; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DPerChannel.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DPerChannel.java index da2dfa6e491..efc0132e2a8 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DPerChannel.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DPerChannel.java @@ -131,6 +131,9 @@ public Output maxOutput() { return maxOutput; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizedConv2DPerChannel"; + private Output output; private Output minOutput; private Output maxOutput; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DWithBias.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DWithBias.java index da843bf735a..bc78b5b4ec1 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DWithBias.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DWithBias.java @@ -151,6 +151,9 @@ public Output maxOutput() { return maxOutput; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizedConv2DWithBias"; + private Output output; private Output minOutput; private Output maxOutput; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DWithBiasAndRelu.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DWithBiasAndRelu.java index 6176626745d..719150ee139 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DWithBiasAndRelu.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DWithBiasAndRelu.java @@ -151,6 +151,9 @@ public Output maxOutput() { return maxOutput; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizedConv2DWithBiasAndRelu"; + private Output output; private Output minOutput; private Output maxOutput; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DWithBiasAndReluAndRequantize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DWithBiasAndReluAndRequantize.java index d6700e175a5..a61cab41d5e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DWithBiasAndReluAndRequantize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DWithBiasAndReluAndRequantize.java @@ -155,6 +155,9 @@ public Output maxOutput() { return maxOutput; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizedConv2DWithBiasAndReluAndRequantize"; + private Output output; private Output minOutput; private Output maxOutput; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DWithBiasAndRequantize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DWithBiasAndRequantize.java index 7f8d24095e4..af89fd48962 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DWithBiasAndRequantize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DWithBiasAndRequantize.java @@ -155,6 +155,9 @@ public Output maxOutput() { return maxOutput; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizedConv2DWithBiasAndRequantize"; + private Output output; private Output minOutput; private Output maxOutput; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DWithBiasSignedSumAndReluAndRequantize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DWithBiasSignedSumAndReluAndRequantize.java index cc3d6cc73dc..cfa7770cf25 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DWithBiasSignedSumAndReluAndRequantize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DWithBiasSignedSumAndReluAndRequantize.java @@ -161,6 +161,9 @@ public Output maxOutput() { return maxOutput; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizedConv2DWithBiasSignedSumAndReluAndRequantize"; + private Output output; private Output minOutput; private Output maxOutput; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DWithBiasSumAndRelu.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DWithBiasSumAndRelu.java index 69759e0bc8a..1096fa12578 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DWithBiasSumAndRelu.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DWithBiasSumAndRelu.java @@ -153,6 +153,9 @@ public Output maxOutput() { return maxOutput; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizedConv2DWithBiasSumAndRelu"; + private Output output; private Output minOutput; private Output maxOutput; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DWithBiasSumAndReluAndRequantize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DWithBiasSumAndReluAndRequantize.java index e6d03b99188..55adb0e016d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DWithBiasSumAndReluAndRequantize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2DWithBiasSumAndReluAndRequantize.java @@ -161,6 +161,9 @@ public Output maxOutput() { return maxOutput; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizedConv2DWithBiasSumAndReluAndRequantize"; + private Output output; private Output minOutput; private Output maxOutput; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2d.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2d.java index c791a624c51..39913922bdb 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2d.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedConv2d.java @@ -145,6 +145,9 @@ public Output maxOutput() { return maxOutput; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizedConv2D"; + private Output output; private Output minOutput; private Output maxOutput; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedDepthwiseConv2D.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedDepthwiseConv2D.java index 2145de9c8eb..f64d9a7efbb 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedDepthwiseConv2D.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedDepthwiseConv2D.java @@ -131,6 +131,9 @@ public Output maxOutput() { return maxOutput; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizedDepthwiseConv2D"; + private Output output; private Output minOutput; private Output maxOutput; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedDepthwiseConv2DWithBias.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedDepthwiseConv2DWithBias.java index 5aa0d466d0e..be5e2bb8657 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedDepthwiseConv2DWithBias.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedDepthwiseConv2DWithBias.java @@ -133,6 +133,9 @@ public Output maxOutput() { return maxOutput; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizedDepthwiseConv2DWithBias"; + private Output output; private Output minOutput; private Output maxOutput; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedDepthwiseConv2DWithBiasAndRelu.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedDepthwiseConv2DWithBiasAndRelu.java index 46e628f2c29..8abd12b865f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedDepthwiseConv2DWithBiasAndRelu.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedDepthwiseConv2DWithBiasAndRelu.java @@ -156,6 +156,9 @@ public Output maxOutput() { return maxOutput; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizedDepthwiseConv2DWithBiasAndRelu"; + private Output output; private Output minOutput; private Output maxOutput; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedDepthwiseConv2DWithBiasAndReluAndRequantize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedDepthwiseConv2DWithBiasAndReluAndRequantize.java index 3a13eaaa567..78c8048266e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedDepthwiseConv2DWithBiasAndReluAndRequantize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedDepthwiseConv2DWithBiasAndReluAndRequantize.java @@ -160,6 +160,9 @@ public Output maxOutput() { return maxOutput; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizedDepthwiseConv2DWithBiasAndReluAndRequantize"; + private Output output; private Output minOutput; private Output maxOutput; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedInstanceNorm.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedInstanceNorm.java index ba393889984..839338a1458 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedInstanceNorm.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedInstanceNorm.java @@ -190,6 +190,9 @@ public Output yMax() { return yMax; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizedInstanceNorm"; + private Output y; private Output yMin; private Output yMax; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedMaxPool.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedMaxPool.java index 94c00253cc5..2cec96e411c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedMaxPool.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedMaxPool.java @@ -92,6 +92,9 @@ public Output maxOutput() { return maxOutput; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizedMaxPool"; + private Output output; private Output minOutput; private Output maxOutput; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedRelu.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedRelu.java index 9c9407e0b9a..308e14e9512 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedRelu.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedRelu.java @@ -79,6 +79,9 @@ public Output maxActivations() { return maxActivations; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizedRelu"; + private Output activations; private Output minActivations; private Output maxActivations; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedRelu6.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedRelu6.java index 150ec50779e..46f04fd5722 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedRelu6.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedRelu6.java @@ -79,6 +79,9 @@ public Output maxActivations() { return maxActivations; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizedRelu6"; + private Output activations; private Output minActivations; private Output maxActivations; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedReluX.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedReluX.java index 2d446c3a45d..e47a6a5c043 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedReluX.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/QuantizedReluX.java @@ -81,6 +81,9 @@ public Output maxActivations() { return maxActivations; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizedReluX"; + private Output activations; private Output minActivations; private Output maxActivations; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Relu.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Relu.java index 2facaa697ec..c6a515d4c75 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Relu.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Relu.java @@ -66,6 +66,9 @@ public Output asOutput() { return activations; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Relu"; + private Output activations; private Relu(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Relu6.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Relu6.java index f32eb410f00..e4e674b7e35 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Relu6.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Relu6.java @@ -62,6 +62,9 @@ public Output asOutput() { return activations; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Relu6"; + private Output activations; private Relu6(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Relu6Grad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Relu6Grad.java index 7cd8e3197e6..cf4edc9debf 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Relu6Grad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Relu6Grad.java @@ -66,6 +66,9 @@ public Output asOutput() { return backprops; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Relu6Grad"; + private Output backprops; private Relu6Grad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/ReluGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/ReluGrad.java index c467c606b69..d1c7cf7d44c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/ReluGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/ReluGrad.java @@ -65,6 +65,9 @@ public Output asOutput() { return backprops; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ReluGrad"; + private Output backprops; private ReluGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Selu.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Selu.java index dae469aa5a3..2ce8484b299 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Selu.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Selu.java @@ -70,6 +70,9 @@ public Output asOutput() { return activations; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Selu"; + private Output activations; private Selu(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/SeluGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/SeluGrad.java index 91389503235..514ad00b38d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/SeluGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/SeluGrad.java @@ -65,6 +65,9 @@ public Output asOutput() { return backprops; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SeluGrad"; + private Output backprops; private SeluGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Softmax.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Softmax.java index c1744627645..d9971b6667d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Softmax.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Softmax.java @@ -67,6 +67,9 @@ public Output asOutput() { return softmax; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Softmax"; + private Output softmax; private Softmax(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Softsign.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Softsign.java index e117be94537..e4276c679a3 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Softsign.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/Softsign.java @@ -62,6 +62,9 @@ public Output asOutput() { return activations; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Softsign"; + private Output activations; private Softsign(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/SoftsignGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/SoftsignGrad.java index 2c4fd467661..220763e57a2 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/SoftsignGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/SoftsignGrad.java @@ -64,6 +64,9 @@ public Output asOutput() { return backprops; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SoftsignGrad"; + private Output backprops; private SoftsignGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/SpaceToBatch.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/SpaceToBatch.java index b8ab8d48658..9b1796c99aa 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/SpaceToBatch.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/SpaceToBatch.java @@ -142,6 +142,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SpaceToBatch"; + private Output output; private SpaceToBatch(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/SpaceToDepth.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/SpaceToDepth.java index 100ac91e7da..0e9068c9b31 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/SpaceToDepth.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/SpaceToDepth.java @@ -171,6 +171,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SpaceToDepth"; + private Output output; private SpaceToDepth(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/TopK.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/TopK.java index 28a810ebc54..acd4ba679f7 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/TopK.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/TopK.java @@ -116,6 +116,9 @@ public Output indices() { return indices; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TopKV2"; + private Output values; private Output indices; From 84f49db3fb6c085befabfcb8356ab77589facf5d Mon Sep 17 00:00:00 2001 From: Jim Clarke Date: Thu, 20 Aug 2020 10:03:38 -0400 Subject: [PATCH 08/33] Generated classes now have public static final String OP_NAME = "XXXXXXXX"; --- .../src/gen/java/org/tensorflow/op/audio/AudioSpectrogram.java | 3 +++ .../src/gen/java/org/tensorflow/op/audio/DecodeWav.java | 3 +++ .../src/gen/java/org/tensorflow/op/audio/EncodeWav.java | 3 +++ .../src/gen/java/org/tensorflow/op/audio/Mfcc.java | 3 +++ .../src/gen/java/org/tensorflow/op/bitwise/BitwiseAnd.java | 3 +++ .../src/gen/java/org/tensorflow/op/bitwise/BitwiseOr.java | 3 +++ .../src/gen/java/org/tensorflow/op/bitwise/BitwiseXor.java | 3 +++ .../src/gen/java/org/tensorflow/op/bitwise/Invert.java | 3 +++ .../src/gen/java/org/tensorflow/op/bitwise/LeftShift.java | 3 +++ .../src/gen/java/org/tensorflow/op/bitwise/RightShift.java | 3 +++ .../org/tensorflow/op/cluster/KMC2ChainInitialization.java | 3 +++ .../tensorflow/op/cluster/KmeansPlusPlusInitialization.java | 3 +++ .../src/gen/java/org/tensorflow/op/collective/AllReduce.java | 3 +++ .../gen/java/org/tensorflow/op/collective/BroadcastRecv.java | 3 +++ .../gen/java/org/tensorflow/op/collective/BroadcastSend.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Abort.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/All.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Any.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/AssertThat.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Assign.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/AssignAdd.java | 3 +++ .../gen/java/org/tensorflow/op/core/AssignAddVariableOp.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/AssignSub.java | 3 +++ .../gen/java/org/tensorflow/op/core/AssignSubVariableOp.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/AssignVariableOp.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Barrier.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/BarrierClose.java | 3 +++ .../gen/java/org/tensorflow/op/core/BarrierIncompleteSize.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/BarrierInsertMany.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/BarrierReadySize.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/BarrierTakeMany.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Batch.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/BatchToSpace.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/BatchToSpaceNd.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Bitcast.java | 3 +++ .../gen/java/org/tensorflow/op/core/BroadcastDynamicShape.java | 3 +++ .../gen/java/org/tensorflow/op/core/BroadcastGradientArgs.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/BroadcastTo.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Bucketize.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/ClipByValue.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/CollectiveGather.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Concat.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/ConsumeMutexLock.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/ControlTrigger.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Copy.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/CopyHost.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/CountUpTo.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/DecodeProto.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/DeepCopy.java | 3 +++ .../gen/java/org/tensorflow/op/core/DeleteSessionTensor.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/DestroyResourceOp.java | 3 +++ .../java/org/tensorflow/op/core/DestroyTemporaryVariable.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/DummyMemoryCache.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/DynamicPartition.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/DynamicStitch.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/EditDistance.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Empty.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/EmptyTensorList.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/EncodeProto.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/EnsureShape.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Enter.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Exit.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/ExpandDims.java | 3 +++ .../gen/java/org/tensorflow/op/core/ExtractVolumePatches.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Fill.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Fingerprint.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Gather.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/GatherNd.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/GetSessionHandle.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/GetSessionTensor.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/GuaranteeConst.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/HashTable.java | 3 +++ .../gen/java/org/tensorflow/op/core/HistogramFixedWidth.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Identity.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/IdentityN.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/ImmutableConst.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/InitializeTable.java | 3 +++ .../org/tensorflow/op/core/InitializeTableFromTextFile.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/InplaceAdd.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/InplaceSub.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/InplaceUpdate.java | 3 +++ .../gen/java/org/tensorflow/op/core/IsVariableInitialized.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/LinSpace.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/LookupTableExport.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/LookupTableFind.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/LookupTableImport.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/LookupTableInsert.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/LookupTableRemove.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/LookupTableSize.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/LoopCond.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/LowerBound.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/MapClear.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/MapIncompleteSize.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/MapPeek.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/MapSize.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/MapStage.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/MapUnstage.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/MapUnstageNoKey.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Max.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Merge.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Min.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/MirrorPad.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/MirrorPadGrad.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/MlirPassthroughOp.java | 3 +++ .../gen/java/org/tensorflow/op/core/MutableDenseHashTable.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/MutableHashTable.java | 3 +++ .../java/org/tensorflow/op/core/MutableHashTableOfTensors.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Mutex.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/MutexLock.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/NcclAllReduce.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/NcclBroadcast.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/NcclReduce.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/NextIteration.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/NoOp.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/OneHot.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/OnesLike.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/OrderedMapClear.java | 3 +++ .../java/org/tensorflow/op/core/OrderedMapIncompleteSize.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/OrderedMapPeek.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/OrderedMapSize.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/OrderedMapStage.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/OrderedMapUnstage.java | 3 +++ .../java/org/tensorflow/op/core/OrderedMapUnstageNoKey.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Pad.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/ParallelConcat.java | 3 +++ .../gen/java/org/tensorflow/op/core/ParallelDynamicStitch.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Placeholder.java | 3 +++ .../java/org/tensorflow/op/core/PlaceholderWithDefault.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Print.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Prod.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/QuantizedReshape.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Range.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Rank.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/ReadVariableOp.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Recv.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/ReduceAll.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/ReduceAny.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/ReduceMax.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/ReduceMin.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/ReduceProd.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/ReduceSum.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/RefEnter.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/RefExit.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/RefIdentity.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/RefMerge.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/RefNextIteration.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/RefSelect.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/RefSwitch.java | 3 +++ .../java/org/tensorflow/op/core/RemoteFusedGraphExecute.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Reshape.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/ResourceCountUpTo.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/ResourceGather.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/ResourceGatherNd.java | 3 +++ .../gen/java/org/tensorflow/op/core/ResourceScatterAdd.java | 3 +++ .../gen/java/org/tensorflow/op/core/ResourceScatterDiv.java | 3 +++ .../gen/java/org/tensorflow/op/core/ResourceScatterMax.java | 3 +++ .../gen/java/org/tensorflow/op/core/ResourceScatterMin.java | 3 +++ .../gen/java/org/tensorflow/op/core/ResourceScatterMul.java | 3 +++ .../gen/java/org/tensorflow/op/core/ResourceScatterNdAdd.java | 3 +++ .../gen/java/org/tensorflow/op/core/ResourceScatterNdSub.java | 3 +++ .../java/org/tensorflow/op/core/ResourceScatterNdUpdate.java | 3 +++ .../gen/java/org/tensorflow/op/core/ResourceScatterSub.java | 3 +++ .../gen/java/org/tensorflow/op/core/ResourceScatterUpdate.java | 3 +++ .../org/tensorflow/op/core/ResourceStridedSliceAssign.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Reverse.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/ReverseSequence.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Roll.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Rpc.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/ScatterAdd.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/ScatterDiv.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/ScatterMax.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/ScatterMin.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/ScatterMul.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/ScatterNd.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/ScatterNdAdd.java | 3 +++ .../java/org/tensorflow/op/core/ScatterNdNonAliasingAdd.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/ScatterNdSub.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/ScatterNdUpdate.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/ScatterSub.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/ScatterUpdate.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Select.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Send.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/SetDiff1d.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/SetSize.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Shape.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/ShapeN.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Size.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Skipgram.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Slice.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Snapshot.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/SpaceToBatchNd.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Split.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/SplitV.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Squeeze.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Stack.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Stage.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/StageClear.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/StagePeek.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/StageSize.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/StopGradient.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/StridedSlice.java | 3 +++ .../gen/java/org/tensorflow/op/core/StridedSliceAssign.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/StridedSliceGrad.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Sum.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/SwitchCond.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/TemporaryVariable.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/TensorArray.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/TensorArrayClose.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/TensorArrayConcat.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/TensorArrayGather.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/TensorArrayGrad.java | 3 +++ .../java/org/tensorflow/op/core/TensorArrayGradWithShape.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/TensorArrayPack.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/TensorArrayRead.java | 3 +++ .../gen/java/org/tensorflow/op/core/TensorArrayScatter.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/TensorArraySize.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/TensorArraySplit.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/TensorArrayUnpack.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/TensorArrayWrite.java | 3 +++ .../org/tensorflow/op/core/TensorForestCreateTreeVariable.java | 3 +++ .../org/tensorflow/op/core/TensorForestTreeDeserialize.java | 3 +++ .../tensorflow/op/core/TensorForestTreeIsInitializedOp.java | 3 +++ .../java/org/tensorflow/op/core/TensorForestTreePredict.java | 3 +++ .../tensorflow/op/core/TensorForestTreeResourceHandleOp.java | 3 +++ .../java/org/tensorflow/op/core/TensorForestTreeSerialize.java | 3 +++ .../gen/java/org/tensorflow/op/core/TensorForestTreeSize.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/TensorListConcat.java | 3 +++ .../gen/java/org/tensorflow/op/core/TensorListConcatLists.java | 3 +++ .../java/org/tensorflow/op/core/TensorListElementShape.java | 3 +++ .../gen/java/org/tensorflow/op/core/TensorListFromTensor.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/TensorListGather.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/TensorListGetItem.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/TensorListLength.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/TensorListPopBack.java | 3 +++ .../gen/java/org/tensorflow/op/core/TensorListPushBack.java | 3 +++ .../java/org/tensorflow/op/core/TensorListPushBackBatch.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/TensorListReserve.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/TensorListResize.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/TensorListScatter.java | 3 +++ .../tensorflow/op/core/TensorListScatterIntoExistingList.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/TensorListSetItem.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/TensorListSplit.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/TensorListStack.java | 3 +++ .../gen/java/org/tensorflow/op/core/TensorScatterNdAdd.java | 3 +++ .../gen/java/org/tensorflow/op/core/TensorScatterNdSub.java | 3 +++ .../gen/java/org/tensorflow/op/core/TensorScatterNdUpdate.java | 3 +++ .../java/org/tensorflow/op/core/TensorStridedSliceUpdate.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Tile.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Timestamp.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/TryRpc.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Unbatch.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/UnbatchGrad.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Unique.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/UniqueWithCounts.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/UnravelIndex.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Unstack.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Unstage.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/UpperBound.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/VarHandleOp.java | 3 +++ .../gen/java/org/tensorflow/op/core/VarIsInitializedOp.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Variable.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/VariableShape.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Where.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/ZerosLike.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/AnonymousIterator.java | 3 +++ .../gen/java/org/tensorflow/op/data/AnonymousMemoryCache.java | 3 +++ .../org/tensorflow/op/data/AnonymousMultiDeviceIterator.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/AssertNextDataset.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/AutoShardDataset.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/BatchDataset.java | 3 +++ .../java/org/tensorflow/op/data/BytesProducedStatsDataset.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/CSVDataset.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/CacheDataset.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/CacheDatasetV2.java | 3 +++ .../gen/java/org/tensorflow/op/data/ChooseFastestDataset.java | 3 +++ .../gen/java/org/tensorflow/op/data/ConcatenateDataset.java | 3 +++ .../gen/java/org/tensorflow/op/data/DatasetCardinality.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/DatasetFromGraph.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/DatasetToGraph.java | 3 +++ .../java/org/tensorflow/op/data/DatasetToSingleElement.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/DatasetToTfRecord.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/DeleteIterator.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/DeleteMemoryCache.java | 3 +++ .../java/org/tensorflow/op/data/DeleteMultiDeviceIterator.java | 3 +++ .../java/org/tensorflow/op/data/DenseToSparseBatchDataset.java | 3 +++ .../gen/java/org/tensorflow/op/data/DeserializeIterator.java | 3 +++ .../java/org/tensorflow/op/data/DirectedInterleaveDataset.java | 3 +++ .../org/tensorflow/op/data/FilterByLastComponentDataset.java | 3 +++ .../java/org/tensorflow/op/data/FixedLengthRecordDataset.java | 3 +++ .../gen/java/org/tensorflow/op/data/IgnoreErrorsDataset.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/Iterator.java | 3 +++ .../java/org/tensorflow/op/data/IteratorFromStringHandle.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/IteratorGetDevice.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/IteratorGetNext.java | 3 +++ .../java/org/tensorflow/op/data/IteratorGetNextAsOptional.java | 3 +++ .../gen/java/org/tensorflow/op/data/IteratorGetNextSync.java | 3 +++ .../java/org/tensorflow/op/data/IteratorToStringHandle.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/LMDBDataset.java | 3 +++ .../gen/java/org/tensorflow/op/data/LatencyStatsDataset.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/LeakyReluGrad.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/MakeIterator.java | 3 +++ .../gen/java/org/tensorflow/op/data/MatchingFilesDataset.java | 3 +++ .../org/tensorflow/op/data/MaxIntraOpParallelismDataset.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/ModelDataset.java | 3 +++ .../gen/java/org/tensorflow/op/data/MultiDeviceIterator.java | 3 +++ .../op/data/MultiDeviceIteratorFromStringHandle.java | 3 +++ .../op/data/MultiDeviceIteratorGetNextFromShard.java | 3 +++ .../java/org/tensorflow/op/data/MultiDeviceIteratorInit.java | 3 +++ .../tensorflow/op/data/MultiDeviceIteratorToStringHandle.java | 3 +++ .../java/org/tensorflow/op/data/NonSerializableDataset.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/OptimizeDataset.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/OptionalFromValue.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/OptionalGetValue.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/OptionalHasValue.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/OptionalNone.java | 3 +++ .../gen/java/org/tensorflow/op/data/PaddedBatchDataset.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/PrefetchDataset.java | 3 +++ .../java/org/tensorflow/op/data/PrivateThreadPoolDataset.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/RandomDataset.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/RangeDataset.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/RebatchDataset.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/RepeatDataset.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/SamplingDataset.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/SerializeIterator.java | 3 +++ .../java/org/tensorflow/op/data/SetStatsAggregatorDataset.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/ShardDataset.java | 3 +++ .../java/org/tensorflow/op/data/ShuffleAndRepeatDataset.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/ShuffleDataset.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/SkipDataset.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/SleepDataset.java | 3 +++ .../gen/java/org/tensorflow/op/data/SlidingWindowDataset.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/SnapshotDataset.java | 3 +++ .../java/org/tensorflow/op/data/SparseTensorSliceDataset.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/SqlDataset.java | 3 +++ .../gen/java/org/tensorflow/op/data/StatsAggregatorHandle.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/TakeDataset.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/TensorDataset.java | 3 +++ .../gen/java/org/tensorflow/op/data/TensorSliceDataset.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/TextLineDataset.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/TfRecordDataset.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/ThreadPoolDataset.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/ThreadPoolHandle.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/UnbatchDataset.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/UniqueDataset.java | 3 +++ .../gen/java/org/tensorflow/op/data/UnwrapDatasetVariant.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/WindowDataset.java | 3 +++ .../gen/java/org/tensorflow/op/data/WrapDatasetVariant.java | 3 +++ .../src/gen/java/org/tensorflow/op/data/ZipDataset.java | 3 +++ .../op/data/experimental/AssertCardinalityDataset.java | 3 +++ .../org/tensorflow/op/data/experimental/AssertNextDataset.java | 3 +++ .../org/tensorflow/op/data/experimental/AutoShardDataset.java | 3 +++ .../op/data/experimental/BytesProducedStatsDataset.java | 3 +++ .../java/org/tensorflow/op/data/experimental/CSVDataset.java | 3 +++ .../tensorflow/op/data/experimental/ChooseFastestDataset.java | 3 +++ .../tensorflow/op/data/experimental/DatasetCardinality.java | 3 +++ .../org/tensorflow/op/data/experimental/DatasetToTFRecord.java | 3 +++ .../op/data/experimental/DenseToSparseBatchDataset.java | 3 +++ .../op/data/experimental/DirectedInterleaveDataset.java | 3 +++ .../tensorflow/op/data/experimental/IgnoreErrorsDataset.java | 3 +++ .../org/tensorflow/op/data/experimental/IteratorGetDevice.java | 3 +++ .../tensorflow/op/data/experimental/LatencyStatsDataset.java | 3 +++ .../java/org/tensorflow/op/data/experimental/LmdbDataset.java | 3 +++ .../tensorflow/op/data/experimental/MatchingFilesDataset.java | 3 +++ .../op/data/experimental/MaxIntraOpParallelismDataset.java | 3 +++ .../op/data/experimental/NonSerializableDataset.java | 3 +++ .../tensorflow/op/data/experimental/ParseExampleDataset.java | 3 +++ .../op/data/experimental/PrivateThreadPoolDataset.java | 3 +++ .../org/tensorflow/op/data/experimental/RandomDataset.java | 3 +++ .../org/tensorflow/op/data/experimental/RebatchDataset.java | 3 +++ .../op/data/experimental/SetStatsAggregatorDataset.java | 3 +++ .../java/org/tensorflow/op/data/experimental/SleepDataset.java | 3 +++ .../tensorflow/op/data/experimental/SlidingWindowDataset.java | 3 +++ .../java/org/tensorflow/op/data/experimental/SqlDataset.java | 3 +++ .../tensorflow/op/data/experimental/StatsAggregatorHandle.java | 3 +++ .../op/data/experimental/StatsAggregatorSetSummaryWriter.java | 3 +++ .../op/data/experimental/StatsAggregatorSummary.java | 3 +++ .../org/tensorflow/op/data/experimental/ThreadPoolDataset.java | 3 +++ .../org/tensorflow/op/data/experimental/ThreadPoolHandle.java | 3 +++ .../org/tensorflow/op/data/experimental/UnbatchDataset.java | 3 +++ .../org/tensorflow/op/data/experimental/UniqueDataset.java | 3 +++ .../gen/java/org/tensorflow/op/debugging/CheckNumerics.java | 3 +++ .../org/tensorflow/op/debugging/DebugGradientIdentity.java | 3 +++ .../org/tensorflow/op/debugging/DebugGradientRefIdentity.java | 3 +++ .../gen/java/org/tensorflow/op/debugging/DebugIdentity.java | 3 +++ .../gen/java/org/tensorflow/op/debugging/DebugNanCount.java | 3 +++ .../java/org/tensorflow/op/debugging/DebugNumericsSummary.java | 3 +++ .../src/gen/java/org/tensorflow/op/dtypes/AsString.java | 3 +++ .../src/gen/java/org/tensorflow/op/dtypes/Cast.java | 3 +++ .../src/gen/java/org/tensorflow/op/dtypes/Complex.java | 3 +++ .../src/gen/java/org/tensorflow/op/dtypes/ToBool.java | 3 +++ .../tensorflow/op/estimator/BoostedTreesAggregateStats.java | 3 +++ .../org/tensorflow/op/estimator/BoostedTreesBucketize.java | 3 +++ .../op/estimator/BoostedTreesCalculateBestFeatureSplit.java | 3 +++ .../op/estimator/BoostedTreesCalculateBestFeatureSplitV2.java | 3 +++ .../op/estimator/BoostedTreesCalculateBestGainsPerFeature.java | 3 +++ .../org/tensorflow/op/estimator/BoostedTreesCenterBias.java | 3 +++ .../tensorflow/op/estimator/BoostedTreesCreateEnsemble.java | 3 +++ .../op/estimator/BoostedTreesCreateQuantileStreamResource.java | 3 +++ .../op/estimator/BoostedTreesDeserializeEnsemble.java | 3 +++ .../op/estimator/BoostedTreesEnsembleResourceHandleOp.java | 3 +++ .../op/estimator/BoostedTreesExampleDebugOutputs.java | 3 +++ .../op/estimator/BoostedTreesFlushQuantileSummaries.java | 3 +++ .../tensorflow/op/estimator/BoostedTreesGetEnsembleStates.java | 3 +++ .../op/estimator/BoostedTreesMakeQuantileSummaries.java | 3 +++ .../tensorflow/op/estimator/BoostedTreesMakeStatsSummary.java | 3 +++ .../java/org/tensorflow/op/estimator/BoostedTreesPredict.java | 3 +++ .../BoostedTreesQuantileStreamResourceAddSummaries.java | 3 +++ .../BoostedTreesQuantileStreamResourceDeserialize.java | 3 +++ .../op/estimator/BoostedTreesQuantileStreamResourceFlush.java | 3 +++ .../BoostedTreesQuantileStreamResourceGetBucketBoundaries.java | 3 +++ .../estimator/BoostedTreesQuantileStreamResourceHandleOp.java | 3 +++ .../tensorflow/op/estimator/BoostedTreesSerializeEnsemble.java | 3 +++ .../op/estimator/BoostedTreesSparseAggregateStats.java | 3 +++ .../estimator/BoostedTreesSparseCalculateBestFeatureSplit.java | 3 +++ .../tensorflow/op/estimator/BoostedTreesTrainingPredict.java | 3 +++ .../tensorflow/op/estimator/BoostedTreesUpdateEnsemble.java | 3 +++ .../tensorflow/op/estimator/BoostedTreesUpdateEnsembleV2.java | 3 +++ .../op/estimator/IsBoostedTreesEnsembleInitialized.java | 3 +++ .../IsBoostedTreesQuantileStreamResourceInitialized.java | 3 +++ .../src/gen/java/org/tensorflow/op/image/AdjustContrast.java | 3 +++ .../src/gen/java/org/tensorflow/op/image/AdjustHue.java | 3 +++ .../src/gen/java/org/tensorflow/op/image/AdjustSaturation.java | 3 +++ .../org/tensorflow/op/image/CombinedNonMaxSuppression.java | 3 +++ .../src/gen/java/org/tensorflow/op/image/CropAndResize.java | 3 +++ .../java/org/tensorflow/op/image/CropAndResizeGradBoxes.java | 3 +++ .../java/org/tensorflow/op/image/CropAndResizeGradImage.java | 3 +++ .../gen/java/org/tensorflow/op/image/DecodeAndCropJpeg.java | 3 +++ .../src/gen/java/org/tensorflow/op/image/DecodeBmp.java | 3 +++ .../src/gen/java/org/tensorflow/op/image/DecodeGif.java | 3 +++ .../src/gen/java/org/tensorflow/op/image/DecodeJpeg.java | 3 +++ .../src/gen/java/org/tensorflow/op/image/DecodePng.java | 3 +++ .../gen/java/org/tensorflow/op/image/DrawBoundingBoxes.java | 3 +++ .../src/gen/java/org/tensorflow/op/image/EncodeJpeg.java | 3 +++ .../org/tensorflow/op/image/EncodeJpegVariableQuality.java | 3 +++ .../src/gen/java/org/tensorflow/op/image/EncodePng.java | 3 +++ .../src/gen/java/org/tensorflow/op/image/ExtractGlimpse.java | 3 +++ .../gen/java/org/tensorflow/op/image/ExtractImagePatches.java | 3 +++ .../src/gen/java/org/tensorflow/op/image/ExtractJpegShape.java | 3 +++ .../org/tensorflow/op/image/GenerateBoundingBoxProposals.java | 3 +++ .../src/gen/java/org/tensorflow/op/image/HsvToRgb.java | 3 +++ .../org/tensorflow/op/image/ImageProjectiveTransformV2.java | 3 +++ .../src/gen/java/org/tensorflow/op/image/NearestNeighbors.java | 3 +++ .../gen/java/org/tensorflow/op/image/NonMaxSuppression.java | 3 +++ .../org/tensorflow/op/image/NonMaxSuppressionWithOverlaps.java | 3 +++ .../java/org/tensorflow/op/image/QuantizedResizeBilinear.java | 3 +++ .../src/gen/java/org/tensorflow/op/image/RandomCrop.java | 3 +++ .../src/gen/java/org/tensorflow/op/image/ResizeArea.java | 3 +++ .../src/gen/java/org/tensorflow/op/image/ResizeBicubic.java | 3 +++ .../gen/java/org/tensorflow/op/image/ResizeBicubicGrad.java | 3 +++ .../src/gen/java/org/tensorflow/op/image/ResizeBilinear.java | 3 +++ .../gen/java/org/tensorflow/op/image/ResizeBilinearGrad.java | 3 +++ .../java/org/tensorflow/op/image/ResizeNearestNeighbor.java | 3 +++ .../org/tensorflow/op/image/ResizeNearestNeighborGrad.java | 3 +++ .../src/gen/java/org/tensorflow/op/image/RgbToHsv.java | 3 +++ .../org/tensorflow/op/image/SampleDistortedBoundingBox.java | 3 +++ .../gen/java/org/tensorflow/op/image/ScaleAndTranslate.java | 3 +++ .../java/org/tensorflow/op/image/ScaleAndTranslateGrad.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/DecodeBase64.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/DecodeCompressed.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/DecodeCsv.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/DecodeJsonExample.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/DecodePaddedRaw.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/DecodeRaw.java | 3 +++ .../gen/java/org/tensorflow/op/io/DeserializeManySparse.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/EncodeBase64.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/FifoQueue.java | 3 +++ .../gen/java/org/tensorflow/op/io/FixedLengthRecordReader.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/IdentityReader.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/LmdbReader.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/MatchingFiles.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/PaddingFifoQueue.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/ParseExample.java | 3 +++ .../gen/java/org/tensorflow/op/io/ParseSequenceExample.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/ParseSingleExample.java | 3 +++ .../java/org/tensorflow/op/io/ParseSingleSequenceExample.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/ParseTensor.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/PriorityQueue.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/QueueClose.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/QueueDequeue.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/QueueDequeueMany.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/QueueDequeueUpTo.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/QueueEnqueue.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/QueueEnqueueMany.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/QueueIsClosed.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/QueueSize.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/RandomShuffleQueue.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/ReadFile.java | 3 +++ .../java/org/tensorflow/op/io/ReaderNumRecordsProduced.java | 3 +++ .../java/org/tensorflow/op/io/ReaderNumWorkUnitsCompleted.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/ReaderRead.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/ReaderReadUpTo.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/ReaderReset.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/ReaderRestoreState.java | 3 +++ .../gen/java/org/tensorflow/op/io/ReaderSerializeState.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/SerializeManySparse.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/SerializeSparse.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/SerializeTensor.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/ShardedFilename.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/ShardedFilespec.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/TextLineReader.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/TfRecordReader.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/WholeFileReader.java | 3 +++ .../src/gen/java/org/tensorflow/op/io/WriteFile.java | 3 +++ .../src/gen/java/org/tensorflow/op/linalg/BandPart.java | 3 +++ .../src/gen/java/org/tensorflow/op/linalg/BatchCholesky.java | 3 +++ .../gen/java/org/tensorflow/op/linalg/BatchCholeskyGrad.java | 3 +++ .../gen/java/org/tensorflow/op/linalg/BatchMatrixBandPart.java | 3 +++ .../java/org/tensorflow/op/linalg/BatchMatrixDeterminant.java | 3 +++ .../src/gen/java/org/tensorflow/op/linalg/BatchMatrixDiag.java | 3 +++ .../gen/java/org/tensorflow/op/linalg/BatchMatrixDiagPart.java | 3 +++ .../gen/java/org/tensorflow/op/linalg/BatchMatrixInverse.java | 3 +++ .../gen/java/org/tensorflow/op/linalg/BatchMatrixSetDiag.java | 3 +++ .../gen/java/org/tensorflow/op/linalg/BatchMatrixSolve.java | 3 +++ .../gen/java/org/tensorflow/op/linalg/BatchMatrixSolveLs.java | 3 +++ .../org/tensorflow/op/linalg/BatchMatrixTriangularSolve.java | 3 +++ .../gen/java/org/tensorflow/op/linalg/BatchSelfAdjointEig.java | 3 +++ .../src/gen/java/org/tensorflow/op/linalg/BatchSvd.java | 3 +++ .../src/gen/java/org/tensorflow/op/linalg/Cholesky.java | 3 +++ .../src/gen/java/org/tensorflow/op/linalg/CholeskyGrad.java | 3 +++ .../gen/java/org/tensorflow/op/linalg/ConjugateTranspose.java | 3 +++ .../src/gen/java/org/tensorflow/op/linalg/Cross.java | 3 +++ .../src/gen/java/org/tensorflow/op/linalg/Det.java | 3 +++ .../src/gen/java/org/tensorflow/op/linalg/Eig.java | 3 +++ .../src/gen/java/org/tensorflow/op/linalg/Einsum.java | 3 +++ .../src/gen/java/org/tensorflow/op/linalg/EuclideanNorm.java | 3 +++ .../src/gen/java/org/tensorflow/op/linalg/Inv.java | 3 +++ .../gen/java/org/tensorflow/op/linalg/LoadAndRemapMatrix.java | 3 +++ .../java/org/tensorflow/op/linalg/LogMatrixDeterminant.java | 3 +++ .../src/gen/java/org/tensorflow/op/linalg/Lu.java | 3 +++ .../src/gen/java/org/tensorflow/op/linalg/MatMul.java | 3 +++ .../src/gen/java/org/tensorflow/op/linalg/MatrixDiag.java | 3 +++ .../src/gen/java/org/tensorflow/op/linalg/MatrixDiagPart.java | 3 +++ .../gen/java/org/tensorflow/op/linalg/MatrixDiagPartV3.java | 3 +++ .../src/gen/java/org/tensorflow/op/linalg/MatrixDiagV3.java | 3 +++ .../src/gen/java/org/tensorflow/op/linalg/MatrixLogarithm.java | 3 +++ .../src/gen/java/org/tensorflow/op/linalg/MatrixSetDiag.java | 3 +++ .../src/gen/java/org/tensorflow/op/linalg/MatrixSolveLs.java | 3 +++ .../src/gen/java/org/tensorflow/op/linalg/Qr.java | 3 +++ .../src/gen/java/org/tensorflow/op/linalg/QuantizedMatMul.java | 3 +++ .../java/org/tensorflow/op/linalg/QuantizedMatMulWithBias.java | 3 +++ .../tensorflow/op/linalg/QuantizedMatMulWithBiasAndRelu.java | 3 +++ .../op/linalg/QuantizedMatMulWithBiasAndReluAndRequantize.java | 3 +++ .../src/gen/java/org/tensorflow/op/linalg/SelfAdjointEig.java | 3 +++ .../src/gen/java/org/tensorflow/op/linalg/Solve.java | 3 +++ .../src/gen/java/org/tensorflow/op/linalg/Sqrtm.java | 3 +++ .../src/gen/java/org/tensorflow/op/linalg/Svd.java | 3 +++ .../src/gen/java/org/tensorflow/op/linalg/TensorDiag.java | 3 +++ .../src/gen/java/org/tensorflow/op/linalg/TensorDiagPart.java | 3 +++ .../src/gen/java/org/tensorflow/op/linalg/Transpose.java | 3 +++ .../src/gen/java/org/tensorflow/op/linalg/TriangularSolve.java | 3 +++ .../gen/java/org/tensorflow/op/linalg/TridiagonalMatMul.java | 3 +++ .../gen/java/org/tensorflow/op/linalg/TridiagonalSolve.java | 3 +++ .../tensorflow/op/linalg/sparse/CSRSparseMatrixComponents.java | 3 +++ .../tensorflow/op/linalg/sparse/CSRSparseMatrixToDense.java | 3 +++ .../op/linalg/sparse/CSRSparseMatrixToSparseTensor.java | 3 +++ .../tensorflow/op/linalg/sparse/DenseToCSRSparseMatrix.java | 3 +++ .../java/org/tensorflow/op/linalg/sparse/SparseMatrixAdd.java | 3 +++ .../org/tensorflow/op/linalg/sparse/SparseMatrixMatMul.java | 3 +++ .../java/org/tensorflow/op/linalg/sparse/SparseMatrixMul.java | 3 +++ .../java/org/tensorflow/op/linalg/sparse/SparseMatrixNNZ.java | 3 +++ .../tensorflow/op/linalg/sparse/SparseMatrixOrderingAMD.java | 3 +++ .../org/tensorflow/op/linalg/sparse/SparseMatrixSoftmax.java | 3 +++ .../tensorflow/op/linalg/sparse/SparseMatrixSoftmaxGrad.java | 3 +++ .../op/linalg/sparse/SparseMatrixSparseCholesky.java | 3 +++ .../tensorflow/op/linalg/sparse/SparseMatrixSparseMatMul.java | 3 +++ .../org/tensorflow/op/linalg/sparse/SparseMatrixTranspose.java | 3 +++ .../org/tensorflow/op/linalg/sparse/SparseMatrixZeros.java | 3 +++ .../op/linalg/sparse/SparseTensorToCSRSparseMatrix.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Abs.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/AccumulateN.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Acos.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Acosh.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Add.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/AddN.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Angle.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/ApproximateEqual.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/ArgMax.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/ArgMin.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Asin.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Asinh.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Atan.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Atan2.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Atanh.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/BesselI0e.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/BesselI1e.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Betainc.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Bincount.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Ceil.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/CompareAndBitpack.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/ComplexAbs.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Conj.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Cos.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Cosh.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Cumprod.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Cumsum.java | 3 +++ .../gen/java/org/tensorflow/op/math/CumulativeLogsumexp.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Digamma.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Div.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/DivNoNan.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Equal.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Erf.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Erfc.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Exp.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Expm1.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Fact.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Floor.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/FloorDiv.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/FloorMod.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Greater.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/GreaterEqual.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Igamma.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/IgammaGradA.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Igammac.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Imag.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/InvertPermutation.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/IsFinite.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/IsInf.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/IsNan.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Less.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/LessEqual.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Lgamma.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Log.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Log1p.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/LogicalAnd.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/LogicalNot.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/LogicalOr.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Maximum.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Mean.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Minimum.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Mod.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Mul.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/MulNoNan.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Ndtri.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Neg.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/NextAfter.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/NotEqual.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Polygamma.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/PopulationCount.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Pow.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/QuantizedAdd.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/QuantizedMul.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Real.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/RealDiv.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Reciprocal.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/ReciprocalGrad.java | 3 +++ .../org/tensorflow/op/math/RequantizationRangePerChannel.java | 3 +++ .../gen/java/org/tensorflow/op/math/RequantizePerChannel.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Rint.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Round.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Rsqrt.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/RsqrtGrad.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/SegmentMax.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/SegmentMean.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/SegmentMin.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/SegmentProd.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/SegmentSum.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Sigmoid.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/SigmoidGrad.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Sign.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Sin.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Sinh.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/SobolSample.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Softplus.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/SoftplusGrad.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Sqrt.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/SqrtGrad.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Square.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/SquaredDifference.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Sub.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Tan.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Tanh.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/TanhGrad.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/TruncateDiv.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/TruncateMod.java | 3 +++ .../gen/java/org/tensorflow/op/math/UnsortedSegmentMax.java | 3 +++ .../gen/java/org/tensorflow/op/math/UnsortedSegmentMin.java | 3 +++ .../gen/java/org/tensorflow/op/math/UnsortedSegmentProd.java | 3 +++ .../gen/java/org/tensorflow/op/math/UnsortedSegmentSum.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Xdivy.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Xlog1py.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Xlogy.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/Zeta.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/erfinv.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/special/Dawsn.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/special/Expint.java | 3 +++ .../gen/java/org/tensorflow/op/math/special/FresnelCos.java | 3 +++ .../gen/java/org/tensorflow/op/math/special/FresnelSin.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/special/Spence.java | 3 +++ .../gen/java/org/tensorflow/op/quantization/Dequantize.java | 3 +++ .../tensorflow/op/quantization/FakeQuantWithMinMaxArgs.java | 3 +++ .../op/quantization/FakeQuantWithMinMaxArgsGradient.java | 3 +++ .../tensorflow/op/quantization/FakeQuantWithMinMaxVars.java | 3 +++ .../op/quantization/FakeQuantWithMinMaxVarsGradient.java | 3 +++ .../op/quantization/FakeQuantWithMinMaxVarsPerChannel.java | 3 +++ .../FakeQuantWithMinMaxVarsPerChannelGradient.java | 3 +++ .../src/gen/java/org/tensorflow/op/quantization/Quantize.java | 3 +++ .../org/tensorflow/op/quantization/QuantizeAndDequantize.java | 3 +++ .../tensorflow/op/quantization/QuantizeDownAndShrinkRange.java | 3 +++ .../java/org/tensorflow/op/quantization/QuantizedConcat.java | 3 +++ .../op/quantization/QuantizedMatMulWithBiasAndDequantize.java | 3 +++ .../op/quantization/QuantizedMatMulWithBiasAndRequantize.java | 3 +++ .../org/tensorflow/op/quantization/RequantizationRange.java | 3 +++ .../gen/java/org/tensorflow/op/quantization/Requantize.java | 3 +++ .../src/gen/java/org/tensorflow/op/ragged/RaggedGather.java | 3 +++ .../src/gen/java/org/tensorflow/op/ragged/RaggedRange.java | 3 +++ .../java/org/tensorflow/op/ragged/RaggedTensorFromVariant.java | 3 +++ .../java/org/tensorflow/op/ragged/RaggedTensorToSparse.java | 3 +++ .../java/org/tensorflow/op/ragged/RaggedTensorToTensor.java | 3 +++ .../java/org/tensorflow/op/ragged/RaggedTensorToVariant.java | 3 +++ .../gen/java/org/tensorflow/op/random/AllCandidateSampler.java | 3 +++ .../org/tensorflow/op/random/AnonymousRandomSeedGenerator.java | 3 +++ .../org/tensorflow/op/random/DeleteRandomSeedGenerator.java | 3 +++ .../org/tensorflow/op/random/LogUniformCandidateSampler.java | 3 +++ .../src/gen/java/org/tensorflow/op/random/Multinomial.java | 3 +++ .../java/org/tensorflow/op/random/NonDeterministicInts.java | 3 +++ .../org/tensorflow/op/random/ParameterizedTruncatedNormal.java | 3 +++ .../src/gen/java/org/tensorflow/op/random/RandomGamma.java | 3 +++ .../src/gen/java/org/tensorflow/op/random/RandomGammaGrad.java | 3 +++ .../src/gen/java/org/tensorflow/op/random/RandomPoisson.java | 3 +++ .../src/gen/java/org/tensorflow/op/random/RandomShuffle.java | 3 +++ .../java/org/tensorflow/op/random/RandomStandardNormal.java | 3 +++ .../src/gen/java/org/tensorflow/op/random/RandomUniform.java | 3 +++ .../gen/java/org/tensorflow/op/random/RandomUniformInt.java | 3 +++ .../src/gen/java/org/tensorflow/op/random/RecordInput.java | 3 +++ .../src/gen/java/org/tensorflow/op/random/RngSkip.java | 3 +++ .../java/org/tensorflow/op/random/StatefulRandomBinomial.java | 3 +++ .../java/org/tensorflow/op/random/StatefulStandardNormal.java | 3 +++ .../java/org/tensorflow/op/random/StatefulTruncatedNormal.java | 3 +++ .../src/gen/java/org/tensorflow/op/random/StatefulUniform.java | 3 +++ .../java/org/tensorflow/op/random/StatefulUniformFullInt.java | 3 +++ .../gen/java/org/tensorflow/op/random/StatefulUniformInt.java | 3 +++ .../java/org/tensorflow/op/random/StatelessMultinomial.java | 3 +++ .../java/org/tensorflow/op/random/StatelessRandomBinomial.java | 3 +++ .../java/org/tensorflow/op/random/StatelessRandomGamma.java | 3 +++ .../java/org/tensorflow/op/random/StatelessRandomNormal.java | 3 +++ .../java/org/tensorflow/op/random/StatelessRandomPoisson.java | 3 +++ .../java/org/tensorflow/op/random/StatelessRandomUniform.java | 3 +++ .../tensorflow/op/random/StatelessRandomUniformFullInt.java | 3 +++ .../org/tensorflow/op/random/StatelessRandomUniformInt.java | 3 +++ .../org/tensorflow/op/random/StatelessTruncatedNormal.java | 3 +++ .../src/gen/java/org/tensorflow/op/random/TruncatedNormal.java | 3 +++ .../java/org/tensorflow/op/random/UniformCandidateSampler.java | 3 +++ .../src/gen/java/org/tensorflow/op/signal/BatchFft.java | 3 +++ .../src/gen/java/org/tensorflow/op/signal/BatchFft2d.java | 3 +++ .../src/gen/java/org/tensorflow/op/signal/BatchFft3d.java | 3 +++ .../src/gen/java/org/tensorflow/op/signal/BatchIfft.java | 3 +++ .../src/gen/java/org/tensorflow/op/signal/BatchIfft2d.java | 3 +++ .../src/gen/java/org/tensorflow/op/signal/BatchIfft3d.java | 3 +++ .../src/gen/java/org/tensorflow/op/signal/Fft.java | 3 +++ .../src/gen/java/org/tensorflow/op/signal/Fft2d.java | 3 +++ .../src/gen/java/org/tensorflow/op/signal/Fft3d.java | 3 +++ .../src/gen/java/org/tensorflow/op/signal/Ifft.java | 3 +++ .../src/gen/java/org/tensorflow/op/signal/Ifft2d.java | 3 +++ .../src/gen/java/org/tensorflow/op/signal/Ifft3d.java | 3 +++ .../src/gen/java/org/tensorflow/op/signal/Irfft.java | 3 +++ .../src/gen/java/org/tensorflow/op/signal/Irfft2d.java | 3 +++ .../src/gen/java/org/tensorflow/op/signal/Irfft3d.java | 3 +++ .../src/gen/java/org/tensorflow/op/signal/Rfft.java | 3 +++ .../src/gen/java/org/tensorflow/op/signal/Rfft2d.java | 3 +++ .../src/gen/java/org/tensorflow/op/signal/Rfft3d.java | 3 +++ .../org/tensorflow/op/sparse/AddManySparseToTensorsMap.java | 3 +++ .../java/org/tensorflow/op/sparse/AddSparseToTensorsMap.java | 3 +++ .../org/tensorflow/op/sparse/DenseToDenseSetOperation.java | 3 +++ .../org/tensorflow/op/sparse/DenseToSparseSetOperation.java | 3 +++ .../gen/java/org/tensorflow/op/sparse/DeserializeSparse.java | 3 +++ .../tensorflow/op/sparse/SparseAccumulatorApplyGradient.java | 3 +++ .../tensorflow/op/sparse/SparseAccumulatorTakeGradient.java | 3 +++ .../src/gen/java/org/tensorflow/op/sparse/SparseAdd.java | 3 +++ .../src/gen/java/org/tensorflow/op/sparse/SparseAddGrad.java | 3 +++ .../src/gen/java/org/tensorflow/op/sparse/SparseConcat.java | 3 +++ .../org/tensorflow/op/sparse/SparseConditionalAccumulator.java | 3 +++ .../src/gen/java/org/tensorflow/op/sparse/SparseCross.java | 3 +++ .../gen/java/org/tensorflow/op/sparse/SparseDenseCwiseAdd.java | 3 +++ .../gen/java/org/tensorflow/op/sparse/SparseDenseCwiseDiv.java | 3 +++ .../gen/java/org/tensorflow/op/sparse/SparseDenseCwiseMul.java | 3 +++ .../gen/java/org/tensorflow/op/sparse/SparseFillEmptyRows.java | 3 +++ .../java/org/tensorflow/op/sparse/SparseFillEmptyRowsGrad.java | 3 +++ .../src/gen/java/org/tensorflow/op/sparse/SparseMatMul.java | 3 +++ .../src/gen/java/org/tensorflow/op/sparse/SparseReduceMax.java | 3 +++ .../java/org/tensorflow/op/sparse/SparseReduceMaxSparse.java | 3 +++ .../src/gen/java/org/tensorflow/op/sparse/SparseReduceSum.java | 3 +++ .../java/org/tensorflow/op/sparse/SparseReduceSumSparse.java | 3 +++ .../src/gen/java/org/tensorflow/op/sparse/SparseReorder.java | 3 +++ .../src/gen/java/org/tensorflow/op/sparse/SparseReshape.java | 3 +++ .../gen/java/org/tensorflow/op/sparse/SparseSegmentMean.java | 3 +++ .../java/org/tensorflow/op/sparse/SparseSegmentMeanGrad.java | 3 +++ .../tensorflow/op/sparse/SparseSegmentMeanWithNumSegments.java | 3 +++ .../gen/java/org/tensorflow/op/sparse/SparseSegmentSqrtN.java | 3 +++ .../java/org/tensorflow/op/sparse/SparseSegmentSqrtNGrad.java | 3 +++ .../op/sparse/SparseSegmentSqrtNWithNumSegments.java | 3 +++ .../gen/java/org/tensorflow/op/sparse/SparseSegmentSum.java | 3 +++ .../tensorflow/op/sparse/SparseSegmentSumWithNumSegments.java | 3 +++ .../src/gen/java/org/tensorflow/op/sparse/SparseSlice.java | 3 +++ .../src/gen/java/org/tensorflow/op/sparse/SparseSliceGrad.java | 3 +++ .../src/gen/java/org/tensorflow/op/sparse/SparseSoftmax.java | 3 +++ .../gen/java/org/tensorflow/op/sparse/SparseSparseMaximum.java | 3 +++ .../gen/java/org/tensorflow/op/sparse/SparseSparseMinimum.java | 3 +++ .../src/gen/java/org/tensorflow/op/sparse/SparseSplit.java | 3 +++ .../java/org/tensorflow/op/sparse/SparseTensorDenseAdd.java | 3 +++ .../java/org/tensorflow/op/sparse/SparseTensorDenseMatMul.java | 3 +++ .../src/gen/java/org/tensorflow/op/sparse/SparseToDense.java | 3 +++ .../org/tensorflow/op/sparse/SparseToSparseSetOperation.java | 3 +++ .../org/tensorflow/op/sparse/TakeManySparseFromTensorsMap.java | 3 +++ .../src/gen/java/org/tensorflow/op/strings/Join.java | 3 +++ .../src/gen/java/org/tensorflow/op/strings/Lower.java | 3 +++ .../src/gen/java/org/tensorflow/op/strings/ReduceJoin.java | 3 +++ .../src/gen/java/org/tensorflow/op/strings/RegexFullMatch.java | 3 +++ .../src/gen/java/org/tensorflow/op/strings/RegexReplace.java | 3 +++ .../java/org/tensorflow/op/strings/StaticRegexFullMatch.java | 3 +++ .../gen/java/org/tensorflow/op/strings/StaticRegexReplace.java | 3 +++ .../src/gen/java/org/tensorflow/op/strings/StringFormat.java | 3 +++ .../src/gen/java/org/tensorflow/op/strings/StringLength.java | 3 +++ .../src/gen/java/org/tensorflow/op/strings/StringNGrams.java | 3 +++ .../src/gen/java/org/tensorflow/op/strings/StringSplit.java | 3 +++ .../src/gen/java/org/tensorflow/op/strings/Strip.java | 3 +++ .../src/gen/java/org/tensorflow/op/strings/Substr.java | 3 +++ .../src/gen/java/org/tensorflow/op/strings/ToHashBucket.java | 3 +++ .../gen/java/org/tensorflow/op/strings/ToHashBucketFast.java | 3 +++ .../gen/java/org/tensorflow/op/strings/ToHashBucketStrong.java | 3 +++ .../src/gen/java/org/tensorflow/op/strings/ToNumber.java | 3 +++ .../src/gen/java/org/tensorflow/op/strings/UnicodeDecode.java | 3 +++ .../org/tensorflow/op/strings/UnicodeDecodeWithOffsets.java | 3 +++ .../src/gen/java/org/tensorflow/op/strings/UnicodeEncode.java | 3 +++ .../src/gen/java/org/tensorflow/op/strings/UnicodeScript.java | 3 +++ .../gen/java/org/tensorflow/op/strings/UnicodeTranscode.java | 3 +++ .../java/org/tensorflow/op/strings/UnsortedSegmentJoin.java | 3 +++ .../src/gen/java/org/tensorflow/op/strings/Upper.java | 3 +++ .../src/gen/java/org/tensorflow/op/summary/AudioSummary.java | 3 +++ .../gen/java/org/tensorflow/op/summary/CloseSummaryWriter.java | 3 +++ .../java/org/tensorflow/op/summary/CreateSummaryDbWriter.java | 3 +++ .../org/tensorflow/op/summary/CreateSummaryFileWriter.java | 3 +++ .../gen/java/org/tensorflow/op/summary/FlushSummaryWriter.java | 3 +++ .../gen/java/org/tensorflow/op/summary/HistogramSummary.java | 3 +++ .../src/gen/java/org/tensorflow/op/summary/ImageSummary.java | 3 +++ .../src/gen/java/org/tensorflow/op/summary/ImportEvent.java | 3 +++ .../src/gen/java/org/tensorflow/op/summary/MergeSummary.java | 3 +++ .../src/gen/java/org/tensorflow/op/summary/ScalarSummary.java | 3 +++ .../java/org/tensorflow/op/summary/StatsAggregatorSummary.java | 3 +++ .../src/gen/java/org/tensorflow/op/summary/SummaryWriter.java | 3 +++ .../src/gen/java/org/tensorflow/op/summary/TensorSummary.java | 3 +++ .../gen/java/org/tensorflow/op/summary/WriteAudioSummary.java | 3 +++ .../gen/java/org/tensorflow/op/summary/WriteGraphSummary.java | 3 +++ .../java/org/tensorflow/op/summary/WriteHistogramSummary.java | 3 +++ .../gen/java/org/tensorflow/op/summary/WriteImageSummary.java | 3 +++ .../java/org/tensorflow/op/summary/WriteRawProtoSummary.java | 3 +++ .../gen/java/org/tensorflow/op/summary/WriteScalarSummary.java | 3 +++ .../src/gen/java/org/tensorflow/op/summary/WriteSummary.java | 3 +++ .../src/gen/java/org/tensorflow/op/tpu/AllToAll.java | 3 +++ .../src/gen/java/org/tensorflow/op/tpu/CollectivePermute.java | 3 +++ .../java/org/tensorflow/op/tpu/ConfigureDistributedTPU.java | 3 +++ .../gen/java/org/tensorflow/op/tpu/ConfigureTPUEmbedding.java | 3 +++ .../src/gen/java/org/tensorflow/op/tpu/CrossReplicaSum.java | 3 +++ .../org/tensorflow/op/tpu/EnqueueTPUEmbeddingIntegerBatch.java | 3 +++ .../org/tensorflow/op/tpu/EnqueueTPUEmbeddingSparseBatch.java | 3 +++ .../op/tpu/EnqueueTPUEmbeddingSparseTensorBatch.java | 3 +++ .../src/gen/java/org/tensorflow/op/tpu/InfeedDequeue.java | 3 +++ .../src/gen/java/org/tensorflow/op/tpu/InfeedDequeueTuple.java | 3 +++ .../src/gen/java/org/tensorflow/op/tpu/InfeedEnqueue.java | 3 +++ .../tensorflow/op/tpu/InfeedEnqueuePrelinearizedBuffer.java | 3 +++ .../src/gen/java/org/tensorflow/op/tpu/InfeedEnqueueTuple.java | 3 +++ .../org/tensorflow/op/tpu/LoadTPUEmbeddingADAMParameters.java | 3 +++ .../op/tpu/LoadTPUEmbeddingADAMParametersGradAccumDebug.java | 3 +++ .../tensorflow/op/tpu/LoadTPUEmbeddingAdadeltaParameters.java | 3 +++ .../tpu/LoadTPUEmbeddingAdadeltaParametersGradAccumDebug.java | 3 +++ .../tensorflow/op/tpu/LoadTPUEmbeddingAdagradParameters.java | 3 +++ .../tpu/LoadTPUEmbeddingAdagradParametersGradAccumDebug.java | 3 +++ .../op/tpu/LoadTPUEmbeddingCenteredRMSPropParameters.java | 3 +++ .../org/tensorflow/op/tpu/LoadTPUEmbeddingFTRLParameters.java | 3 +++ .../op/tpu/LoadTPUEmbeddingFTRLParametersGradAccumDebug.java | 3 +++ .../op/tpu/LoadTPUEmbeddingMDLAdagradLightParameters.java | 3 +++ .../tensorflow/op/tpu/LoadTPUEmbeddingMomentumParameters.java | 3 +++ .../tpu/LoadTPUEmbeddingMomentumParametersGradAccumDebug.java | 3 +++ .../op/tpu/LoadTPUEmbeddingProximalAdagradParameters.java | 3 +++ ...oadTPUEmbeddingProximalAdagradParametersGradAccumDebug.java | 3 +++ .../tensorflow/op/tpu/LoadTPUEmbeddingRMSPropParameters.java | 3 +++ .../tpu/LoadTPUEmbeddingRMSPropParametersGradAccumDebug.java | 3 +++ .../LoadTPUEmbeddingStochasticGradientDescentParameters.java | 3 +++ .../src/gen/java/org/tensorflow/op/tpu/OutfeedDequeue.java | 3 +++ .../gen/java/org/tensorflow/op/tpu/OutfeedDequeueTuple.java | 3 +++ .../src/gen/java/org/tensorflow/op/tpu/OutfeedEnqueue.java | 3 +++ .../gen/java/org/tensorflow/op/tpu/OutfeedEnqueueTuple.java | 3 +++ .../src/gen/java/org/tensorflow/op/tpu/Prelinearize.java | 3 +++ .../src/gen/java/org/tensorflow/op/tpu/PrelinearizeTuple.java | 3 +++ .../org/tensorflow/op/tpu/RecvTPUEmbeddingActivations.java | 3 +++ .../tensorflow/op/tpu/RetrieveTPUEmbeddingADAMParameters.java | 3 +++ .../tpu/RetrieveTPUEmbeddingADAMParametersGradAccumDebug.java | 3 +++ .../op/tpu/RetrieveTPUEmbeddingAdadeltaParameters.java | 3 +++ .../RetrieveTPUEmbeddingAdadeltaParametersGradAccumDebug.java | 3 +++ .../op/tpu/RetrieveTPUEmbeddingAdagradParameters.java | 3 +++ .../RetrieveTPUEmbeddingAdagradParametersGradAccumDebug.java | 3 +++ .../op/tpu/RetrieveTPUEmbeddingCenteredRMSPropParameters.java | 3 +++ .../tensorflow/op/tpu/RetrieveTPUEmbeddingFTRLParameters.java | 3 +++ .../tpu/RetrieveTPUEmbeddingFTRLParametersGradAccumDebug.java | 3 +++ .../op/tpu/RetrieveTPUEmbeddingMDLAdagradLightParameters.java | 3 +++ .../op/tpu/RetrieveTPUEmbeddingMomentumParameters.java | 3 +++ .../RetrieveTPUEmbeddingMomentumParametersGradAccumDebug.java | 3 +++ .../op/tpu/RetrieveTPUEmbeddingProximalAdagradParameters.java | 3 +++ ...eveTPUEmbeddingProximalAdagradParametersGradAccumDebug.java | 3 +++ .../op/tpu/RetrieveTPUEmbeddingRMSPropParameters.java | 3 +++ .../RetrieveTPUEmbeddingRMSPropParametersGradAccumDebug.java | 3 +++ ...etrieveTPUEmbeddingStochasticGradientDescentParameters.java | 3 +++ .../java/org/tensorflow/op/tpu/SendTPUEmbeddingGradients.java | 3 +++ .../gen/java/org/tensorflow/op/tpu/ShutdownDistributedTPU.java | 3 +++ .../gen/java/org/tensorflow/op/tpu/TPUCompilationResult.java | 3 +++ .../java/org/tensorflow/op/tpu/TPUEmbeddingActivations.java | 3 +++ .../src/gen/java/org/tensorflow/op/tpu/TPUOrdinalSelector.java | 3 +++ .../gen/java/org/tensorflow/op/tpu/TPUReplicateMetadata.java | 3 +++ .../src/gen/java/org/tensorflow/op/tpu/TPUReplicatedInput.java | 3 +++ .../gen/java/org/tensorflow/op/tpu/TPUReplicatedOutput.java | 3 +++ .../src/gen/java/org/tensorflow/op/tpu/WorkerHeartbeat.java | 3 +++ .../java/org/tensorflow/op/train/AccumulatorApplyGradient.java | 3 +++ .../org/tensorflow/op/train/AccumulatorNumAccumulated.java | 3 +++ .../java/org/tensorflow/op/train/AccumulatorSetGlobalStep.java | 3 +++ .../java/org/tensorflow/op/train/AccumulatorTakeGradient.java | 3 +++ .../src/gen/java/org/tensorflow/op/train/ApplyAdaMax.java | 3 +++ .../src/gen/java/org/tensorflow/op/train/ApplyAdadelta.java | 3 +++ .../src/gen/java/org/tensorflow/op/train/ApplyAdagrad.java | 3 +++ .../src/gen/java/org/tensorflow/op/train/ApplyAdagradDa.java | 3 +++ .../src/gen/java/org/tensorflow/op/train/ApplyAdagradV2.java | 3 +++ .../src/gen/java/org/tensorflow/op/train/ApplyAdam.java | 3 +++ .../src/gen/java/org/tensorflow/op/train/ApplyAddSign.java | 3 +++ .../gen/java/org/tensorflow/op/train/ApplyCenteredRmsProp.java | 3 +++ .../src/gen/java/org/tensorflow/op/train/ApplyFtrl.java | 3 +++ .../gen/java/org/tensorflow/op/train/ApplyGradientDescent.java | 3 +++ .../src/gen/java/org/tensorflow/op/train/ApplyMomentum.java | 3 +++ .../src/gen/java/org/tensorflow/op/train/ApplyPowerSign.java | 3 +++ .../gen/java/org/tensorflow/op/train/ApplyProximalAdagrad.java | 3 +++ .../org/tensorflow/op/train/ApplyProximalGradientDescent.java | 3 +++ .../src/gen/java/org/tensorflow/op/train/ApplyRmsProp.java | 3 +++ .../src/gen/java/org/tensorflow/op/train/BatchMatMul.java | 3 +++ .../java/org/tensorflow/op/train/ConditionalAccumulator.java | 3 +++ .../java/org/tensorflow/op/train/GenerateVocabRemapping.java | 3 +++ .../gen/java/org/tensorflow/op/train/MergeV2Checkpoints.java | 3 +++ .../src/gen/java/org/tensorflow/op/train/NegTrain.java | 3 +++ .../src/gen/java/org/tensorflow/op/train/PreventGradient.java | 3 +++ .../tensorflow/op/train/ResourceAccumulatorApplyGradient.java | 3 +++ .../tensorflow/op/train/ResourceAccumulatorNumAccumulated.java | 3 +++ .../tensorflow/op/train/ResourceAccumulatorSetGlobalStep.java | 3 +++ .../tensorflow/op/train/ResourceAccumulatorTakeGradient.java | 3 +++ .../gen/java/org/tensorflow/op/train/ResourceApplyAdaMax.java | 3 +++ .../java/org/tensorflow/op/train/ResourceApplyAdadelta.java | 3 +++ .../gen/java/org/tensorflow/op/train/ResourceApplyAdagrad.java | 3 +++ .../java/org/tensorflow/op/train/ResourceApplyAdagradDa.java | 3 +++ .../gen/java/org/tensorflow/op/train/ResourceApplyAdam.java | 3 +++ .../org/tensorflow/op/train/ResourceApplyAdamWithAmsgrad.java | 3 +++ .../gen/java/org/tensorflow/op/train/ResourceApplyAddSign.java | 3 +++ .../org/tensorflow/op/train/ResourceApplyCenteredRmsProp.java | 3 +++ .../gen/java/org/tensorflow/op/train/ResourceApplyFtrl.java | 3 +++ .../org/tensorflow/op/train/ResourceApplyGradientDescent.java | 3 +++ .../org/tensorflow/op/train/ResourceApplyKerasMomentum.java | 3 +++ .../java/org/tensorflow/op/train/ResourceApplyMomentum.java | 3 +++ .../java/org/tensorflow/op/train/ResourceApplyPowerSign.java | 3 +++ .../org/tensorflow/op/train/ResourceApplyProximalAdagrad.java | 3 +++ .../op/train/ResourceApplyProximalGradientDescent.java | 3 +++ .../gen/java/org/tensorflow/op/train/ResourceApplyRmsProp.java | 3 +++ .../tensorflow/op/train/ResourceConditionalAccumulator.java | 3 +++ .../org/tensorflow/op/train/ResourceSparseApplyAdadelta.java | 3 +++ .../org/tensorflow/op/train/ResourceSparseApplyAdagrad.java | 3 +++ .../org/tensorflow/op/train/ResourceSparseApplyAdagradDa.java | 3 +++ .../org/tensorflow/op/train/ResourceSparseApplyAdagradV2.java | 3 +++ .../op/train/ResourceSparseApplyCenteredRmsProp.java | 3 +++ .../java/org/tensorflow/op/train/ResourceSparseApplyFtrl.java | 3 +++ .../tensorflow/op/train/ResourceSparseApplyKerasMomentum.java | 3 +++ .../org/tensorflow/op/train/ResourceSparseApplyMomentum.java | 3 +++ .../op/train/ResourceSparseApplyProximalAdagrad.java | 3 +++ .../op/train/ResourceSparseApplyProximalGradientDescent.java | 3 +++ .../org/tensorflow/op/train/ResourceSparseApplyRmsProp.java | 3 +++ .../src/gen/java/org/tensorflow/op/train/Restore.java | 3 +++ .../src/gen/java/org/tensorflow/op/train/RestoreSlice.java | 3 +++ .../src/gen/java/org/tensorflow/op/train/Save.java | 3 +++ .../src/gen/java/org/tensorflow/op/train/SaveSlices.java | 3 +++ .../src/gen/java/org/tensorflow/op/train/SdcaFprint.java | 3 +++ .../src/gen/java/org/tensorflow/op/train/SdcaOptimizer.java | 3 +++ .../src/gen/java/org/tensorflow/op/train/SdcaShrinkL1.java | 3 +++ .../gen/java/org/tensorflow/op/train/SparseApplyAdadelta.java | 3 +++ .../gen/java/org/tensorflow/op/train/SparseApplyAdagrad.java | 3 +++ .../gen/java/org/tensorflow/op/train/SparseApplyAdagradDa.java | 3 +++ .../org/tensorflow/op/train/SparseApplyCenteredRmsProp.java | 3 +++ .../src/gen/java/org/tensorflow/op/train/SparseApplyFtrl.java | 3 +++ .../gen/java/org/tensorflow/op/train/SparseApplyMomentum.java | 3 +++ .../org/tensorflow/op/train/SparseApplyProximalAdagrad.java | 3 +++ .../op/train/SparseApplyProximalGradientDescent.java | 3 +++ .../gen/java/org/tensorflow/op/train/SparseApplyRmsProp.java | 3 +++ .../src/gen/java/org/tensorflow/op/train/TileGrad.java | 3 +++ .../src/gen/java/org/tensorflow/op/xla/BroadcastHelper.java | 3 +++ .../src/gen/java/org/tensorflow/op/xla/ClusterOutput.java | 3 +++ .../src/gen/java/org/tensorflow/op/xla/Conv.java | 3 +++ .../src/gen/java/org/tensorflow/op/xla/Dequantize.java | 3 +++ .../src/gen/java/org/tensorflow/op/xla/Dot.java | 3 +++ .../src/gen/java/org/tensorflow/op/xla/DynamicSlice.java | 3 +++ .../src/gen/java/org/tensorflow/op/xla/DynamicUpdateSlice.java | 3 +++ .../src/gen/java/org/tensorflow/op/xla/Einsum.java | 3 +++ .../src/gen/java/org/tensorflow/op/xla/Gather.java | 3 +++ .../src/gen/java/org/tensorflow/op/xla/KeyValueSort.java | 3 +++ .../src/gen/java/org/tensorflow/op/xla/Pad.java | 3 +++ .../src/gen/java/org/tensorflow/op/xla/Recv.java | 3 +++ .../src/gen/java/org/tensorflow/op/xla/ReplicaId.java | 3 +++ .../src/gen/java/org/tensorflow/op/xla/SelfAdjointEig.java | 3 +++ .../src/gen/java/org/tensorflow/op/xla/Send.java | 3 +++ .../src/gen/java/org/tensorflow/op/xla/Sharding.java | 3 +++ .../src/gen/java/org/tensorflow/op/xla/Sort.java | 3 +++ .../src/gen/java/org/tensorflow/op/xla/Svd.java | 3 +++ 1002 files changed, 3006 insertions(+) diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/audio/AudioSpectrogram.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/audio/AudioSpectrogram.java index 6774323de4d..28fdb7791bc 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/audio/AudioSpectrogram.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/audio/AudioSpectrogram.java @@ -127,6 +127,9 @@ public Output asOutput() { return spectrogram; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "AudioSpectrogram"; + private Output spectrogram; private AudioSpectrogram(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/audio/DecodeWav.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/audio/DecodeWav.java index a58d814660c..ec80ffdaf7c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/audio/DecodeWav.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/audio/DecodeWav.java @@ -132,6 +132,9 @@ public Output sampleRate() { return sampleRate; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DecodeWav"; + private Output audio; private Output sampleRate; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/audio/EncodeWav.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/audio/EncodeWav.java index 2336a3124c5..b1920318564 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/audio/EncodeWav.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/audio/EncodeWav.java @@ -72,6 +72,9 @@ public Output asOutput() { return contents; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "EncodeWav"; + private Output contents; private EncodeWav(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/audio/Mfcc.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/audio/Mfcc.java index a13d22fdb4a..07ab4a13215 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/audio/Mfcc.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/audio/Mfcc.java @@ -165,6 +165,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Mfcc"; + private Output output; private Mfcc(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/bitwise/BitwiseAnd.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/bitwise/BitwiseAnd.java index 70318891190..e199ff2201f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/bitwise/BitwiseAnd.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/bitwise/BitwiseAnd.java @@ -84,6 +84,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BitwiseAnd"; + private Output z; private BitwiseAnd(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/bitwise/BitwiseOr.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/bitwise/BitwiseOr.java index 4d882a6c202..264c2bc340b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/bitwise/BitwiseOr.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/bitwise/BitwiseOr.java @@ -84,6 +84,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BitwiseOr"; + private Output z; private BitwiseOr(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/bitwise/BitwiseXor.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/bitwise/BitwiseXor.java index 597ae15fb90..1d8f668c175 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/bitwise/BitwiseXor.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/bitwise/BitwiseXor.java @@ -84,6 +84,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BitwiseXor"; + private Output z; private BitwiseXor(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/bitwise/Invert.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/bitwise/Invert.java index 6cbacade24d..9f8bdfd56d8 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/bitwise/Invert.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/bitwise/Invert.java @@ -103,6 +103,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Invert"; + private Output y; private Invert(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/bitwise/LeftShift.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/bitwise/LeftShift.java index bddf9269c42..f7a47534d81 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/bitwise/LeftShift.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/bitwise/LeftShift.java @@ -95,6 +95,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LeftShift"; + private Output z; private LeftShift(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/bitwise/RightShift.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/bitwise/RightShift.java index 92487345d8c..99c5fe5766e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/bitwise/RightShift.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/bitwise/RightShift.java @@ -98,6 +98,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RightShift"; + private Output z; private RightShift(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/cluster/KMC2ChainInitialization.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/cluster/KMC2ChainInitialization.java index 350036bbdc6..272695dad5c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/cluster/KMC2ChainInitialization.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/cluster/KMC2ChainInitialization.java @@ -68,6 +68,9 @@ public Output asOutput() { return index; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "KMC2ChainInitialization"; + private Output index; private KMC2ChainInitialization(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/cluster/KmeansPlusPlusInitialization.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/cluster/KmeansPlusPlusInitialization.java index a8d6f3eb70b..63d8ef01222 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/cluster/KmeansPlusPlusInitialization.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/cluster/KmeansPlusPlusInitialization.java @@ -74,6 +74,9 @@ public Output asOutput() { return samples; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "KmeansPlusPlusInitialization"; + private Output samples; private KmeansPlusPlusInitialization(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/collective/AllReduce.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/collective/AllReduce.java index 40125fa7856..3776697d4e0 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/collective/AllReduce.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/collective/AllReduce.java @@ -135,6 +135,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "CollectiveReduce"; + private Output output; private AllReduce(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/collective/BroadcastRecv.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/collective/BroadcastRecv.java index c754a3d9dea..babdee94a27 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/collective/BroadcastRecv.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/collective/BroadcastRecv.java @@ -104,6 +104,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "CollectiveBcastRecv"; + private Output output; private BroadcastRecv(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/collective/BroadcastSend.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/collective/BroadcastSend.java index 72f721a9fa3..41b8faa0f67 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/collective/BroadcastSend.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/collective/BroadcastSend.java @@ -103,6 +103,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "CollectiveBcastSend"; + private Output output; private BroadcastSend(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Abort.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Abort.java index 6fde31b3dbc..53e9401dfa2 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Abort.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Abort.java @@ -101,6 +101,9 @@ public static Options exitWithoutError(Boolean exitWithoutError) { return new Options().exitWithoutError(exitWithoutError); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Abort"; + private Abort(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/All.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/All.java index 2c92e6934cc..909427d1a57 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/All.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/All.java @@ -104,6 +104,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "All"; + private Output output; private All(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Any.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Any.java index c30305b2207..0316e5e1a94 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Any.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Any.java @@ -104,6 +104,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Any"; + private Output output; private Any(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssertThat.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssertThat.java index a56b01c90aa..950830b7462 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssertThat.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssertThat.java @@ -87,6 +87,9 @@ public static Options summarize(Long summarize) { return new Options().summarize(summarize); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Assert"; + private AssertThat(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Assign.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Assign.java index c0319759f33..27f66d3da23 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Assign.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Assign.java @@ -127,6 +127,9 @@ public Output asOutput() { return outputRef; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Assign"; + private Output outputRef; private Assign(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssignAdd.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssignAdd.java index 9208756aa95..770842d2764 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssignAdd.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssignAdd.java @@ -104,6 +104,9 @@ public Output asOutput() { return outputRef; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "AssignAdd"; + private Output outputRef; private AssignAdd(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssignAddVariableOp.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssignAddVariableOp.java index 3725c318637..5adaccf15e0 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssignAddVariableOp.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssignAddVariableOp.java @@ -52,6 +52,9 @@ public static AssignAddVariableOp create(Scope scope, Operand< return new AssignAddVariableOp(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "AssignAddVariableOp"; + private AssignAddVariableOp(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssignSub.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssignSub.java index 13506b03543..37841e0dadc 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssignSub.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssignSub.java @@ -104,6 +104,9 @@ public Output asOutput() { return outputRef; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "AssignSub"; + private Output outputRef; private AssignSub(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssignSubVariableOp.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssignSubVariableOp.java index c47fc330702..4bb683c97d2 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssignSubVariableOp.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssignSubVariableOp.java @@ -52,6 +52,9 @@ public static AssignSubVariableOp create(Scope scope, Operand< return new AssignSubVariableOp(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "AssignSubVariableOp"; + private AssignSubVariableOp(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssignVariableOp.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssignVariableOp.java index bdd89c0204d..90cabd12a24 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssignVariableOp.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssignVariableOp.java @@ -52,6 +52,9 @@ public static AssignVariableOp create(Scope scope, Operand return new AssignVariableOp(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "AssignVariableOp"; + private AssignVariableOp(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Barrier.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Barrier.java index dea40abd45c..b9c5c84083f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Barrier.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Barrier.java @@ -181,6 +181,9 @@ public Output asOutput() { return handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Barrier"; + private Output handle; private Barrier(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BarrierClose.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BarrierClose.java index 2b1cbc84c2b..a777d684ec1 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BarrierClose.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BarrierClose.java @@ -92,6 +92,9 @@ public static Options cancelPendingEnqueues(Boolean cancelPendingEnqueues) { return new Options().cancelPendingEnqueues(cancelPendingEnqueues); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BarrierClose"; + private BarrierClose(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BarrierIncompleteSize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BarrierIncompleteSize.java index 62bcdcf1e56..72dbe1533d6 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BarrierIncompleteSize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BarrierIncompleteSize.java @@ -62,6 +62,9 @@ public Output asOutput() { return size; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BarrierIncompleteSize"; + private Output size; private BarrierIncompleteSize(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BarrierInsertMany.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BarrierInsertMany.java index 8e16fe1df11..31488738838 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BarrierInsertMany.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BarrierInsertMany.java @@ -60,6 +60,9 @@ public static BarrierInsertMany create(Scope scope, Operand asOutput() { return size; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BarrierReadySize"; + private Output size; private BarrierReadySize(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BarrierTakeMany.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BarrierTakeMany.java index 481cdcd1d7a..6c391fab5fa 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BarrierTakeMany.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BarrierTakeMany.java @@ -172,6 +172,9 @@ public List> values() { return values; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BarrierTakeMany"; + private Output indices; private Output keys; private List> values; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Batch.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Batch.java index 895ad5e3c77..21d7cf0a6c0 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Batch.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Batch.java @@ -228,6 +228,9 @@ public Output id() { return id; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Batch"; + private List> batchedTensors; private Output batchIndex; private Output id; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BatchToSpace.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BatchToSpace.java index 3d1fc8af44e..b20c60ee4ac 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BatchToSpace.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BatchToSpace.java @@ -134,6 +134,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BatchToSpace"; + private Output output; private BatchToSpace(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BatchToSpaceNd.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BatchToSpaceNd.java index 8c2a3d9b703..ef6f31d0f89 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BatchToSpaceNd.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BatchToSpaceNd.java @@ -168,6 +168,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BatchToSpaceND"; + private Output output; private BatchToSpaceNd(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Bitcast.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Bitcast.java index fa7777e0d98..b01c8598ae6 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Bitcast.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Bitcast.java @@ -115,6 +115,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Bitcast"; + private Output output; private Bitcast(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BroadcastDynamicShape.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BroadcastDynamicShape.java index 88758189167..3027e8234a4 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BroadcastDynamicShape.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BroadcastDynamicShape.java @@ -67,6 +67,9 @@ public Output asOutput() { return r0; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BroadcastArgs"; + private Output r0; private BroadcastDynamicShape(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BroadcastGradientArgs.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BroadcastGradientArgs.java index 309cfef9430..2d95c71086e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BroadcastGradientArgs.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BroadcastGradientArgs.java @@ -66,6 +66,9 @@ public Output r1() { return r1; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BroadcastGradientArgs"; + private Output r0; private Output r1; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BroadcastTo.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BroadcastTo.java index e4c1b80764f..7e1a7b89324 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BroadcastTo.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BroadcastTo.java @@ -84,6 +84,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BroadcastTo"; + private Output output; private BroadcastTo(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Bucketize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Bucketize.java index f7f32115de1..84e9b454d0d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Bucketize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Bucketize.java @@ -84,6 +84,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Bucketize"; + private Output output; private Bucketize(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ClipByValue.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ClipByValue.java index 1c33f21ba98..8a5b99d9389 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ClipByValue.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ClipByValue.java @@ -73,6 +73,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ClipByValue"; + private Output output; private ClipByValue(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/CollectiveGather.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/CollectiveGather.java index da4f82ad2a2..22ce5634f75 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/CollectiveGather.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/CollectiveGather.java @@ -104,6 +104,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "CollectiveGather"; + private Output output; private CollectiveGather(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Concat.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Concat.java index eb62cb86bf5..9782b3d6ec9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Concat.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Concat.java @@ -70,6 +70,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ConcatV2"; + private Output output; private Concat(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ConsumeMutexLock.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ConsumeMutexLock.java index 8a7440297f3..39dd4ffc7d9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ConsumeMutexLock.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ConsumeMutexLock.java @@ -54,6 +54,9 @@ public static ConsumeMutexLock create(Scope scope, Operand mutexLock) { return new ConsumeMutexLock(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ConsumeMutexLock"; + private ConsumeMutexLock(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ControlTrigger.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ControlTrigger.java index 9c1baf17ed3..721112b8204 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ControlTrigger.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ControlTrigger.java @@ -45,6 +45,9 @@ public static ControlTrigger create(Scope scope) { return new ControlTrigger(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ControlTrigger"; + private ControlTrigger(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Copy.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Copy.java index 6ca879bf1b9..fb9cbbb122a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Copy.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Copy.java @@ -135,6 +135,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Copy"; + private Output output; private Copy(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/CopyHost.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/CopyHost.java index b57961ead25..566258c0430 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/CopyHost.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/CopyHost.java @@ -133,6 +133,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "CopyHost"; + private Output output; private CopyHost(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/CountUpTo.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/CountUpTo.java index 84dfbc90633..2884783695d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/CountUpTo.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/CountUpTo.java @@ -67,6 +67,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "CountUpTo"; + private Output output; private CountUpTo(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DecodeProto.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DecodeProto.java index 8a423575c08..28af55f8465 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DecodeProto.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DecodeProto.java @@ -206,6 +206,9 @@ public List> values() { return values; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DecodeProtoV2"; + private Output sizes; private List> values; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DeepCopy.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DeepCopy.java index 0abe365a8a9..da22489acc9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DeepCopy.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DeepCopy.java @@ -63,6 +63,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DeepCopy"; + private Output y; private DeepCopy(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DeleteSessionTensor.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DeleteSessionTensor.java index 2da72b19db9..50c7615a0ff 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DeleteSessionTensor.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DeleteSessionTensor.java @@ -47,6 +47,9 @@ public static DeleteSessionTensor create(Scope scope, Operand handle) { return new DeleteSessionTensor(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DeleteSessionTensor"; + private DeleteSessionTensor(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DestroyResourceOp.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DestroyResourceOp.java index dc494cea751..e1958682ee1 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DestroyResourceOp.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DestroyResourceOp.java @@ -85,6 +85,9 @@ public static Options ignoreLookupError(Boolean ignoreLookupError) { return new Options().ignoreLookupError(ignoreLookupError); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DestroyResourceOp"; + private DestroyResourceOp(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DestroyTemporaryVariable.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DestroyTemporaryVariable.java index 65fa9c62e4a..7941a7a5870 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DestroyTemporaryVariable.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DestroyTemporaryVariable.java @@ -72,6 +72,9 @@ public Output asOutput() { return value; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DestroyTemporaryVariable"; + private Output value; private DestroyTemporaryVariable(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DummyMemoryCache.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DummyMemoryCache.java index c5a6187d1ed..56f16d48a9b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DummyMemoryCache.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DummyMemoryCache.java @@ -56,6 +56,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DummyMemoryCache"; + private Output handle; private DummyMemoryCache(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DynamicPartition.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DynamicPartition.java index 48dd3b54f8e..d9da09b5d34 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DynamicPartition.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DynamicPartition.java @@ -104,6 +104,9 @@ public Iterator> iterator() { return (Iterator) outputs.iterator(); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DynamicPartition"; + private List> outputs; @SuppressWarnings("unchecked") diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DynamicStitch.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DynamicStitch.java index ba41dcf77f8..b7dd72f8a57 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DynamicStitch.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DynamicStitch.java @@ -120,6 +120,9 @@ public Output asOutput() { return merged; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DynamicStitch"; + private Output merged; private DynamicStitch(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/EditDistance.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/EditDistance.java index 7c0a35798d5..29423a3c548 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/EditDistance.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/EditDistance.java @@ -151,6 +151,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "EditDistance"; + private Output output; private EditDistance(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Empty.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Empty.java index 0e39ea25f92..c8305349d37 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Empty.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Empty.java @@ -102,6 +102,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Empty"; + private Output output; private Empty(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/EmptyTensorList.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/EmptyTensorList.java index e91ebafbb03..619fb90657f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/EmptyTensorList.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/EmptyTensorList.java @@ -74,6 +74,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "EmptyTensorList"; + private Output handle; private EmptyTensorList(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/EncodeProto.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/EncodeProto.java index 6f2e448d053..4d0396dcb9d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/EncodeProto.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/EncodeProto.java @@ -147,6 +147,9 @@ public Output asOutput() { return bytes; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "EncodeProto"; + private Output bytes; private EncodeProto(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/EnsureShape.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/EnsureShape.java index 3b8a8790afa..8ea86427b7c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/EnsureShape.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/EnsureShape.java @@ -68,6 +68,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "EnsureShape"; + private Output output; private EnsureShape(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Enter.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Enter.java index d6802061959..fa19763defb 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Enter.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Enter.java @@ -122,6 +122,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Enter"; + private Output output; private Enter(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Exit.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Exit.java index 879225e5dbc..4e42bb0bb0e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Exit.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Exit.java @@ -63,6 +63,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Exit"; + private Output output; private Exit(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ExpandDims.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ExpandDims.java index 12cb36b98dc..eb0e977e163 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ExpandDims.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ExpandDims.java @@ -97,6 +97,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ExpandDims"; + private Output output; private ExpandDims(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ExtractVolumePatches.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ExtractVolumePatches.java index 6816275860b..0b9bcd78e20 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ExtractVolumePatches.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ExtractVolumePatches.java @@ -90,6 +90,9 @@ public Output asOutput() { return patches; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ExtractVolumePatches"; + private Output patches; private ExtractVolumePatches(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Fill.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Fill.java index adbcc23f363..79b827ea2aa 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Fill.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Fill.java @@ -91,6 +91,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Fill"; + private Output output; private Fill(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Fingerprint.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Fingerprint.java index 4aca6b0201e..0ea88f2b1f1 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Fingerprint.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Fingerprint.java @@ -96,6 +96,9 @@ public Output asOutput() { return fingerprint; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Fingerprint"; + private Output fingerprint; private Fingerprint(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Gather.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Gather.java index 8eaec57f813..f40581ef26c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Gather.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Gather.java @@ -130,6 +130,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "GatherV2"; + private Output output; private Gather(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/GatherNd.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/GatherNd.java index 917db87705f..e932794001e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/GatherNd.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/GatherNd.java @@ -159,6 +159,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "GatherNd"; + private Output output; private GatherNd(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/GetSessionHandle.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/GetSessionHandle.java index 57754705177..93a31f1cba1 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/GetSessionHandle.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/GetSessionHandle.java @@ -62,6 +62,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "GetSessionHandleV2"; + private Output handle; private GetSessionHandle(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/GetSessionTensor.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/GetSessionTensor.java index 634b23ed56c..93ba5af508c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/GetSessionTensor.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/GetSessionTensor.java @@ -66,6 +66,9 @@ public Output asOutput() { return value; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "GetSessionTensor"; + private Output value; private GetSessionTensor(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/GuaranteeConst.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/GuaranteeConst.java index ff9064f3ac9..df0a48ad28f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/GuaranteeConst.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/GuaranteeConst.java @@ -68,6 +68,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "GuaranteeConst"; + private Output output; private GuaranteeConst(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/HashTable.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/HashTable.java index 2b097647e32..87d9cab4c3f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/HashTable.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/HashTable.java @@ -146,6 +146,9 @@ public Output asOutput() { return (Output) tableHandle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "HashTableV2"; + private Output tableHandle; private HashTable(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/HistogramFixedWidth.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/HistogramFixedWidth.java index b7f7a90a90d..da1c1a7b713 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/HistogramFixedWidth.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/HistogramFixedWidth.java @@ -105,6 +105,9 @@ public Output asOutput() { return out; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "HistogramFixedWidth"; + private Output out; private HistogramFixedWidth(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Identity.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Identity.java index 32c3d0d4cab..1cafffdf5c9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Identity.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Identity.java @@ -61,6 +61,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Identity"; + private Output output; private Identity(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/IdentityN.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/IdentityN.java index 4ad5ab1f261..e000005eabf 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/IdentityN.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/IdentityN.java @@ -80,6 +80,9 @@ public Iterator> iterator() { return (Iterator) output.iterator(); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "IdentityN"; + private List> output; private IdentityN(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ImmutableConst.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ImmutableConst.java index c301ab66ca4..ecbc3154498 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ImmutableConst.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ImmutableConst.java @@ -70,6 +70,9 @@ public Output asOutput() { return tensor; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ImmutableConst"; + private Output tensor; private ImmutableConst(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/InitializeTable.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/InitializeTable.java index 2ffb3c37290..5de2ca6ff07 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/InitializeTable.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/InitializeTable.java @@ -51,6 +51,9 @@ public static InitializeTable create(Scope sc return new InitializeTable(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "InitializeTableV2"; + private InitializeTable(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/InitializeTableFromTextFile.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/InitializeTableFromTextFile.java index 672bf052e49..0a88cea3ef2 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/InitializeTableFromTextFile.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/InitializeTableFromTextFile.java @@ -118,6 +118,9 @@ public static Options delimiter(String delimiter) { return new Options().delimiter(delimiter); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "InitializeTableFromTextFileV2"; + private InitializeTableFromTextFile(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/InplaceAdd.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/InplaceAdd.java index 5eab2e36d95..8de34bc569f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/InplaceAdd.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/InplaceAdd.java @@ -69,6 +69,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "InplaceAdd"; + private Output y; private InplaceAdd(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/InplaceSub.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/InplaceSub.java index 7ff3c5ef9bc..999f793c869 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/InplaceSub.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/InplaceSub.java @@ -69,6 +69,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "InplaceSub"; + private Output y; private InplaceSub(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/InplaceUpdate.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/InplaceUpdate.java index 877c9400f7f..a7c616cbbc2 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/InplaceUpdate.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/InplaceUpdate.java @@ -69,6 +69,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "InplaceUpdate"; + private Output y; private InplaceUpdate(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/IsVariableInitialized.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/IsVariableInitialized.java index f4f6bf5fe36..e9dc32ec1d7 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/IsVariableInitialized.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/IsVariableInitialized.java @@ -62,6 +62,9 @@ public Output asOutput() { return isInitialized; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "IsVariableInitialized"; + private Output isInitialized; private IsVariableInitialized(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LinSpace.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LinSpace.java index c8b4d2dfa95..5dbd14154de 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LinSpace.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LinSpace.java @@ -77,6 +77,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LinSpace"; + private Output output; private LinSpace(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableExport.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableExport.java index 0f31790fe45..6bebbb35895 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableExport.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableExport.java @@ -70,6 +70,9 @@ public Output values() { return values; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LookupTableExportV2"; + private Output keys; private Output values; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableFind.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableFind.java index e0dbead12d2..bfc8e92e16f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableFind.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableFind.java @@ -73,6 +73,9 @@ public Output asOutput() { return values; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LookupTableFindV2"; + private Output values; private LookupTableFind(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableImport.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableImport.java index 3df4d4653e0..a94393a50f1 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableImport.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableImport.java @@ -54,6 +54,9 @@ public static LookupTableImport create(Scope return new LookupTableImport(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LookupTableImportV2"; + private LookupTableImport(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableInsert.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableInsert.java index 9e355312479..c31784ea942 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableInsert.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableInsert.java @@ -54,6 +54,9 @@ public static LookupTableInsert create(Scope return new LookupTableInsert(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LookupTableInsertV2"; + private LookupTableInsert(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableRemove.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableRemove.java index 875bbfa486c..584e7e1325c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableRemove.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableRemove.java @@ -51,6 +51,9 @@ public static LookupTableRemove create(Scope scope, Operand return new LookupTableRemove(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LookupTableRemoveV2"; + private LookupTableRemove(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableSize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableSize.java index 441c2208bd3..10e84953496 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableSize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableSize.java @@ -60,6 +60,9 @@ public Output asOutput() { return size; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LookupTableSizeV2"; + private Output size; private LookupTableSize(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LoopCond.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LoopCond.java index bef80f40840..57b82598f84 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LoopCond.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LoopCond.java @@ -63,6 +63,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LoopCond"; + private Output output; private LoopCond(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LowerBound.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LowerBound.java index dfce8ac4d1f..6f0f5158cca 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LowerBound.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LowerBound.java @@ -103,6 +103,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LowerBound"; + private Output output; private LowerBound(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapClear.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapClear.java index 5ffc0da9c6c..ea7581ef2c7 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapClear.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapClear.java @@ -142,6 +142,9 @@ public static Options sharedName(String sharedName) { return new Options().sharedName(sharedName); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MapClear"; + private MapClear(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapIncompleteSize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapIncompleteSize.java index a4522bb2993..19e9e87a08a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapIncompleteSize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapIncompleteSize.java @@ -156,6 +156,9 @@ public Output asOutput() { return size; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MapIncompleteSize"; + private Output size; private MapIncompleteSize(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapPeek.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapPeek.java index 38087a7b46f..1925ca680ea 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapPeek.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapPeek.java @@ -168,6 +168,9 @@ public Iterator> iterator() { return (Iterator) values.iterator(); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MapPeek"; + private List> values; private MapPeek(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapSize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapSize.java index 20a2b619d1e..7f4eea906f5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapSize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapSize.java @@ -156,6 +156,9 @@ public Output asOutput() { return size; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MapSize"; + private Output size; private MapSize(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapStage.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapStage.java index cc09bdf78a2..5d72ce8f22f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapStage.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapStage.java @@ -157,6 +157,9 @@ public static Options sharedName(String sharedName) { return new Options().sharedName(sharedName); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MapStage"; + private MapStage(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapUnstage.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapUnstage.java index 932c1f4f970..849f6f3ef6a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapUnstage.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapUnstage.java @@ -168,6 +168,9 @@ public Iterator> iterator() { return (Iterator) values.iterator(); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MapUnstage"; + private List> values; private MapUnstage(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapUnstageNoKey.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapUnstageNoKey.java index a915362108e..10a119ec6c4 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapUnstageNoKey.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapUnstageNoKey.java @@ -164,6 +164,9 @@ public List> values() { return values; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MapUnstageNoKey"; + private Output key; private List> values; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Max.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Max.java index e97fc9d17ca..94bcd0f544c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Max.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Max.java @@ -105,6 +105,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Max"; + private Output output; private Max(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Merge.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Merge.java index 476253b5601..41eca5fc33f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Merge.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Merge.java @@ -72,6 +72,9 @@ public Output valueIndex() { return valueIndex; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Merge"; + private Output output; private Output valueIndex; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Min.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Min.java index c19b8eaefdf..ed8ea366e7a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Min.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Min.java @@ -105,6 +105,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Min"; + private Output output; private Min(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MirrorPad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MirrorPad.java index beb9448138c..6c8292a671a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MirrorPad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MirrorPad.java @@ -98,6 +98,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MirrorPad"; + private Output output; private MirrorPad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MirrorPadGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MirrorPadGrad.java index ee3a76eab9f..7b1727c3fb5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MirrorPadGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MirrorPadGrad.java @@ -86,6 +86,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MirrorPadGrad"; + private Output output; private MirrorPadGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MlirPassthroughOp.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MlirPassthroughOp.java index fc482784607..a6c92896683 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MlirPassthroughOp.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MlirPassthroughOp.java @@ -103,6 +103,9 @@ public Iterator> iterator() { return (Iterator) outputs.iterator(); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MlirPassthroughOp"; + private List> outputs; private MlirPassthroughOp(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MutableDenseHashTable.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MutableDenseHashTable.java index 1b5fca24ce2..4ff3c1f3ea6 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MutableDenseHashTable.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MutableDenseHashTable.java @@ -212,6 +212,9 @@ public Output asOutput() { return (Output) tableHandle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MutableDenseHashTableV2"; + private Output tableHandle; private MutableDenseHashTable(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MutableHashTable.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MutableHashTable.java index 74d304d82ab..a11789f9f34 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MutableHashTable.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MutableHashTable.java @@ -146,6 +146,9 @@ public Output asOutput() { return (Output) tableHandle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MutableHashTableV2"; + private Output tableHandle; private MutableHashTable(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MutableHashTableOfTensors.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MutableHashTableOfTensors.java index 6ef45423fba..975f040ae3b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MutableHashTableOfTensors.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MutableHashTableOfTensors.java @@ -164,6 +164,9 @@ public Output asOutput() { return (Output) tableHandle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MutableHashTableOfTensorsV2"; + private Output tableHandle; private MutableHashTableOfTensors(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Mutex.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Mutex.java index 41f57d9a755..1af2b439372 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Mutex.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Mutex.java @@ -116,6 +116,9 @@ public Output asOutput() { return (Output) resource; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MutexV2"; + private Output resource; private Mutex(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MutexLock.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MutexLock.java index e67ea7a228b..de28b8f5025 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MutexLock.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MutexLock.java @@ -99,6 +99,9 @@ public Output asOutput() { return (Output) mutexLock; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MutexLock"; + private Output mutexLock; private MutexLock(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/NcclAllReduce.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/NcclAllReduce.java index 179e8f08e1d..a44611b5a41 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/NcclAllReduce.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/NcclAllReduce.java @@ -80,6 +80,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "NcclAllReduce"; + private Output output; private NcclAllReduce(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/NcclBroadcast.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/NcclBroadcast.java index 70339b3853a..da0832e437a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/NcclBroadcast.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/NcclBroadcast.java @@ -74,6 +74,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "NcclBroadcast"; + private Output output; private NcclBroadcast(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/NcclReduce.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/NcclReduce.java index c6376f1a908..ced1473e60a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/NcclReduce.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/NcclReduce.java @@ -73,6 +73,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "NcclReduce"; + private Output output; private NcclReduce(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/NextIteration.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/NextIteration.java index 99f0fa0dd1b..69b6be6a810 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/NextIteration.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/NextIteration.java @@ -62,6 +62,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "NextIteration"; + private Output output; private NextIteration(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/NoOp.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/NoOp.java index aa37e24c61a..862aabcd795 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/NoOp.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/NoOp.java @@ -43,6 +43,9 @@ public static NoOp create(Scope scope) { return new NoOp(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "NoOp"; + private NoOp(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OneHot.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OneHot.java index 9b4d6a4927d..442b9ae9108 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OneHot.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OneHot.java @@ -185,6 +185,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "OneHot"; + private Output output; private OneHot(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OnesLike.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OnesLike.java index 5d9ce5861c2..986d0201f26 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OnesLike.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OnesLike.java @@ -62,6 +62,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "OnesLike"; + private Output y; private OnesLike(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapClear.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapClear.java index df85e76bc3b..29f4133ce09 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapClear.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapClear.java @@ -142,6 +142,9 @@ public static Options sharedName(String sharedName) { return new Options().sharedName(sharedName); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "OrderedMapClear"; + private OrderedMapClear(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapIncompleteSize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapIncompleteSize.java index 9ae3fd09642..865810568db 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapIncompleteSize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapIncompleteSize.java @@ -156,6 +156,9 @@ public Output asOutput() { return size; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "OrderedMapIncompleteSize"; + private Output size; private OrderedMapIncompleteSize(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapPeek.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapPeek.java index dd7fc0e3f40..21c6adcc039 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapPeek.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapPeek.java @@ -169,6 +169,9 @@ public Iterator> iterator() { return (Iterator) values.iterator(); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "OrderedMapPeek"; + private List> values; private OrderedMapPeek(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapSize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapSize.java index d16383393f4..afdee7de1bd 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapSize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapSize.java @@ -156,6 +156,9 @@ public Output asOutput() { return size; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "OrderedMapSize"; + private Output size; private OrderedMapSize(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapStage.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapStage.java index c752a0dd84e..b51f94c148a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapStage.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapStage.java @@ -159,6 +159,9 @@ public static Options sharedName(String sharedName) { return new Options().sharedName(sharedName); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "OrderedMapStage"; + private OrderedMapStage(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapUnstage.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapUnstage.java index c44e344638d..e2460e42dd8 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapUnstage.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapUnstage.java @@ -168,6 +168,9 @@ public Iterator> iterator() { return (Iterator) values.iterator(); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "OrderedMapUnstage"; + private List> values; private OrderedMapUnstage(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapUnstageNoKey.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapUnstageNoKey.java index d0fa6beea68..f20a23b9806 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapUnstageNoKey.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapUnstageNoKey.java @@ -164,6 +164,9 @@ public List> values() { return values; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "OrderedMapUnstageNoKey"; + private Output key; private List> values; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Pad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Pad.java index c21f7aa9a58..205e6ab0a62 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Pad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Pad.java @@ -91,6 +91,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "PadV2"; + private Output output; private Pad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ParallelConcat.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ParallelConcat.java index ed9af9dde57..e373612bb68 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ParallelConcat.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ParallelConcat.java @@ -83,6 +83,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ParallelConcat"; + private Output output; private ParallelConcat(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ParallelDynamicStitch.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ParallelDynamicStitch.java index 3fd6514f285..2770fa01591 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ParallelDynamicStitch.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ParallelDynamicStitch.java @@ -119,6 +119,9 @@ public Output asOutput() { return merged; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ParallelDynamicStitch"; + private Output merged; private ParallelDynamicStitch(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Placeholder.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Placeholder.java index c9c7727fcf8..caef9fc0783 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Placeholder.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Placeholder.java @@ -104,6 +104,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Placeholder"; + private Output output; private Placeholder(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/PlaceholderWithDefault.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/PlaceholderWithDefault.java index e794a0623cb..59a9ca223ab 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/PlaceholderWithDefault.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/PlaceholderWithDefault.java @@ -65,6 +65,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "PlaceholderWithDefault"; + private Output output; private PlaceholderWithDefault(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Print.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Print.java index 1f341e11de5..3e96c00d369 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Print.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Print.java @@ -102,6 +102,9 @@ public static Options end(String end) { return new Options().end(end); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "PrintV2"; + private Print(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Prod.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Prod.java index b9b7b8b65a4..6bf1b7cd37d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Prod.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Prod.java @@ -105,6 +105,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Prod"; + private Output output; private Prod(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/QuantizedReshape.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/QuantizedReshape.java index f4996cd8875..e644855bbc9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/QuantizedReshape.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/QuantizedReshape.java @@ -80,6 +80,9 @@ public Output outputMax() { return outputMax; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizedReshape"; + private Output output; private Output outputMin; private Output outputMax; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Range.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Range.java index 5134f49c314..967a490382e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Range.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Range.java @@ -79,6 +79,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Range"; + private Output output; private Range(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Rank.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Rank.java index f7e1959280d..071551d6492 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Rank.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Rank.java @@ -72,6 +72,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Rank"; + private Output output; private Rank(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ReadVariableOp.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ReadVariableOp.java index c535547a925..aa2d1d2b9b2 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ReadVariableOp.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ReadVariableOp.java @@ -71,6 +71,9 @@ public Output asOutput() { return value; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ReadVariableOp"; + private Output value; private ReadVariableOp(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Recv.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Recv.java index 5feb610b6fd..db6511c1583 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Recv.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Recv.java @@ -110,6 +110,9 @@ public Output asOutput() { return tensor; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Recv"; + private Output tensor; private Recv(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ReduceAll.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ReduceAll.java index 195a7bbbce8..9a5ad026ac8 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ReduceAll.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ReduceAll.java @@ -104,6 +104,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "All"; + private Output output; private ReduceAll(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ReduceAny.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ReduceAny.java index 9dde0ff6238..de479629f97 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ReduceAny.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ReduceAny.java @@ -104,6 +104,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Any"; + private Output output; private ReduceAny(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ReduceMax.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ReduceMax.java index 1df06cb441d..997481542b8 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ReduceMax.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ReduceMax.java @@ -105,6 +105,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Max"; + private Output output; private ReduceMax(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ReduceMin.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ReduceMin.java index 2ebdaa01247..60d64c3a58c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ReduceMin.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ReduceMin.java @@ -105,6 +105,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Min"; + private Output output; private ReduceMin(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ReduceProd.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ReduceProd.java index 37fcf044469..7c9872758b1 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ReduceProd.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ReduceProd.java @@ -105,6 +105,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Prod"; + private Output output; private ReduceProd(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ReduceSum.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ReduceSum.java index 82bf9d35558..f87e5b22e15 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ReduceSum.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ReduceSum.java @@ -105,6 +105,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Sum"; + private Output output; private ReduceSum(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/RefEnter.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/RefEnter.java index bec8abb5f80..8292dcbb379 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/RefEnter.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/RefEnter.java @@ -121,6 +121,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RefEnter"; + private Output output; private RefEnter(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/RefExit.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/RefExit.java index 80399854da4..d8896a59211 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/RefExit.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/RefExit.java @@ -63,6 +63,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RefExit"; + private Output output; private RefExit(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/RefIdentity.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/RefIdentity.java index e3840bfa886..9deff66c3a9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/RefIdentity.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/RefIdentity.java @@ -60,6 +60,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RefIdentity"; + private Output output; private RefIdentity(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/RefMerge.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/RefMerge.java index eab96521ea6..990cfaaadb6 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/RefMerge.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/RefMerge.java @@ -71,6 +71,9 @@ public Output valueIndex() { return valueIndex; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RefMerge"; + private Output output; private Output valueIndex; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/RefNextIteration.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/RefNextIteration.java index bb1423440fd..c151662820e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/RefNextIteration.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/RefNextIteration.java @@ -62,6 +62,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RefNextIteration"; + private Output output; private RefNextIteration(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/RefSelect.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/RefSelect.java index 23864ed4820..8be3ae40e9e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/RefSelect.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/RefSelect.java @@ -66,6 +66,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RefSelect"; + private Output output; private RefSelect(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/RefSwitch.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/RefSwitch.java index b45250bb083..f0128f668fc 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/RefSwitch.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/RefSwitch.java @@ -72,6 +72,9 @@ public Output outputTrue() { return outputTrue; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RefSwitch"; + private Output outputFalse; private Output outputTrue; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/RemoteFusedGraphExecute.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/RemoteFusedGraphExecute.java index 0242749bda6..bd76549c976 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/RemoteFusedGraphExecute.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/RemoteFusedGraphExecute.java @@ -83,6 +83,9 @@ public Iterator> iterator() { return (Iterator) outputs.iterator(); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RemoteFusedGraphExecute"; + private List> outputs; private RemoteFusedGraphExecute(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Reshape.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Reshape.java index eaeaa5ded4e..2829a332b0e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Reshape.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Reshape.java @@ -124,6 +124,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Reshape"; + private Output output; private Reshape(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceCountUpTo.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceCountUpTo.java index cce86ab05ce..19f630dd014 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceCountUpTo.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceCountUpTo.java @@ -70,6 +70,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceCountUpTo"; + private Output output; private ResourceCountUpTo(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceGather.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceGather.java index fd8ccc35cfa..38aa1fbd407 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceGather.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceGather.java @@ -134,6 +134,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceGather"; + private Output output; private ResourceGather(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceGatherNd.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceGatherNd.java index f2c501ec524..85e422179f7 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceGatherNd.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceGatherNd.java @@ -65,6 +65,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceGatherNd"; + private Output output; private ResourceGatherNd(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterAdd.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterAdd.java index 630a3716695..5383062823b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterAdd.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterAdd.java @@ -72,6 +72,9 @@ public static ResourceScatterAdd create(Sco return new ResourceScatterAdd(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceScatterAdd"; + private ResourceScatterAdd(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterDiv.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterDiv.java index dba2e37ec12..ed950863242 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterDiv.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterDiv.java @@ -72,6 +72,9 @@ public static ResourceScatterDiv create(Sco return new ResourceScatterDiv(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceScatterDiv"; + private ResourceScatterDiv(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterMax.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterMax.java index 6068660a905..7553fab4812 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterMax.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterMax.java @@ -72,6 +72,9 @@ public static ResourceScatterMax create(Sco return new ResourceScatterMax(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceScatterMax"; + private ResourceScatterMax(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterMin.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterMin.java index 3e0ffeae23a..68518b4c640 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterMin.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterMin.java @@ -72,6 +72,9 @@ public static ResourceScatterMin create(Sco return new ResourceScatterMin(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceScatterMin"; + private ResourceScatterMin(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterMul.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterMul.java index 1a8feb21838..f52b338de57 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterMul.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterMul.java @@ -72,6 +72,9 @@ public static ResourceScatterMul create(Sco return new ResourceScatterMul(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceScatterMul"; + private ResourceScatterMul(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterNdAdd.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterNdAdd.java index a230b7d58bf..5abfcbea5ee 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterNdAdd.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterNdAdd.java @@ -122,6 +122,9 @@ public static Options useLocking(Boolean useLocking) { return new Options().useLocking(useLocking); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceScatterNdAdd"; + private ResourceScatterNdAdd(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterNdSub.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterNdSub.java index 9912c63f129..c4b6060d611 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterNdSub.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterNdSub.java @@ -122,6 +122,9 @@ public static Options useLocking(Boolean useLocking) { return new Options().useLocking(useLocking); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceScatterNdSub"; + private ResourceScatterNdSub(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterNdUpdate.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterNdUpdate.java index 625010c6aac..b47fb4a1367 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterNdUpdate.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterNdUpdate.java @@ -124,6 +124,9 @@ public static Options useLocking(Boolean useLocking) { return new Options().useLocking(useLocking); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceScatterNdUpdate"; + private ResourceScatterNdUpdate(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterSub.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterSub.java index 727dc01ab32..2559ff21a93 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterSub.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterSub.java @@ -72,6 +72,9 @@ public static ResourceScatterSub create(Sco return new ResourceScatterSub(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceScatterSub"; + private ResourceScatterSub(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterUpdate.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterUpdate.java index c75107a4bb7..eff04c6c08a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterUpdate.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterUpdate.java @@ -63,6 +63,9 @@ public static ResourceScatterUpdate create( return new ResourceScatterUpdate(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceScatterUpdate"; + private ResourceScatterUpdate(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceStridedSliceAssign.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceStridedSliceAssign.java index 10c93185348..2002140573b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceStridedSliceAssign.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceStridedSliceAssign.java @@ -173,6 +173,9 @@ public static Options shrinkAxisMask(Long shrinkAxisMask) { return new Options().shrinkAxisMask(shrinkAxisMask); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceStridedSliceAssign"; + private ResourceStridedSliceAssign(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Reverse.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Reverse.java index e64e165182f..340336ee9f9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Reverse.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Reverse.java @@ -113,6 +113,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ReverseV2"; + private Output output; private Reverse(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ReverseSequence.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ReverseSequence.java index a78de7f9a4c..46fd2b54aa9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ReverseSequence.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ReverseSequence.java @@ -155,6 +155,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ReverseSequence"; + private Output output; private ReverseSequence(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Roll.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Roll.java index 8f6559ca09f..761be92e533 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Roll.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Roll.java @@ -96,6 +96,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Roll"; + private Output output; private Roll(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Rpc.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Rpc.java index 2d753afec51..ad3195933bc 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Rpc.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Rpc.java @@ -196,6 +196,9 @@ public Output asOutput() { return response; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Rpc"; + private Output response; private Rpc(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterAdd.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterAdd.java index 5d18510e225..c91e799a643 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterAdd.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterAdd.java @@ -127,6 +127,9 @@ public Output asOutput() { return outputRef; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ScatterAdd"; + private Output outputRef; private ScatterAdd(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterDiv.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterDiv.java index 800dada981d..12a27c67960 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterDiv.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterDiv.java @@ -123,6 +123,9 @@ public Output asOutput() { return outputRef; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ScatterDiv"; + private Output outputRef; private ScatterDiv(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterMax.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterMax.java index 99e97ee0d23..20b84f016ea 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterMax.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterMax.java @@ -127,6 +127,9 @@ public Output asOutput() { return outputRef; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ScatterMax"; + private Output outputRef; private ScatterMax(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterMin.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterMin.java index 3b96560077a..5010da14eaa 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterMin.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterMin.java @@ -127,6 +127,9 @@ public Output asOutput() { return outputRef; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ScatterMin"; + private Output outputRef; private ScatterMin(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterMul.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterMul.java index 38305790fb5..ba0892e1a04 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterMul.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterMul.java @@ -123,6 +123,9 @@ public Output asOutput() { return outputRef; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ScatterMul"; + private Output outputRef; private ScatterMul(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterNd.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterNd.java index c59c526ca86..86acb2935db 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterNd.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterNd.java @@ -145,6 +145,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ScatterNd"; + private Output output; private ScatterNd(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterNdAdd.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterNdAdd.java index 11b1ddc0ef8..09192e601e9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterNdAdd.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterNdAdd.java @@ -138,6 +138,9 @@ public Output asOutput() { return outputRef; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ScatterNdAdd"; + private Output outputRef; private ScatterNdAdd(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterNdNonAliasingAdd.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterNdNonAliasingAdd.java index 400f7e8b11c..98ce3cceba4 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterNdNonAliasingAdd.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterNdNonAliasingAdd.java @@ -104,6 +104,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ScatterNdNonAliasingAdd"; + private Output output; private ScatterNdNonAliasingAdd(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterNdSub.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterNdSub.java index bbeafdaa08b..39327cd553d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterNdSub.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterNdSub.java @@ -140,6 +140,9 @@ public Output asOutput() { return outputRef; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ScatterNdSub"; + private Output outputRef; private ScatterNdSub(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterNdUpdate.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterNdUpdate.java index c715f6c1c92..87e5949c07c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterNdUpdate.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterNdUpdate.java @@ -142,6 +142,9 @@ public Output asOutput() { return outputRef; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ScatterNdUpdate"; + private Output outputRef; private ScatterNdUpdate(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterSub.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterSub.java index 5bdb1e39081..bad245da96e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterSub.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterSub.java @@ -126,6 +126,9 @@ public Output asOutput() { return outputRef; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ScatterSub"; + private Output outputRef; private ScatterSub(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterUpdate.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterUpdate.java index fc548962aa7..9790e2fc934 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterUpdate.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterUpdate.java @@ -130,6 +130,9 @@ public Output asOutput() { return outputRef; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ScatterUpdate"; + private Output outputRef; private ScatterUpdate(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Select.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Select.java index fff55e1cf71..0aaa338eb1a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Select.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Select.java @@ -64,6 +64,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SelectV2"; + private Output output; private Select(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Send.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Send.java index 04f1f5813b3..bf3db1cd88a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Send.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Send.java @@ -94,6 +94,9 @@ public static Options clientTerminated(Boolean clientTerminated) { return new Options().clientTerminated(clientTerminated); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Send"; + private Send(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/SetDiff1d.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/SetDiff1d.java index 1b13994eebc..c7e458931e5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/SetDiff1d.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/SetDiff1d.java @@ -105,6 +105,9 @@ public Output idx() { return idx; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ListDiff"; + private Output out; private Output idx; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/SetSize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/SetSize.java index bd666afe4b2..2fcdf728542 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/SetSize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/SetSize.java @@ -109,6 +109,9 @@ public Output asOutput() { return size; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SetSize"; + private Output size; private SetSize(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Shape.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Shape.java index aef7aec2816..5d613401fc5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Shape.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Shape.java @@ -87,6 +87,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Shape"; + private Output output; private Shape(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ShapeN.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ShapeN.java index 307e86b38a2..42340a8a83d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ShapeN.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ShapeN.java @@ -85,6 +85,9 @@ public Iterator> iterator() { return (Iterator) output.iterator(); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ShapeN"; + private List> output; @SuppressWarnings("unchecked") diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Size.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Size.java index d79f317a591..4aaccae0f30 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Size.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Size.java @@ -88,6 +88,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Size"; + private Output output; private Size(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Skipgram.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Skipgram.java index cef935f3389..9c63d317f98 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Skipgram.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Skipgram.java @@ -176,6 +176,9 @@ public Output labels() { return labels; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Skipgram"; + private Output vocabWord; private Output vocabFreq; private Output wordsPerEpoch; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Slice.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Slice.java index e141b0a2243..31edde00b81 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Slice.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Slice.java @@ -77,6 +77,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Slice"; + private Output output; private Slice(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Snapshot.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Snapshot.java index 8599dac37e6..7209bccaaee 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Snapshot.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Snapshot.java @@ -61,6 +61,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Snapshot"; + private Output output; private Snapshot(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/SpaceToBatchNd.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/SpaceToBatchNd.java index 80e9a72e37f..150e18256e5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/SpaceToBatchNd.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/SpaceToBatchNd.java @@ -167,6 +167,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SpaceToBatchND"; + private Output output; private SpaceToBatchNd(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Split.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Split.java index f810c353427..fffd73f8ef5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Split.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Split.java @@ -75,6 +75,9 @@ public Iterator> iterator() { return (Iterator) output.iterator(); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Split"; + private List> output; @SuppressWarnings("unchecked") diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/SplitV.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/SplitV.java index 49646eecfc2..02b740c4d03 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/SplitV.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/SplitV.java @@ -79,6 +79,9 @@ public Iterator> iterator() { return (Iterator) output.iterator(); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SplitV"; + private List> output; @SuppressWarnings("unchecked") diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Squeeze.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Squeeze.java index 5bc2ba50645..3f962adc789 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Squeeze.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Squeeze.java @@ -123,6 +123,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Squeeze"; + private Output output; private Squeeze(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Stack.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Stack.java index 6e98ac9ab4b..f70f50b0d2b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Stack.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Stack.java @@ -117,6 +117,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Pack"; + private Output output; private Stack(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Stage.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Stage.java index c741a3ae391..408b6eca252 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Stage.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Stage.java @@ -148,6 +148,9 @@ public static Options sharedName(String sharedName) { return new Options().sharedName(sharedName); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Stage"; + private Stage(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/StageClear.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/StageClear.java index ebe153dab5e..755e7ab72d9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/StageClear.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/StageClear.java @@ -142,6 +142,9 @@ public static Options sharedName(String sharedName) { return new Options().sharedName(sharedName); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StageClear"; + private StageClear(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/StagePeek.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/StagePeek.java index 0d00e7f1db9..2126de722df 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/StagePeek.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/StagePeek.java @@ -166,6 +166,9 @@ public Iterator> iterator() { return (Iterator) values.iterator(); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StagePeek"; + private List> values; private StagePeek(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/StageSize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/StageSize.java index a6069a51690..94ef566e708 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/StageSize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/StageSize.java @@ -156,6 +156,9 @@ public Output asOutput() { return size; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StageSize"; + private Output size; private StageSize(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/StopGradient.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/StopGradient.java index f884e7b98f7..b3c7d144ca5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/StopGradient.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/StopGradient.java @@ -86,6 +86,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StopGradient"; + private Output output; private StopGradient(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/StridedSlice.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/StridedSlice.java index e19467389c2..719fb0787c7 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/StridedSlice.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/StridedSlice.java @@ -304,6 +304,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StridedSlice"; + private Output output; private StridedSlice(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/StridedSliceAssign.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/StridedSliceAssign.java index e89e6657ad7..b6836c65fca 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/StridedSliceAssign.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/StridedSliceAssign.java @@ -187,6 +187,9 @@ public Output asOutput() { return outputRef; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StridedSliceAssign"; + private Output outputRef; private StridedSliceAssign(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/StridedSliceGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/StridedSliceGrad.java index f475104bc81..241d6d567e9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/StridedSliceGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/StridedSliceGrad.java @@ -189,6 +189,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StridedSliceGrad"; + private Output output; private StridedSliceGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Sum.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Sum.java index 4fe6e275bad..c153cdf4760 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Sum.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Sum.java @@ -105,6 +105,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Sum"; + private Output output; private Sum(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/SwitchCond.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/SwitchCond.java index b0abd4c0d55..191eb6292d2 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/SwitchCond.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/SwitchCond.java @@ -72,6 +72,9 @@ public Output outputTrue() { return outputTrue; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Switch"; + private Output outputFalse; private Output outputTrue; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TemporaryVariable.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TemporaryVariable.java index dedd9f6d588..43d9247fe21 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TemporaryVariable.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TemporaryVariable.java @@ -117,6 +117,9 @@ public Output asOutput() { return ref; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TemporaryVariable"; + private Output ref; private TemporaryVariable(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArray.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArray.java index 24b9a610f1f..f34dc414484 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArray.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArray.java @@ -204,6 +204,9 @@ public Output flow() { return flow; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorArrayV3"; + private Output handle; private Output flow; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayClose.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayClose.java index fe58e12dd65..a16e856ae72 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayClose.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayClose.java @@ -49,6 +49,9 @@ public static TensorArrayClose create(Scope scope, Operand handle) { return new TensorArrayClose(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorArrayCloseV3"; + private TensorArrayClose(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayConcat.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayConcat.java index 1c39d8922bb..e25b7a2f958 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayConcat.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayConcat.java @@ -126,6 +126,9 @@ public Output lengths() { return lengths; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorArrayConcatV3"; + private Output value; private Output lengths; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayGather.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayGather.java index cd697f550d3..13c6dce3122 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayGather.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayGather.java @@ -113,6 +113,9 @@ public Output asOutput() { return value; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorArrayGatherV3"; + private Output value; private TensorArrayGather(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayGrad.java index a4cf654bdcc..dca362c6934 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayGrad.java @@ -102,6 +102,9 @@ public Output flowOut() { return flowOut; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorArrayGradV3"; + private Output gradHandle; private Output flowOut; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayGradWithShape.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayGradWithShape.java index 7ffbc95fac5..6128775dce6 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayGradWithShape.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayGradWithShape.java @@ -75,6 +75,9 @@ public Output flowOut() { return flowOut; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorArrayGradWithShape"; + private Output gradHandle; private Output flowOut; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayPack.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayPack.java index 05643c5d774..4b4be4ac089 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayPack.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayPack.java @@ -101,6 +101,9 @@ public Output asOutput() { return value; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorArrayPack"; + private Output value; private TensorArrayPack(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayRead.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayRead.java index 22065261a6a..55cf48bb020 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayRead.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayRead.java @@ -71,6 +71,9 @@ public Output asOutput() { return value; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorArrayReadV3"; + private Output value; private TensorArrayRead(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayScatter.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayScatter.java index f31f6b1428a..7b3eb238026 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayScatter.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayScatter.java @@ -70,6 +70,9 @@ public Output asOutput() { return flowOut; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorArrayScatterV3"; + private Output flowOut; private TensorArrayScatter(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArraySize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArraySize.java index 89642346996..3e7987bc388 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArraySize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArraySize.java @@ -63,6 +63,9 @@ public Output asOutput() { return size; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorArraySizeV3"; + private Output size; private TensorArraySize(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArraySplit.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArraySplit.java index ca755929b77..d6aedc34a4a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArraySplit.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArraySplit.java @@ -91,6 +91,9 @@ public Output asOutput() { return flowOut; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorArraySplitV3"; + private Output flowOut; private TensorArraySplit(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayUnpack.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayUnpack.java index 7d9e2b68ae1..9d2d92c4b85 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayUnpack.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayUnpack.java @@ -64,6 +64,9 @@ public Output asOutput() { return flowOut; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorArrayUnpack"; + private Output flowOut; private TensorArrayUnpack(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayWrite.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayWrite.java index 8f5c56e524a..a83a07a458b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayWrite.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayWrite.java @@ -68,6 +68,9 @@ public Output asOutput() { return flowOut; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorArrayWriteV3"; + private Output flowOut; private TensorArrayWrite(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestCreateTreeVariable.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestCreateTreeVariable.java index ec0df709465..e647f58b2f3 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestCreateTreeVariable.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestCreateTreeVariable.java @@ -48,6 +48,9 @@ public static TensorForestCreateTreeVariable create(Scope scope, Operand tree return new TensorForestCreateTreeVariable(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorForestCreateTreeVariable"; + private TensorForestCreateTreeVariable(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestTreeDeserialize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestTreeDeserialize.java index a7585be7577..5fb704b2361 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestTreeDeserialize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestTreeDeserialize.java @@ -48,6 +48,9 @@ public static TensorForestTreeDeserialize create(Scope scope, Operand treeHan return new TensorForestTreeDeserialize(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorForestTreeDeserialize"; + private TensorForestTreeDeserialize(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestTreeIsInitializedOp.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestTreeIsInitializedOp.java index d0c39ab0de9..4dfe64cdf19 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestTreeIsInitializedOp.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestTreeIsInitializedOp.java @@ -59,6 +59,9 @@ public Output asOutput() { return isInitialized; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorForestTreeIsInitializedOp"; + private Output isInitialized; private TensorForestTreeIsInitializedOp(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestTreePredict.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestTreePredict.java index 3b8dc79c2d9..3962212c5b7 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestTreePredict.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestTreePredict.java @@ -63,6 +63,9 @@ public Output asOutput() { return logits; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorForestTreePredict"; + private Output logits; private TensorForestTreePredict(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestTreeResourceHandleOp.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestTreeResourceHandleOp.java index f56d34d8df0..c72860e1ea7 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestTreeResourceHandleOp.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestTreeResourceHandleOp.java @@ -110,6 +110,9 @@ public Output asOutput() { return (Output) resource; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorForestTreeResourceHandleOp"; + private Output resource; private TensorForestTreeResourceHandleOp(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestTreeSerialize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestTreeSerialize.java index 07838bb9028..d46e23a08ab 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestTreeSerialize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestTreeSerialize.java @@ -59,6 +59,9 @@ public Output asOutput() { return treeConfig; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorForestTreeSerialize"; + private Output treeConfig; private TensorForestTreeSerialize(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestTreeSize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestTreeSize.java index 03eddda317e..17cf008d470 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestTreeSize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestTreeSize.java @@ -59,6 +59,9 @@ public Output asOutput() { return treeSize; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorForestTreeSize"; + private Output treeSize; private TensorForestTreeSize(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListConcat.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListConcat.java index 249e6a07b1d..2f1771797e0 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListConcat.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListConcat.java @@ -84,6 +84,9 @@ public Output lengths() { return lengths; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorListConcatV2"; + private Output tensor; private Output lengths; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListConcatLists.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListConcatLists.java index 3d685a10b34..fdca8e2d6cd 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListConcatLists.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListConcatLists.java @@ -64,6 +64,9 @@ public Output asOutput() { return (Output) output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorListConcatLists"; + private Output output; private TensorListConcatLists(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListElementShape.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListElementShape.java index 4115dfebda5..2c3e3a5b90c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListElementShape.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListElementShape.java @@ -68,6 +68,9 @@ public Output asOutput() { return elementShape; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorListElementShape"; + private Output elementShape; private TensorListElementShape(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListFromTensor.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListFromTensor.java index 8569b6b936c..97a45046767 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListFromTensor.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListFromTensor.java @@ -68,6 +68,9 @@ public Output asOutput() { return (Output) outputHandle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorListFromTensor"; + private Output outputHandle; private TensorListFromTensor(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListGather.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListGather.java index b1c4aa520fb..dbb565a29a6 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListGather.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListGather.java @@ -76,6 +76,9 @@ public Output asOutput() { return values; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorListGather"; + private Output values; private TensorListGather(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListGetItem.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListGetItem.java index 1ee5e084768..9af925e1425 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListGetItem.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListGetItem.java @@ -67,6 +67,9 @@ public Output asOutput() { return item; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorListGetItem"; + private Output item; private TensorListGetItem(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListLength.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListLength.java index c901d022f64..d2dc93a6e06 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListLength.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListLength.java @@ -62,6 +62,9 @@ public Output asOutput() { return length; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorListLength"; + private Output length; private TensorListLength(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListPopBack.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListPopBack.java index f4fb817b2fc..96fd3433e07 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListPopBack.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListPopBack.java @@ -75,6 +75,9 @@ public Output tensor() { return tensor; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorListPopBack"; + private Output outputHandle; private Output tensor; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListPushBack.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListPushBack.java index 216a5d44c4b..3bde4981422 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListPushBack.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListPushBack.java @@ -68,6 +68,9 @@ public Output asOutput() { return (Output) outputHandle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorListPushBack"; + private Output outputHandle; private TensorListPushBack(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListPushBackBatch.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListPushBackBatch.java index 065e7d0b6ed..de772f74891 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListPushBackBatch.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListPushBackBatch.java @@ -61,6 +61,9 @@ public Output asOutput() { return (Output) outputHandles; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorListPushBackBatch"; + private Output outputHandles; private TensorListPushBackBatch(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListReserve.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListReserve.java index 0c3294795c1..3f798e0f998 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListReserve.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListReserve.java @@ -72,6 +72,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorListReserve"; + private Output handle; private TensorListReserve(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListResize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListResize.java index fb0380aa5a7..4b70c31f277 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListResize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListResize.java @@ -68,6 +68,9 @@ public Output asOutput() { return (Output) outputHandle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorListResize"; + private Output outputHandle; private TensorListResize(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListScatter.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListScatter.java index 12fd2667321..700e3e715a7 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListScatter.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListScatter.java @@ -80,6 +80,9 @@ public Output asOutput() { return (Output) outputHandle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorListScatterV2"; + private Output outputHandle; private TensorListScatter(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListScatterIntoExistingList.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListScatterIntoExistingList.java index 4d8d27ed14a..4b91b1bc0b3 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListScatterIntoExistingList.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListScatterIntoExistingList.java @@ -73,6 +73,9 @@ public Output asOutput() { return (Output) outputHandle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorListScatterIntoExistingList"; + private Output outputHandle; private TensorListScatterIntoExistingList(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListSetItem.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListSetItem.java index d570a3083a4..358397a927e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListSetItem.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListSetItem.java @@ -64,6 +64,9 @@ public Output asOutput() { return (Output) outputHandle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorListSetItem"; + private Output outputHandle; private TensorListSetItem(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListSplit.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListSplit.java index aed272880fb..e93635d7713 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListSplit.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListSplit.java @@ -74,6 +74,9 @@ public Output asOutput() { return (Output) outputHandle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorListSplit"; + private Output outputHandle; private TensorListSplit(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListStack.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListStack.java index 95075e1bb6d..c0ecf388b3d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListStack.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorListStack.java @@ -108,6 +108,9 @@ public Output asOutput() { return tensor; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorListStack"; + private Output tensor; private TensorListStack(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorScatterNdAdd.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorScatterNdAdd.java index 77ffefde6f5..22c7462b994 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorScatterNdAdd.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorScatterNdAdd.java @@ -126,6 +126,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorScatterAdd"; + private Output output; private TensorScatterNdAdd(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorScatterNdSub.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorScatterNdSub.java index 307a2d4b801..14737a1fd95 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorScatterNdSub.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorScatterNdSub.java @@ -126,6 +126,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorScatterSub"; + private Output output; private TensorScatterNdSub(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorScatterNdUpdate.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorScatterNdUpdate.java index ac7d0635b66..7dff39f733f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorScatterNdUpdate.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorScatterNdUpdate.java @@ -142,6 +142,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorScatterUpdate"; + private Output output; private TensorScatterNdUpdate(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorStridedSliceUpdate.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorStridedSliceUpdate.java index d3bf1403073..c8c5e36e3c6 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorStridedSliceUpdate.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorStridedSliceUpdate.java @@ -187,6 +187,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorStridedSliceUpdate"; + private Output output; private TensorStridedSliceUpdate(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Tile.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Tile.java index abd9d462993..d28588cada5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Tile.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Tile.java @@ -91,6 +91,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Tile"; + private Output output; private Tile(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Timestamp.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Timestamp.java index ef460f466cd..cbbf650a32f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Timestamp.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Timestamp.java @@ -62,6 +62,9 @@ public Output asOutput() { return ts; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Timestamp"; + private Output ts; private Timestamp(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TryRpc.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TryRpc.java index acb69b45d48..3aa6c3a76ad 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TryRpc.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TryRpc.java @@ -209,6 +209,9 @@ public Output statusMessage() { return statusMessage; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TryRpc"; + private Output response; private Output statusCode; private Output statusMessage; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Unbatch.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Unbatch.java index 5cb23e99e7e..84d2063ae8c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Unbatch.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Unbatch.java @@ -140,6 +140,9 @@ public Output asOutput() { return unbatchedTensor; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Unbatch"; + private Output unbatchedTensor; private Unbatch(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/UnbatchGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/UnbatchGrad.java index 1309c7e80c8..10062f204fc 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/UnbatchGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/UnbatchGrad.java @@ -136,6 +136,9 @@ public Output asOutput() { return batchedGrad; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "UnbatchGrad"; + private Output batchedGrad; private UnbatchGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Unique.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Unique.java index 9f203229625..f3b8b04aead 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Unique.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Unique.java @@ -128,6 +128,9 @@ public Output idx() { return idx; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "UniqueV2"; + private Output y; private Output idx; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/UniqueWithCounts.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/UniqueWithCounts.java index a98e6736594..732d4432333 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/UniqueWithCounts.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/UniqueWithCounts.java @@ -139,6 +139,9 @@ public Output count() { return count; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "UniqueWithCountsV2"; + private Output y; private Output idx; private Output count; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/UnravelIndex.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/UnravelIndex.java index e272d05ec2a..ecc073e37a4 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/UnravelIndex.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/UnravelIndex.java @@ -87,6 +87,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "UnravelIndex"; + private Output output; private UnravelIndex(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Unstack.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Unstack.java index fcf759828b7..a48f57289ae 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Unstack.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Unstack.java @@ -117,6 +117,9 @@ public Iterator> iterator() { return (Iterator) output.iterator(); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Unpack"; + private List> output; @SuppressWarnings("unchecked") diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Unstage.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Unstage.java index 806d2d451c4..1878ce6fb88 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Unstage.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Unstage.java @@ -162,6 +162,9 @@ public Iterator> iterator() { return (Iterator) values.iterator(); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Unstage"; + private List> values; private Unstage(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/UpperBound.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/UpperBound.java index 7f978707572..c46fbcba4de 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/UpperBound.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/UpperBound.java @@ -103,6 +103,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "UpperBound"; + private Output output; private UpperBound(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/VarHandleOp.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/VarHandleOp.java index 93a48a32093..945f05522c3 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/VarHandleOp.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/VarHandleOp.java @@ -118,6 +118,9 @@ public Output asOutput() { return (Output) resource; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "VarHandleOp"; + private Output resource; private VarHandleOp(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/VarIsInitializedOp.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/VarIsInitializedOp.java index 0aaf43a2f1b..f2c3df0456d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/VarIsInitializedOp.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/VarIsInitializedOp.java @@ -61,6 +61,9 @@ public Output asOutput() { return isInitialized; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "VarIsInitializedOp"; + private Output isInitialized; private VarIsInitializedOp(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Variable.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Variable.java index 4f663493860..7353dfee688 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Variable.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Variable.java @@ -127,6 +127,9 @@ public Output asOutput() { return ref; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "VariableV2"; + private Output ref; private Variable(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/VariableShape.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/VariableShape.java index 76fb3c770d0..6573cb8de11 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/VariableShape.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/VariableShape.java @@ -87,6 +87,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "VariableShape"; + private Output output; private VariableShape(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Where.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Where.java index 2e22fe12311..a1af7f9282a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Where.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Where.java @@ -120,6 +120,9 @@ public Output asOutput() { return index; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Where"; + private Output index; private Where(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ZerosLike.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ZerosLike.java index 60767fe78bf..5b9352ef6bd 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ZerosLike.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ZerosLike.java @@ -62,6 +62,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ZerosLike"; + private Output y; private ZerosLike(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/AnonymousIterator.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/AnonymousIterator.java index d912c335063..bd3d1a400f5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/AnonymousIterator.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/AnonymousIterator.java @@ -76,6 +76,9 @@ public Output deleter() { return deleter; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "AnonymousIteratorV2"; + private Output handle; private Output deleter; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/AnonymousMemoryCache.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/AnonymousMemoryCache.java index d76e74fdf14..4bc4523c1ea 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/AnonymousMemoryCache.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/AnonymousMemoryCache.java @@ -54,6 +54,9 @@ public Output deleter() { return deleter; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "AnonymousMemoryCache"; + private Output handle; private Output deleter; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/AnonymousMultiDeviceIterator.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/AnonymousMultiDeviceIterator.java index 58ecad7ddce..bff57b33c8f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/AnonymousMultiDeviceIterator.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/AnonymousMultiDeviceIterator.java @@ -81,6 +81,9 @@ public Output deleter() { return deleter; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "AnonymousMultiDeviceIterator"; + private Output handle; private Output deleter; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/AssertNextDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/AssertNextDataset.java index 0dff0c406cc..c2825e29b93 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/AssertNextDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/AssertNextDataset.java @@ -88,6 +88,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "AssertNextDataset"; + private Output handle; private AssertNextDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/AutoShardDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/AutoShardDataset.java index ab9d7753834..aca90031261 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/AutoShardDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/AutoShardDataset.java @@ -121,6 +121,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "AutoShardDataset"; + private Output handle; private AutoShardDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/BatchDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/BatchDataset.java index f85b08a64c5..b0fd6ef0c0c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/BatchDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/BatchDataset.java @@ -116,6 +116,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BatchDatasetV2"; + private Output handle; private BatchDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/BytesProducedStatsDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/BytesProducedStatsDataset.java index a92c52ce5fd..a3b95d92909 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/BytesProducedStatsDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/BytesProducedStatsDataset.java @@ -77,6 +77,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BytesProducedStatsDataset"; + private Output handle; private BytesProducedStatsDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/CSVDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/CSVDataset.java index 2374a884850..f6c8f72232d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/CSVDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/CSVDataset.java @@ -87,6 +87,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "CSVDataset"; + private Output handle; private CSVDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/CacheDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/CacheDataset.java index 798519589d0..07384fb6b3e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/CacheDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/CacheDataset.java @@ -83,6 +83,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "CacheDataset"; + private Output handle; private CacheDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/CacheDatasetV2.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/CacheDatasetV2.java index f75ce86e7d0..ba370108e04 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/CacheDatasetV2.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/CacheDatasetV2.java @@ -78,6 +78,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "CacheDatasetV2"; + private Output handle; private CacheDatasetV2(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ChooseFastestDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ChooseFastestDataset.java index e0acfa0e521..a8d9ce445fe 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ChooseFastestDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ChooseFastestDataset.java @@ -76,6 +76,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ChooseFastestDataset"; + private Output handle; private ChooseFastestDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ConcatenateDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ConcatenateDataset.java index 0a9b49b8fe6..19cf0b4a706 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ConcatenateDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ConcatenateDataset.java @@ -77,6 +77,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ConcatenateDataset"; + private Output handle; private ConcatenateDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DatasetCardinality.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DatasetCardinality.java index 44d118b6d32..d851c211420 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DatasetCardinality.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DatasetCardinality.java @@ -62,6 +62,9 @@ public Output asOutput() { return cardinality; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DatasetCardinality"; + private Output cardinality; private DatasetCardinality(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DatasetFromGraph.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DatasetFromGraph.java index fa931c0cd72..6223baa7251 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DatasetFromGraph.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DatasetFromGraph.java @@ -63,6 +63,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DatasetFromGraph"; + private Output handle; private DatasetFromGraph(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DatasetToGraph.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DatasetToGraph.java index 908aea9eb42..afaab68330a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DatasetToGraph.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DatasetToGraph.java @@ -114,6 +114,9 @@ public Output asOutput() { return graph; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DatasetToGraphV2"; + private Output graph; private DatasetToGraph(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DatasetToSingleElement.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DatasetToSingleElement.java index a37b7e51a96..91fd5032439 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DatasetToSingleElement.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DatasetToSingleElement.java @@ -77,6 +77,9 @@ public Iterator> iterator() { return (Iterator) components.iterator(); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DatasetToSingleElement"; + private List> components; private DatasetToSingleElement(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DatasetToTfRecord.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DatasetToTfRecord.java index 237f73b12a3..41617c9b690 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DatasetToTfRecord.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DatasetToTfRecord.java @@ -51,6 +51,9 @@ public static DatasetToTfRecord create(Scope scope, Operand inputDataset, Ope return new DatasetToTfRecord(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DatasetToTFRecord"; + private DatasetToTfRecord(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DeleteIterator.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DeleteIterator.java index 5a92fcb5f82..ec3629a8eb7 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DeleteIterator.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DeleteIterator.java @@ -48,6 +48,9 @@ public static DeleteIterator create(Scope scope, Operand handle, Operand d return new DeleteIterator(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DeleteIterator"; + private DeleteIterator(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DeleteMemoryCache.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DeleteMemoryCache.java index 06077aae830..3c0f37dc409 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DeleteMemoryCache.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DeleteMemoryCache.java @@ -46,6 +46,9 @@ public static DeleteMemoryCache create(Scope scope, Operand handle, Operand multiDevi return new DeleteMultiDeviceIterator(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DeleteMultiDeviceIterator"; + private DeleteMultiDeviceIterator(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DenseToSparseBatchDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DenseToSparseBatchDataset.java index fe69f57646a..32bd135c325 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DenseToSparseBatchDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DenseToSparseBatchDataset.java @@ -82,6 +82,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DenseToSparseBatchDataset"; + private Output handle; private DenseToSparseBatchDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DeserializeIterator.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DeserializeIterator.java index a8c05b2d5ad..528fd09bc53 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DeserializeIterator.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DeserializeIterator.java @@ -49,6 +49,9 @@ public static DeserializeIterator create(Scope scope, Operand resourceHandle, return new DeserializeIterator(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DeserializeIterator"; + private DeserializeIterator(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DirectedInterleaveDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DirectedInterleaveDataset.java index b2031c8fc11..6883e2218d9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DirectedInterleaveDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DirectedInterleaveDataset.java @@ -79,6 +79,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DirectedInterleaveDataset"; + private Output handle; private DirectedInterleaveDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/FilterByLastComponentDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/FilterByLastComponentDataset.java index 2adf749ab8a..d6c2b576d7e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/FilterByLastComponentDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/FilterByLastComponentDataset.java @@ -74,6 +74,9 @@ public Output asOutput() { return (Output) output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "FilterByLastComponentDataset"; + private Output output; private FilterByLastComponentDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/FixedLengthRecordDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/FixedLengthRecordDataset.java index 47dbcf7c9ab..d1bfa77177b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/FixedLengthRecordDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/FixedLengthRecordDataset.java @@ -70,6 +70,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "FixedLengthRecordDatasetV2"; + private Output handle; private FixedLengthRecordDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/IgnoreErrorsDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/IgnoreErrorsDataset.java index e7a4c8d69dd..7ffca90d150 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/IgnoreErrorsDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/IgnoreErrorsDataset.java @@ -74,6 +74,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "IgnoreErrorsDataset"; + private Output handle; private IgnoreErrorsDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/Iterator.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/Iterator.java index 5ada431831c..45030001714 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/Iterator.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/Iterator.java @@ -76,6 +76,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "IteratorV2"; + private Output handle; private Iterator(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/IteratorFromStringHandle.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/IteratorFromStringHandle.java index e394c9b347a..8264419635a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/IteratorFromStringHandle.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/IteratorFromStringHandle.java @@ -106,6 +106,9 @@ public Output asOutput() { return (Output) resourceHandle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "IteratorFromStringHandleV2"; + private Output resourceHandle; private IteratorFromStringHandle(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/IteratorGetDevice.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/IteratorGetDevice.java index d1ac024b6b2..d2aee159583 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/IteratorGetDevice.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/IteratorGetDevice.java @@ -58,6 +58,9 @@ public Output asOutput() { return device; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "IteratorGetDevice"; + private Output device; private IteratorGetDevice(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/IteratorGetNext.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/IteratorGetNext.java index 2b8e80de880..b7be406e7bd 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/IteratorGetNext.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/IteratorGetNext.java @@ -77,6 +77,9 @@ public Iterator> iterator() { return (Iterator) components.iterator(); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "IteratorGetNext"; + private List> components; private IteratorGetNext(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/IteratorGetNextAsOptional.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/IteratorGetNextAsOptional.java index 41382765531..682b7ba6f35 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/IteratorGetNextAsOptional.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/IteratorGetNextAsOptional.java @@ -75,6 +75,9 @@ public Output asOutput() { return (Output) optional; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "IteratorGetNextAsOptional"; + private Output optional; private IteratorGetNextAsOptional(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/IteratorGetNextSync.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/IteratorGetNextSync.java index 97f1ee35918..3cb4f072307 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/IteratorGetNextSync.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/IteratorGetNextSync.java @@ -82,6 +82,9 @@ public Iterator> iterator() { return (Iterator) components.iterator(); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "IteratorGetNextSync"; + private List> components; private IteratorGetNextSync(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/IteratorToStringHandle.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/IteratorToStringHandle.java index 19e8fcf2ed4..d715d8b8f2d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/IteratorToStringHandle.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/IteratorToStringHandle.java @@ -60,6 +60,9 @@ public Output asOutput() { return stringHandle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "IteratorToStringHandle"; + private Output stringHandle; private IteratorToStringHandle(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/LMDBDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/LMDBDataset.java index 9d8725757db..d0057d60323 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/LMDBDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/LMDBDataset.java @@ -87,6 +87,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LMDBDataset"; + private Output handle; private LMDBDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/LatencyStatsDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/LatencyStatsDataset.java index 5391e373273..731b70867a7 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/LatencyStatsDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/LatencyStatsDataset.java @@ -77,6 +77,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LatencyStatsDataset"; + private Output handle; private LatencyStatsDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/LeakyReluGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/LeakyReluGrad.java index 9832f573eda..3fb21bd4a6e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/LeakyReluGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/LeakyReluGrad.java @@ -99,6 +99,9 @@ public Output asOutput() { return backprops; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LeakyReluGrad"; + private Output backprops; private LeakyReluGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MakeIterator.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MakeIterator.java index a2f380b0a49..685574a92d5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MakeIterator.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MakeIterator.java @@ -51,6 +51,9 @@ public static MakeIterator create(Scope scope, Operand dataset, Operand it return new MakeIterator(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MakeIterator"; + private MakeIterator(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MatchingFilesDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MatchingFilesDataset.java index 6a83be042c6..2c798a8d807 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MatchingFilesDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MatchingFilesDataset.java @@ -59,6 +59,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MatchingFilesDataset"; + private Output handle; private MatchingFilesDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MaxIntraOpParallelismDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MaxIntraOpParallelismDataset.java index 5f45170d93e..d7c67924b55 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MaxIntraOpParallelismDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MaxIntraOpParallelismDataset.java @@ -77,6 +77,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MaxIntraOpParallelismDataset"; + private Output handle; private MaxIntraOpParallelismDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ModelDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ModelDataset.java index ca8566ff06f..53b6f10204d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ModelDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ModelDataset.java @@ -129,6 +129,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ModelDataset"; + private Output handle; private ModelDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MultiDeviceIterator.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MultiDeviceIterator.java index e4de4452636..a3dfeeb5665 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MultiDeviceIterator.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MultiDeviceIterator.java @@ -85,6 +85,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MultiDeviceIterator"; + private Output handle; private MultiDeviceIterator(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MultiDeviceIteratorFromStringHandle.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MultiDeviceIteratorFromStringHandle.java index a80f5d9cdc2..a9b0b8ec07e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MultiDeviceIteratorFromStringHandle.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MultiDeviceIteratorFromStringHandle.java @@ -108,6 +108,9 @@ public Output asOutput() { return (Output) multiDeviceIterator; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MultiDeviceIteratorFromStringHandle"; + private Output multiDeviceIterator; private MultiDeviceIteratorFromStringHandle(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MultiDeviceIteratorGetNextFromShard.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MultiDeviceIteratorGetNextFromShard.java index 6f2eeb28daa..4781bc2d56e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MultiDeviceIteratorGetNextFromShard.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MultiDeviceIteratorGetNextFromShard.java @@ -83,6 +83,9 @@ public Iterator> iterator() { return (Iterator) components.iterator(); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MultiDeviceIteratorGetNextFromShard"; + private List> components; private MultiDeviceIteratorGetNextFromShard(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MultiDeviceIteratorInit.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MultiDeviceIteratorInit.java index fec8ee78e0b..a8e957c64b5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MultiDeviceIteratorInit.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MultiDeviceIteratorInit.java @@ -64,6 +64,9 @@ public Output asOutput() { return incarnationId; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MultiDeviceIteratorInit"; + private Output incarnationId; private MultiDeviceIteratorInit(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MultiDeviceIteratorToStringHandle.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MultiDeviceIteratorToStringHandle.java index 6f6045a848c..5697c7e7699 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MultiDeviceIteratorToStringHandle.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MultiDeviceIteratorToStringHandle.java @@ -59,6 +59,9 @@ public Output asOutput() { return stringHandle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MultiDeviceIteratorToStringHandle"; + private Output stringHandle; private MultiDeviceIteratorToStringHandle(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/NonSerializableDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/NonSerializableDataset.java index e42a75dbf83..34043a14f9d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/NonSerializableDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/NonSerializableDataset.java @@ -73,6 +73,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "NonSerializableDataset"; + private Output handle; private NonSerializableDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/OptimizeDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/OptimizeDataset.java index b7e557c816d..73e27b3ffc9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/OptimizeDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/OptimizeDataset.java @@ -117,6 +117,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "OptimizeDataset"; + private Output handle; private OptimizeDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/OptionalFromValue.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/OptionalFromValue.java index 7832d3cbd58..a8fc1d4eaea 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/OptionalFromValue.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/OptionalFromValue.java @@ -61,6 +61,9 @@ public Output asOutput() { return (Output) optional; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "OptionalFromValue"; + private Output optional; private OptionalFromValue(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/OptionalGetValue.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/OptionalGetValue.java index c38d1177c28..8d3be67da03 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/OptionalGetValue.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/OptionalGetValue.java @@ -77,6 +77,9 @@ public Iterator> iterator() { return (Iterator) components.iterator(); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "OptionalGetValue"; + private List> components; private OptionalGetValue(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/OptionalHasValue.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/OptionalHasValue.java index d77f53ff5ca..af5900c38a9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/OptionalHasValue.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/OptionalHasValue.java @@ -59,6 +59,9 @@ public Output asOutput() { return hasValue; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "OptionalHasValue"; + private Output hasValue; private OptionalHasValue(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/OptionalNone.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/OptionalNone.java index ee871daef2e..fa3deabf28f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/OptionalNone.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/OptionalNone.java @@ -58,6 +58,9 @@ public Output asOutput() { return (Output) optional; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "OptionalNone"; + private Output optional; private OptionalNone(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/PaddedBatchDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/PaddedBatchDataset.java index 65da0acf0c8..0685e5e9e74 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/PaddedBatchDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/PaddedBatchDataset.java @@ -118,6 +118,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "PaddedBatchDatasetV2"; + private Output handle; private PaddedBatchDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/PrefetchDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/PrefetchDataset.java index a56c2e70054..78995ad6d20 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/PrefetchDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/PrefetchDataset.java @@ -131,6 +131,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "PrefetchDataset"; + private Output handle; private PrefetchDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/PrivateThreadPoolDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/PrivateThreadPoolDataset.java index d637c1b081a..b06618ce07a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/PrivateThreadPoolDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/PrivateThreadPoolDataset.java @@ -77,6 +77,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "PrivateThreadPoolDataset"; + private Output handle; private PrivateThreadPoolDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/RandomDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/RandomDataset.java index 6549d26c515..2b944e789dc 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/RandomDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/RandomDataset.java @@ -90,6 +90,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RandomDataset"; + private Output handle; private RandomDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/RangeDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/RangeDataset.java index 964d99e90e4..bc83590e03e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/RangeDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/RangeDataset.java @@ -80,6 +80,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RangeDataset"; + private Output handle; private RangeDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/RebatchDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/RebatchDataset.java index baa5d56fea3..b5a21c7b6b8 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/RebatchDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/RebatchDataset.java @@ -116,6 +116,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RebatchDataset"; + private Output handle; private RebatchDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/RepeatDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/RepeatDataset.java index 85d27c01df8..b832025853c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/RepeatDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/RepeatDataset.java @@ -79,6 +79,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RepeatDataset"; + private Output handle; private RepeatDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SamplingDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SamplingDataset.java index b9a584f0ac0..7876fe27587 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SamplingDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SamplingDataset.java @@ -89,6 +89,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SamplingDataset"; + private Output handle; private SamplingDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SerializeIterator.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SerializeIterator.java index 8dc271706f3..f051994e6f5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SerializeIterator.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SerializeIterator.java @@ -96,6 +96,9 @@ public Output asOutput() { return (Output) serialized; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SerializeIterator"; + private Output serialized; private SerializeIterator(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SetStatsAggregatorDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SetStatsAggregatorDataset.java index b635c38df18..5181c0b1f71 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SetStatsAggregatorDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SetStatsAggregatorDataset.java @@ -80,6 +80,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SetStatsAggregatorDataset"; + private Output handle; private SetStatsAggregatorDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ShardDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ShardDataset.java index 71864817d93..62e18f3fadf 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ShardDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ShardDataset.java @@ -113,6 +113,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ShardDataset"; + private Output handle; private ShardDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ShuffleAndRepeatDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ShuffleAndRepeatDataset.java index 67bf83b9b5d..9234210b6d6 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ShuffleAndRepeatDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ShuffleAndRepeatDataset.java @@ -90,6 +90,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ShuffleAndRepeatDataset"; + private Output handle; private ShuffleAndRepeatDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ShuffleDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ShuffleDataset.java index ccc51d49a37..a31b296950d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ShuffleDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ShuffleDataset.java @@ -78,6 +78,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ShuffleDatasetV2"; + private Output handle; private ShuffleDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SkipDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SkipDataset.java index 7de29fc4976..4e409b5a4ea 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SkipDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SkipDataset.java @@ -79,6 +79,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SkipDataset"; + private Output handle; private SkipDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SleepDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SleepDataset.java index 23f6e214ec4..67605099106 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SleepDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SleepDataset.java @@ -76,6 +76,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SleepDataset"; + private Output handle; private SleepDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SlidingWindowDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SlidingWindowDataset.java index 2eb9ac29140..89f440efd77 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SlidingWindowDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SlidingWindowDataset.java @@ -84,6 +84,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SlidingWindowDataset"; + private Output handle; private SlidingWindowDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SnapshotDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SnapshotDataset.java index c166f4a4fd7..f6bc66e8297 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SnapshotDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SnapshotDataset.java @@ -363,6 +363,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SnapshotDataset"; + private Output handle; private SnapshotDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SparseTensorSliceDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SparseTensorSliceDataset.java index 9c45e99c9e3..fa5b61137ab 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SparseTensorSliceDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SparseTensorSliceDataset.java @@ -64,6 +64,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseTensorSliceDataset"; + private Output handle; private SparseTensorSliceDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SqlDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SqlDataset.java index 9c8ef660137..59a0a47cd4d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SqlDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/SqlDataset.java @@ -79,6 +79,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SqlDataset"; + private Output handle; private SqlDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/StatsAggregatorHandle.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/StatsAggregatorHandle.java index b96fcb2a07e..f510b437c7d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/StatsAggregatorHandle.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/StatsAggregatorHandle.java @@ -110,6 +110,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StatsAggregatorHandle"; + private Output handle; private StatsAggregatorHandle(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/TakeDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/TakeDataset.java index 9fb312ddac7..3229f055924 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/TakeDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/TakeDataset.java @@ -80,6 +80,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TakeDataset"; + private Output handle; private TakeDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/TensorDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/TensorDataset.java index 35f30f733ae..974f9562859 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/TensorDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/TensorDataset.java @@ -68,6 +68,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorDataset"; + private Output handle; private TensorDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/TensorSliceDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/TensorSliceDataset.java index 45fc9c1eef5..0d0ca40de32 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/TensorSliceDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/TensorSliceDataset.java @@ -69,6 +69,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorSliceDataset"; + private Output handle; private TensorSliceDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/TextLineDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/TextLineDataset.java index 614d3bc2b4c..a80851bb2ed 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/TextLineDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/TextLineDataset.java @@ -68,6 +68,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TextLineDataset"; + private Output handle; private TextLineDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/TfRecordDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/TfRecordDataset.java index ba889f8f3af..4795e623f82 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/TfRecordDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/TfRecordDataset.java @@ -69,6 +69,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TFRecordDataset"; + private Output handle; private TfRecordDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ThreadPoolDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ThreadPoolDataset.java index b0443de050e..0b1ab263ffa 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ThreadPoolDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ThreadPoolDataset.java @@ -76,6 +76,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ThreadPoolDataset"; + private Output handle; private ThreadPoolDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ThreadPoolHandle.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ThreadPoolHandle.java index 9c5ad809be0..6d9434cdff3 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ThreadPoolHandle.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ThreadPoolHandle.java @@ -139,6 +139,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ThreadPoolHandle"; + private Output handle; private ThreadPoolHandle(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/UnbatchDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/UnbatchDataset.java index e92d5a72d41..1bca9b693cc 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/UnbatchDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/UnbatchDataset.java @@ -74,6 +74,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "UnbatchDataset"; + private Output handle; private UnbatchDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/UniqueDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/UniqueDataset.java index fc7796939c2..817519ef6f8 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/UniqueDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/UniqueDataset.java @@ -74,6 +74,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "UniqueDataset"; + private Output handle; private UniqueDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/UnwrapDatasetVariant.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/UnwrapDatasetVariant.java index 1ba2fb16027..d5125db92c8 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/UnwrapDatasetVariant.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/UnwrapDatasetVariant.java @@ -58,6 +58,9 @@ public Output asOutput() { return (Output) outputHandle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "UnwrapDatasetVariant"; + private Output outputHandle; private UnwrapDatasetVariant(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/WindowDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/WindowDataset.java index c08069ff65f..d5edcc917d8 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/WindowDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/WindowDataset.java @@ -131,6 +131,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "WindowDataset"; + private Output handle; private WindowDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/WrapDatasetVariant.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/WrapDatasetVariant.java index 94ab283621f..bcea6df7895 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/WrapDatasetVariant.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/WrapDatasetVariant.java @@ -58,6 +58,9 @@ public Output asOutput() { return (Output) outputHandle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "WrapDatasetVariant"; + private Output outputHandle; private WrapDatasetVariant(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ZipDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ZipDataset.java index 0829a5435c3..d4f54946f5f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ZipDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ZipDataset.java @@ -82,6 +82,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ZipDataset"; + private Output handle; private ZipDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/AssertCardinalityDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/AssertCardinalityDataset.java index 271026cab6c..96c02bf5fc1 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/AssertCardinalityDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/AssertCardinalityDataset.java @@ -76,6 +76,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "AssertCardinalityDataset"; + private Output handle; private AssertCardinalityDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/AssertNextDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/AssertNextDataset.java index 3ced6851207..cd0c5300df6 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/AssertNextDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/AssertNextDataset.java @@ -76,6 +76,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ExperimentalAssertNextDataset"; + private Output handle; private AssertNextDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/AutoShardDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/AutoShardDataset.java index e1a8ffbffbe..3c1eb053091 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/AutoShardDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/AutoShardDataset.java @@ -121,6 +121,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ExperimentalAutoShardDataset"; + private Output handle; private AutoShardDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/BytesProducedStatsDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/BytesProducedStatsDataset.java index aaf9e88a544..7fe1290b130 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/BytesProducedStatsDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/BytesProducedStatsDataset.java @@ -77,6 +77,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ExperimentalBytesProducedStatsDataset"; + private Output handle; private BytesProducedStatsDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/CSVDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/CSVDataset.java index 764d02ab240..d0498612cde 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/CSVDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/CSVDataset.java @@ -86,6 +86,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ExperimentalCSVDataset"; + private Output handle; private CSVDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/ChooseFastestDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/ChooseFastestDataset.java index a4335e73817..f731d948490 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/ChooseFastestDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/ChooseFastestDataset.java @@ -76,6 +76,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ExperimentalChooseFastestDataset"; + private Output handle; private ChooseFastestDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/DatasetCardinality.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/DatasetCardinality.java index 290bec84df8..81ca505ca91 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/DatasetCardinality.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/DatasetCardinality.java @@ -62,6 +62,9 @@ public Output asOutput() { return cardinality; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ExperimentalDatasetCardinality"; + private Output cardinality; private DatasetCardinality(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/DatasetToTFRecord.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/DatasetToTFRecord.java index 3bb2bc62b4b..ee0f494fa73 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/DatasetToTFRecord.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/DatasetToTFRecord.java @@ -51,6 +51,9 @@ public static DatasetToTFRecord create(Scope scope, Operand inputDataset, Ope return new DatasetToTFRecord(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ExperimentalDatasetToTFRecord"; + private DatasetToTFRecord(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/DenseToSparseBatchDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/DenseToSparseBatchDataset.java index 550ddde8c54..d464f422836 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/DenseToSparseBatchDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/DenseToSparseBatchDataset.java @@ -82,6 +82,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ExperimentalDenseToSparseBatchDataset"; + private Output handle; private DenseToSparseBatchDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/DirectedInterleaveDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/DirectedInterleaveDataset.java index 62ba3a97b7f..63a06a16201 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/DirectedInterleaveDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/DirectedInterleaveDataset.java @@ -79,6 +79,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ExperimentalDirectedInterleaveDataset"; + private Output handle; private DirectedInterleaveDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/IgnoreErrorsDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/IgnoreErrorsDataset.java index 77c750ea775..22d734831da 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/IgnoreErrorsDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/IgnoreErrorsDataset.java @@ -74,6 +74,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ExperimentalIgnoreErrorsDataset"; + private Output handle; private IgnoreErrorsDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/IteratorGetDevice.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/IteratorGetDevice.java index 2e19177a58f..7602eca94fc 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/IteratorGetDevice.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/IteratorGetDevice.java @@ -58,6 +58,9 @@ public Output asOutput() { return device; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ExperimentalIteratorGetDevice"; + private Output device; private IteratorGetDevice(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/LatencyStatsDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/LatencyStatsDataset.java index 6a54aa3586c..ad901295c28 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/LatencyStatsDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/LatencyStatsDataset.java @@ -77,6 +77,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ExperimentalLatencyStatsDataset"; + private Output handle; private LatencyStatsDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/LmdbDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/LmdbDataset.java index a7680b1cbe9..e6c489833af 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/LmdbDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/LmdbDataset.java @@ -74,6 +74,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ExperimentalLMDBDataset"; + private Output handle; private LmdbDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/MatchingFilesDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/MatchingFilesDataset.java index fcd78e95ee7..e2e29feeba4 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/MatchingFilesDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/MatchingFilesDataset.java @@ -59,6 +59,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ExperimentalMatchingFilesDataset"; + private Output handle; private MatchingFilesDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/MaxIntraOpParallelismDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/MaxIntraOpParallelismDataset.java index f7db67ed8a8..fb69729fab0 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/MaxIntraOpParallelismDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/MaxIntraOpParallelismDataset.java @@ -77,6 +77,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ExperimentalMaxIntraOpParallelismDataset"; + private Output handle; private MaxIntraOpParallelismDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/NonSerializableDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/NonSerializableDataset.java index 5d19824576d..9f07f37f804 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/NonSerializableDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/NonSerializableDataset.java @@ -73,6 +73,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ExperimentalNonSerializableDataset"; + private Output handle; private NonSerializableDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/ParseExampleDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/ParseExampleDataset.java index f87553458b2..4c24cf99558 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/ParseExampleDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/ParseExampleDataset.java @@ -195,6 +195,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ParseExampleDatasetV2"; + private Output handle; private ParseExampleDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/PrivateThreadPoolDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/PrivateThreadPoolDataset.java index 963fb615d65..a52fd41140e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/PrivateThreadPoolDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/PrivateThreadPoolDataset.java @@ -77,6 +77,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ExperimentalPrivateThreadPoolDataset"; + private Output handle; private PrivateThreadPoolDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/RandomDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/RandomDataset.java index aed4a2b7ee4..8f9109ab3d5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/RandomDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/RandomDataset.java @@ -79,6 +79,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ExperimentalRandomDataset"; + private Output handle; private RandomDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/RebatchDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/RebatchDataset.java index cb33dd922e4..6111166128e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/RebatchDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/RebatchDataset.java @@ -116,6 +116,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ExperimentalRebatchDataset"; + private Output handle; private RebatchDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/SetStatsAggregatorDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/SetStatsAggregatorDataset.java index 705753f7835..e2535dcecd7 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/SetStatsAggregatorDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/SetStatsAggregatorDataset.java @@ -80,6 +80,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ExperimentalSetStatsAggregatorDataset"; + private Output handle; private SetStatsAggregatorDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/SleepDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/SleepDataset.java index e953bcf3949..97ddeb96999 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/SleepDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/SleepDataset.java @@ -76,6 +76,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ExperimentalSleepDataset"; + private Output handle; private SleepDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/SlidingWindowDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/SlidingWindowDataset.java index efe23924930..b8dbded85e9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/SlidingWindowDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/SlidingWindowDataset.java @@ -84,6 +84,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ExperimentalSlidingWindowDataset"; + private Output handle; private SlidingWindowDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/SqlDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/SqlDataset.java index ca01538ebdb..a68f46a5c08 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/SqlDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/SqlDataset.java @@ -79,6 +79,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ExperimentalSqlDataset"; + private Output handle; private SqlDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/StatsAggregatorHandle.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/StatsAggregatorHandle.java index e3749bfc10b..ec2e57ae4e7 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/StatsAggregatorHandle.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/StatsAggregatorHandle.java @@ -109,6 +109,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StatsAggregatorHandleV2"; + private Output handle; private StatsAggregatorHandle(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/StatsAggregatorSetSummaryWriter.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/StatsAggregatorSetSummaryWriter.java index 44acd09f14c..ad63ff056d8 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/StatsAggregatorSetSummaryWriter.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/StatsAggregatorSetSummaryWriter.java @@ -47,6 +47,9 @@ public static StatsAggregatorSetSummaryWriter create(Scope scope, Operand sta return new StatsAggregatorSetSummaryWriter(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StatsAggregatorSetSummaryWriter"; + private StatsAggregatorSetSummaryWriter(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/StatsAggregatorSummary.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/StatsAggregatorSummary.java index 1a4d285dfe3..a24bfdbaada 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/StatsAggregatorSummary.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/StatsAggregatorSummary.java @@ -58,6 +58,9 @@ public Output asOutput() { return summary; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ExperimentalStatsAggregatorSummary"; + private Output summary; private StatsAggregatorSummary(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/ThreadPoolDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/ThreadPoolDataset.java index a7daf34b40f..e3fdc2b92cf 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/ThreadPoolDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/ThreadPoolDataset.java @@ -76,6 +76,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ExperimentalThreadPoolDataset"; + private Output handle; private ThreadPoolDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/ThreadPoolHandle.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/ThreadPoolHandle.java index 9a2527ec80e..15adc678211 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/ThreadPoolHandle.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/ThreadPoolHandle.java @@ -139,6 +139,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ExperimentalThreadPoolHandle"; + private Output handle; private ThreadPoolHandle(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/UnbatchDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/UnbatchDataset.java index 7fbcf202d9c..dfa611faa0e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/UnbatchDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/UnbatchDataset.java @@ -74,6 +74,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ExperimentalUnbatchDataset"; + private Output handle; private UnbatchDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/UniqueDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/UniqueDataset.java index 853152d2760..eb213348e72 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/UniqueDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/UniqueDataset.java @@ -74,6 +74,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ExperimentalUniqueDataset"; + private Output handle; private UniqueDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/debugging/CheckNumerics.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/debugging/CheckNumerics.java index 1124b625a73..e26417c561d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/debugging/CheckNumerics.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/debugging/CheckNumerics.java @@ -68,6 +68,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "CheckNumericsV2"; + private Output output; private CheckNumerics(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/debugging/DebugGradientIdentity.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/debugging/DebugGradientIdentity.java index 9840b9b1607..4214a50ab41 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/debugging/DebugGradientIdentity.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/debugging/DebugGradientIdentity.java @@ -64,6 +64,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DebugGradientIdentity"; + private Output output; private DebugGradientIdentity(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/debugging/DebugGradientRefIdentity.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/debugging/DebugGradientRefIdentity.java index 3746e4891f7..fb4a1d4cfef 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/debugging/DebugGradientRefIdentity.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/debugging/DebugGradientRefIdentity.java @@ -64,6 +64,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DebugGradientRefIdentity"; + private Output output; private DebugGradientRefIdentity(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/debugging/DebugIdentity.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/debugging/DebugIdentity.java index cf3503ffca3..812973efca5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/debugging/DebugIdentity.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/debugging/DebugIdentity.java @@ -191,6 +191,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DebugIdentityV2"; + private Output output; private DebugIdentity(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/debugging/DebugNanCount.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/debugging/DebugNanCount.java index 12e011c67ac..30bc6931743 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/debugging/DebugNanCount.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/debugging/DebugNanCount.java @@ -169,6 +169,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DebugNanCount"; + private Output output; private DebugNanCount(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/debugging/DebugNumericsSummary.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/debugging/DebugNumericsSummary.java index 32e3291a909..85c20b1eef0 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/debugging/DebugNumericsSummary.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/debugging/DebugNumericsSummary.java @@ -241,6 +241,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DebugNumericSummaryV2"; + private Output output; private DebugNumericsSummary(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/dtypes/AsString.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/dtypes/AsString.java index 6a3cac82067..9d95a0ee6a0 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/dtypes/AsString.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/dtypes/AsString.java @@ -193,6 +193,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "AsString"; + private Output output; private AsString(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/dtypes/Cast.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/dtypes/Cast.java index 5acd9c542f6..49699f07c8c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/dtypes/Cast.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/dtypes/Cast.java @@ -98,6 +98,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Cast"; + private Output y; private Cast(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/dtypes/Complex.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/dtypes/Complex.java index a342009290f..5e8918785a0 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/dtypes/Complex.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/dtypes/Complex.java @@ -82,6 +82,9 @@ public Output asOutput() { return out; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Complex"; + private Output out; private Complex(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/dtypes/ToBool.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/dtypes/ToBool.java index 2130c1279a6..72b3d46d00c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/dtypes/ToBool.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/dtypes/ToBool.java @@ -72,6 +72,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ToBool"; + private Output output; private ToBool(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesAggregateStats.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesAggregateStats.java index 8a89bc639ba..ac772ea4ae0 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesAggregateStats.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesAggregateStats.java @@ -73,6 +73,9 @@ public Output asOutput() { return statsSummary; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BoostedTreesAggregateStats"; + private Output statsSummary; private BoostedTreesAggregateStats(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesBucketize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesBucketize.java index 1af298bc2c1..6d57706c19e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesBucketize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesBucketize.java @@ -71,6 +71,9 @@ public Iterator> iterator() { return (Iterator) buckets.iterator(); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BoostedTreesBucketize"; + private List> buckets; @SuppressWarnings("unchecked") diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesCalculateBestFeatureSplit.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesCalculateBestFeatureSplit.java index 20de330cd53..41f1d3a6910 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesCalculateBestFeatureSplit.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesCalculateBestFeatureSplit.java @@ -154,6 +154,9 @@ public Output splitWithDefaultDirections() { return splitWithDefaultDirections; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BoostedTreesCalculateBestFeatureSplit"; + private Output nodeIds; private Output gains; private Output featureDimensions; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesCalculateBestFeatureSplitV2.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesCalculateBestFeatureSplitV2.java index 69fe748a5cd..903a02fd65b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesCalculateBestFeatureSplitV2.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesCalculateBestFeatureSplitV2.java @@ -132,6 +132,9 @@ public Output splitWithDefaultDirections() { return splitWithDefaultDirections; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BoostedTreesCalculateBestFeatureSplitV2"; + private Output nodeIds; private Output gains; private Output featureIds; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesCalculateBestGainsPerFeature.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesCalculateBestGainsPerFeature.java index fdf87628efb..daade3457ae 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesCalculateBestGainsPerFeature.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesCalculateBestGainsPerFeature.java @@ -107,6 +107,9 @@ public List> rightNodeContribsList() { return rightNodeContribsList; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BoostedTreesCalculateBestGainsPerFeature"; + private List> nodeIdsList; private List> gainsList; private List> thresholdsList; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesCenterBias.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesCenterBias.java index e1af20a1f14..7359b6039e2 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesCenterBias.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesCenterBias.java @@ -68,6 +68,9 @@ public Output asOutput() { return continueCentering; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BoostedTreesCenterBias"; + private Output continueCentering; private BoostedTreesCenterBias(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesCreateEnsemble.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesCreateEnsemble.java index c0c9075f784..04613900567 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesCreateEnsemble.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesCreateEnsemble.java @@ -51,6 +51,9 @@ public static BoostedTreesCreateEnsemble create(Scope scope, Operand treeEnse return new BoostedTreesCreateEnsemble(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BoostedTreesCreateEnsemble"; + private BoostedTreesCreateEnsemble(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesCreateQuantileStreamResource.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesCreateQuantileStreamResource.java index d0ac0b0224d..59362970a58 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesCreateQuantileStreamResource.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesCreateQuantileStreamResource.java @@ -85,6 +85,9 @@ public static Options maxElements(Long maxElements) { return new Options().maxElements(maxElements); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BoostedTreesCreateQuantileStreamResource"; + private BoostedTreesCreateQuantileStreamResource(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesDeserializeEnsemble.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesDeserializeEnsemble.java index 8780ca997bd..6fd83d5785d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesDeserializeEnsemble.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesDeserializeEnsemble.java @@ -53,6 +53,9 @@ public static BoostedTreesDeserializeEnsemble create(Scope scope, Operand tre return new BoostedTreesDeserializeEnsemble(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BoostedTreesDeserializeEnsemble"; + private BoostedTreesDeserializeEnsemble(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesEnsembleResourceHandleOp.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesEnsembleResourceHandleOp.java index d297ccebdb2..13522dd2fd0 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesEnsembleResourceHandleOp.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesEnsembleResourceHandleOp.java @@ -110,6 +110,9 @@ public Output asOutput() { return (Output) resource; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BoostedTreesEnsembleResourceHandleOp"; + private Output resource; private BoostedTreesEnsembleResourceHandleOp(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesExampleDebugOutputs.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesExampleDebugOutputs.java index 4902a23c9eb..8618f401ce4 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesExampleDebugOutputs.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesExampleDebugOutputs.java @@ -71,6 +71,9 @@ public Output asOutput() { return examplesDebugOutputsSerialized; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BoostedTreesExampleDebugOutputs"; + private Output examplesDebugOutputsSerialized; private BoostedTreesExampleDebugOutputs(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesFlushQuantileSummaries.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesFlushQuantileSummaries.java index d520766a041..d22acc2ca1b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesFlushQuantileSummaries.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesFlushQuantileSummaries.java @@ -68,6 +68,9 @@ public Iterator> iterator() { return (Iterator) summaries.iterator(); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BoostedTreesFlushQuantileSummaries"; + private List> summaries; @SuppressWarnings("unchecked") diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesGetEnsembleStates.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesGetEnsembleStates.java index 06ef0f63bfc..36e8eb3c4be 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesGetEnsembleStates.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesGetEnsembleStates.java @@ -84,6 +84,9 @@ public Output lastLayerNodesRange() { return lastLayerNodesRange; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BoostedTreesGetEnsembleStates"; + private Output stampToken; private Output numTrees; private Output numFinalizedTrees; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesMakeQuantileSummaries.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesMakeQuantileSummaries.java index 6bdbd64dd7a..cf4156bb2ce 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesMakeQuantileSummaries.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesMakeQuantileSummaries.java @@ -72,6 +72,9 @@ public Iterator> iterator() { return (Iterator) summaries.iterator(); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BoostedTreesMakeQuantileSummaries"; + private List> summaries; @SuppressWarnings("unchecked") diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesMakeStatsSummary.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesMakeStatsSummary.java index ed276f08b20..626e05a6f54 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesMakeStatsSummary.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesMakeStatsSummary.java @@ -73,6 +73,9 @@ public Output asOutput() { return statsSummary; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BoostedTreesMakeStatsSummary"; + private Output statsSummary; private BoostedTreesMakeStatsSummary(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesPredict.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesPredict.java index fc12d1cc2ed..e9c7d4a2be1 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesPredict.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesPredict.java @@ -70,6 +70,9 @@ public Output asOutput() { return logits; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BoostedTreesPredict"; + private Output logits; private BoostedTreesPredict(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesQuantileStreamResourceAddSummaries.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesQuantileStreamResourceAddSummaries.java index 08bda03ea19..76480c4be6d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesQuantileStreamResourceAddSummaries.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesQuantileStreamResourceAddSummaries.java @@ -53,6 +53,9 @@ public static BoostedTreesQuantileStreamResourceAddSummaries create(Scope scope, return new BoostedTreesQuantileStreamResourceAddSummaries(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BoostedTreesQuantileStreamResourceAddSummaries"; + private BoostedTreesQuantileStreamResourceAddSummaries(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesQuantileStreamResourceDeserialize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesQuantileStreamResourceDeserialize.java index 58850d3e981..82066e267d2 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesQuantileStreamResourceDeserialize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesQuantileStreamResourceDeserialize.java @@ -51,6 +51,9 @@ public static BoostedTreesQuantileStreamResourceDeserialize create(Scope scope, return new BoostedTreesQuantileStreamResourceDeserialize(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BoostedTreesQuantileStreamResourceDeserialize"; + private BoostedTreesQuantileStreamResourceDeserialize(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesQuantileStreamResourceFlush.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesQuantileStreamResourceFlush.java index 4f3c4f561b8..359b7b63ff6 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesQuantileStreamResourceFlush.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesQuantileStreamResourceFlush.java @@ -94,6 +94,9 @@ public static Options generateQuantiles(Boolean generateQuantiles) { return new Options().generateQuantiles(generateQuantiles); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BoostedTreesQuantileStreamResourceFlush"; + private BoostedTreesQuantileStreamResourceFlush(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesQuantileStreamResourceGetBucketBoundaries.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesQuantileStreamResourceGetBucketBoundaries.java index 711e3f6acd6..5d421152254 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesQuantileStreamResourceGetBucketBoundaries.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesQuantileStreamResourceGetBucketBoundaries.java @@ -68,6 +68,9 @@ public Iterator> iterator() { return (Iterator) bucketBoundaries.iterator(); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BoostedTreesQuantileStreamResourceGetBucketBoundaries"; + private List> bucketBoundaries; @SuppressWarnings("unchecked") diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesQuantileStreamResourceHandleOp.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesQuantileStreamResourceHandleOp.java index 72898030449..db925d767f9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesQuantileStreamResourceHandleOp.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesQuantileStreamResourceHandleOp.java @@ -110,6 +110,9 @@ public Output asOutput() { return (Output) resource; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BoostedTreesQuantileStreamResourceHandleOp"; + private Output resource; private BoostedTreesQuantileStreamResourceHandleOp(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesSerializeEnsemble.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesSerializeEnsemble.java index 8bf4df8541e..287c9e9054a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesSerializeEnsemble.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesSerializeEnsemble.java @@ -62,6 +62,9 @@ public Output treeEnsembleSerialized() { return treeEnsembleSerialized; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BoostedTreesSerializeEnsemble"; + private Output stampToken; private Output treeEnsembleSerialized; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesSparseAggregateStats.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesSparseAggregateStats.java index 23ef1f4f01e..3923ac0e905 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesSparseAggregateStats.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesSparseAggregateStats.java @@ -98,6 +98,9 @@ public Output statsSummaryShape() { return statsSummaryShape; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BoostedTreesSparseAggregateStats"; + private Output statsSummaryIndices; private Output statsSummaryValues; private Output statsSummaryShape; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesSparseCalculateBestFeatureSplit.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesSparseCalculateBestFeatureSplit.java index 48afc375b67..b2f2dd1eebf 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesSparseCalculateBestFeatureSplit.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesSparseCalculateBestFeatureSplit.java @@ -159,6 +159,9 @@ public Output splitWithDefaultDirections() { return splitWithDefaultDirections; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BoostedTreesSparseCalculateBestFeatureSplit"; + private Output nodeIds; private Output gains; private Output featureDimensions; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesTrainingPredict.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesTrainingPredict.java index 2dd38c35c59..a81509950b9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesTrainingPredict.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesTrainingPredict.java @@ -87,6 +87,9 @@ public Output nodeIds() { return nodeIds; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BoostedTreesTrainingPredict"; + private Output partialLogits; private Output treeIds; private Output nodeIds; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesUpdateEnsemble.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesUpdateEnsemble.java index 05f2d9c1357..c1b7bb44559 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesUpdateEnsemble.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesUpdateEnsemble.java @@ -76,6 +76,9 @@ public static BoostedTreesUpdateEnsemble create(Scope scope, Operand treeEnse return new BoostedTreesUpdateEnsemble(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BoostedTreesUpdateEnsemble"; + private BoostedTreesUpdateEnsemble(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesUpdateEnsembleV2.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesUpdateEnsembleV2.java index 0e7c81ed3a1..afd9d646c2f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesUpdateEnsembleV2.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesUpdateEnsembleV2.java @@ -115,6 +115,9 @@ public static Options logitsDimension(Long logitsDimension) { return new Options().logitsDimension(logitsDimension); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BoostedTreesUpdateEnsembleV2"; + private BoostedTreesUpdateEnsembleV2(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/IsBoostedTreesEnsembleInitialized.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/IsBoostedTreesEnsembleInitialized.java index f7f78393822..7bf185408df 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/IsBoostedTreesEnsembleInitialized.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/IsBoostedTreesEnsembleInitialized.java @@ -59,6 +59,9 @@ public Output asOutput() { return isInitialized; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "IsBoostedTreesEnsembleInitialized"; + private Output isInitialized; private IsBoostedTreesEnsembleInitialized(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/IsBoostedTreesQuantileStreamResourceInitialized.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/IsBoostedTreesQuantileStreamResourceInitialized.java index 6561f2d1eea..66ad4435dfd 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/IsBoostedTreesQuantileStreamResourceInitialized.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/IsBoostedTreesQuantileStreamResourceInitialized.java @@ -61,6 +61,9 @@ public Output asOutput() { return isInitialized; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "IsBoostedTreesQuantileStreamResourceInitialized"; + private Output isInitialized; private IsBoostedTreesQuantileStreamResourceInitialized(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/AdjustContrast.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/AdjustContrast.java index acca1abe88b..ab5b3f32e61 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/AdjustContrast.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/AdjustContrast.java @@ -76,6 +76,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "AdjustContrastv2"; + private Output output; private AdjustContrast(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/AdjustHue.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/AdjustHue.java index 39d96bec97e..203980f79f8 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/AdjustHue.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/AdjustHue.java @@ -73,6 +73,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "AdjustHue"; + private Output output; private AdjustHue(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/AdjustSaturation.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/AdjustSaturation.java index 3fa15fc4716..393dd196f43 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/AdjustSaturation.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/AdjustSaturation.java @@ -73,6 +73,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "AdjustSaturation"; + private Output output; private AdjustSaturation(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/CombinedNonMaxSuppression.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/CombinedNonMaxSuppression.java index 1f1926163fc..42bf54e7143 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/CombinedNonMaxSuppression.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/CombinedNonMaxSuppression.java @@ -178,6 +178,9 @@ public Output validDetections() { return validDetections; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "CombinedNonMaxSuppression"; + private Output nmsedBoxes; private Output nmsedScores; private Output nmsedClasses; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/CropAndResize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/CropAndResize.java index 19c93f95d4b..f0048c1014b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/CropAndResize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/CropAndResize.java @@ -156,6 +156,9 @@ public Output asOutput() { return crops; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "CropAndResize"; + private Output crops; private CropAndResize(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/CropAndResizeGradBoxes.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/CropAndResizeGradBoxes.java index e29c2a2c159..67263c1e576 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/CropAndResizeGradBoxes.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/CropAndResizeGradBoxes.java @@ -116,6 +116,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "CropAndResizeGradBoxes"; + private Output output; private CropAndResizeGradBoxes(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/CropAndResizeGradImage.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/CropAndResizeGradImage.java index 30b7f0b7ddf..6a6415f879d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/CropAndResizeGradImage.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/CropAndResizeGradImage.java @@ -122,6 +122,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "CropAndResizeGradImage"; + private Output output; private CropAndResizeGradImage(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/DecodeAndCropJpeg.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/DecodeAndCropJpeg.java index c7191af839a..0c2ac4b1471 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/DecodeAndCropJpeg.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/DecodeAndCropJpeg.java @@ -232,6 +232,9 @@ public Output asOutput() { return image; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DecodeAndCropJpeg"; + private Output image; private DecodeAndCropJpeg(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/DecodeBmp.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/DecodeBmp.java index 23ade8ab9e9..3801822db4e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/DecodeBmp.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/DecodeBmp.java @@ -109,6 +109,9 @@ public Output asOutput() { return image; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DecodeBmp"; + private Output image; private DecodeBmp(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/DecodeGif.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/DecodeGif.java index c61b81f21c2..6a06a26ee94 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/DecodeGif.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/DecodeGif.java @@ -70,6 +70,9 @@ public Output asOutput() { return image; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DecodeGif"; + private Output image; private DecodeGif(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/DecodeJpeg.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/DecodeJpeg.java index 4b30ea87bec..d45e802eb9d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/DecodeJpeg.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/DecodeJpeg.java @@ -229,6 +229,9 @@ public Output asOutput() { return image; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DecodeJpeg"; + private Output image; private DecodeJpeg(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/DecodePng.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/DecodePng.java index 6ff272fc487..eb9ef2a8bee 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/DecodePng.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/DecodePng.java @@ -139,6 +139,9 @@ public Output asOutput() { return image; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DecodePng"; + private Output image; private DecodePng(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/DrawBoundingBoxes.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/DrawBoundingBoxes.java index 08d460a2985..ba674376d07 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/DrawBoundingBoxes.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/DrawBoundingBoxes.java @@ -82,6 +82,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DrawBoundingBoxesV2"; + private Output output; private DrawBoundingBoxes(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/EncodeJpeg.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/EncodeJpeg.java index a08e1d0fbc8..920961e1115 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/EncodeJpeg.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/EncodeJpeg.java @@ -275,6 +275,9 @@ public Output asOutput() { return contents; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "EncodeJpeg"; + private Output contents; private EncodeJpeg(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/EncodeJpegVariableQuality.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/EncodeJpegVariableQuality.java index 8c9fe1afd49..c07fc341f00 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/EncodeJpegVariableQuality.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/EncodeJpegVariableQuality.java @@ -68,6 +68,9 @@ public Output asOutput() { return contents; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "EncodeJpegVariableQuality"; + private Output contents; private EncodeJpegVariableQuality(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/EncodePng.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/EncodePng.java index 0d01ff0f6f4..cf5b5a0ebc5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/EncodePng.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/EncodePng.java @@ -116,6 +116,9 @@ public Output asOutput() { return contents; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "EncodePng"; + private Output contents; private EncodePng(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ExtractGlimpse.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ExtractGlimpse.java index 74ac3be5a05..412daf7387e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ExtractGlimpse.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ExtractGlimpse.java @@ -199,6 +199,9 @@ public Output asOutput() { return glimpse; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ExtractGlimpse"; + private Output glimpse; private ExtractGlimpse(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ExtractImagePatches.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ExtractImagePatches.java index 59b3af03fbb..d02d422a005 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ExtractImagePatches.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ExtractImagePatches.java @@ -92,6 +92,9 @@ public Output asOutput() { return patches; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ExtractImagePatches"; + private Output patches; private ExtractImagePatches(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ExtractJpegShape.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ExtractJpegShape.java index 3570c3a6dda..dfa8c4ea7b3 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ExtractJpegShape.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ExtractJpegShape.java @@ -83,6 +83,9 @@ public Output asOutput() { return imageShape; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ExtractJpegShape"; + private Output imageShape; private ExtractJpegShape(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/GenerateBoundingBoxProposals.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/GenerateBoundingBoxProposals.java index 16d71155a66..1f1563c7d43 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/GenerateBoundingBoxProposals.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/GenerateBoundingBoxProposals.java @@ -123,6 +123,9 @@ public Output roiProbabilities() { return roiProbabilities; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "GenerateBoundingBoxProposals"; + private Output rois; private Output roiProbabilities; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/HsvToRgb.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/HsvToRgb.java index 6a74b96f923..fb752a83518 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/HsvToRgb.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/HsvToRgb.java @@ -69,6 +69,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "HSVToRGB"; + private Output output; private HsvToRgb(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ImageProjectiveTransformV2.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ImageProjectiveTransformV2.java index 478d41f7943..3363d6a9804 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ImageProjectiveTransformV2.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ImageProjectiveTransformV2.java @@ -113,6 +113,9 @@ public Output asOutput() { return transformedImages; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ImageProjectiveTransformV2"; + private Output transformedImages; private ImageProjectiveTransformV2(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/NearestNeighbors.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/NearestNeighbors.java index 55eab58c7fc..f3ad7cb890b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/NearestNeighbors.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/NearestNeighbors.java @@ -73,6 +73,9 @@ public Output nearestCenterDistances() { return nearestCenterDistances; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "NearestNeighbors"; + private Output nearestCenterIndices; private Output nearestCenterDistances; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/NonMaxSuppression.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/NonMaxSuppression.java index ee83c1d3f06..0745299e34f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/NonMaxSuppression.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/NonMaxSuppression.java @@ -153,6 +153,9 @@ public Output validOutputs() { return validOutputs; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "NonMaxSuppressionV5"; + private Output selectedIndices; private Output selectedScores; private Output validOutputs; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/NonMaxSuppressionWithOverlaps.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/NonMaxSuppressionWithOverlaps.java index 97e14206922..073aee26ff9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/NonMaxSuppressionWithOverlaps.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/NonMaxSuppressionWithOverlaps.java @@ -90,6 +90,9 @@ public Output asOutput() { return selectedIndices; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "NonMaxSuppressionWithOverlaps"; + private Output selectedIndices; private NonMaxSuppressionWithOverlaps(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/QuantizedResizeBilinear.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/QuantizedResizeBilinear.java index 9903ce2c265..7eb6d8a3a92 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/QuantizedResizeBilinear.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/QuantizedResizeBilinear.java @@ -136,6 +136,9 @@ public Output outMax() { return outMax; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizedResizeBilinear"; + private Output resizedImages; private Output outMin; private Output outMax; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/RandomCrop.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/RandomCrop.java index 855a60036d9..47d03d63187 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/RandomCrop.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/RandomCrop.java @@ -130,6 +130,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RandomCrop"; + private Output output; private RandomCrop(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ResizeArea.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ResizeArea.java index dd7d7335570..60d1e473ef0 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ResizeArea.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ResizeArea.java @@ -115,6 +115,9 @@ public Output asOutput() { return resizedImages; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResizeArea"; + private Output resizedImages; private ResizeArea(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ResizeBicubic.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ResizeBicubic.java index 23fa5034437..2519eaa6ea9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ResizeBicubic.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ResizeBicubic.java @@ -124,6 +124,9 @@ public Output asOutput() { return resizedImages; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResizeBicubic"; + private Output resizedImages; private ResizeBicubic(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ResizeBicubicGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ResizeBicubicGrad.java index d7cc678f8a4..96296cdf33f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ResizeBicubicGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ResizeBicubicGrad.java @@ -123,6 +123,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResizeBicubicGrad"; + private Output output; private ResizeBicubicGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ResizeBilinear.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ResizeBilinear.java index fb01887d6f5..d0c28fed013 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ResizeBilinear.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ResizeBilinear.java @@ -124,6 +124,9 @@ public Output asOutput() { return resizedImages; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResizeBilinear"; + private Output resizedImages; private ResizeBilinear(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ResizeBilinearGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ResizeBilinearGrad.java index 85fb0ff85e6..b8aef51ba30 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ResizeBilinearGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ResizeBilinearGrad.java @@ -123,6 +123,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResizeBilinearGrad"; + private Output output; private ResizeBilinearGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ResizeNearestNeighbor.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ResizeNearestNeighbor.java index 9183dd63544..dd7865841de 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ResizeNearestNeighbor.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ResizeNearestNeighbor.java @@ -123,6 +123,9 @@ public Output asOutput() { return resizedImages; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResizeNearestNeighbor"; + private Output resizedImages; private ResizeNearestNeighbor(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ResizeNearestNeighborGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ResizeNearestNeighborGrad.java index c8fb4f704f8..4897c0f9dc6 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ResizeNearestNeighborGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ResizeNearestNeighborGrad.java @@ -122,6 +122,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResizeNearestNeighborGrad"; + private Output output; private ResizeNearestNeighborGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/RgbToHsv.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/RgbToHsv.java index a0fdcc30ff8..acee7a6061e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/RgbToHsv.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/RgbToHsv.java @@ -83,6 +83,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RGBToHSV"; + private Output output; private RgbToHsv(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/SampleDistortedBoundingBox.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/SampleDistortedBoundingBox.java index 8281880a8b0..7f83b2ee84c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/SampleDistortedBoundingBox.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/SampleDistortedBoundingBox.java @@ -275,6 +275,9 @@ public Output bboxes() { return bboxes; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SampleDistortedBoundingBoxV2"; + private Output begin; private Output size; private Output bboxes; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ScaleAndTranslate.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ScaleAndTranslate.java index bd4cc964f2f..26bf544be2e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ScaleAndTranslate.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ScaleAndTranslate.java @@ -120,6 +120,9 @@ public Output asOutput() { return resizedImages; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ScaleAndTranslate"; + private Output resizedImages; private ScaleAndTranslate(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ScaleAndTranslateGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ScaleAndTranslateGrad.java index 8ab90449e1f..4b8d9b0fc4b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ScaleAndTranslateGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ScaleAndTranslateGrad.java @@ -119,6 +119,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ScaleAndTranslateGrad"; + private Output output; private ScaleAndTranslateGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/DecodeBase64.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/DecodeBase64.java index 7abe6aaa1f1..db026fd820c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/DecodeBase64.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/DecodeBase64.java @@ -63,6 +63,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DecodeBase64"; + private Output output; private DecodeBase64(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/DecodeCompressed.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/DecodeCompressed.java index 01a55de64ca..745dba6d063 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/DecodeCompressed.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/DecodeCompressed.java @@ -104,6 +104,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DecodeCompressed"; + private Output output; private DecodeCompressed(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/DecodeCsv.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/DecodeCsv.java index 4825645c0eb..6b417cb8717 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/DecodeCsv.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/DecodeCsv.java @@ -174,6 +174,9 @@ public Iterator> iterator() { return (Iterator) output.iterator(); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DecodeCSV"; + private List> output; private DecodeCsv(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/DecodeJsonExample.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/DecodeJsonExample.java index 0f5b155c267..f3da58ca98d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/DecodeJsonExample.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/DecodeJsonExample.java @@ -69,6 +69,9 @@ public Output asOutput() { return binaryExamples; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DecodeJSONExample"; + private Output binaryExamples; private DecodeJsonExample(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/DecodePaddedRaw.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/DecodePaddedRaw.java index 137f69f7015..820b0077ba5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/DecodePaddedRaw.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/DecodePaddedRaw.java @@ -109,6 +109,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DecodePaddedRaw"; + private Output output; private DecodePaddedRaw(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/DecodeRaw.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/DecodeRaw.java index d42e9e79d6c..dfdabfdb466 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/DecodeRaw.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/DecodeRaw.java @@ -106,6 +106,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DecodeRaw"; + private Output output; private DecodeRaw(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/DeserializeManySparse.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/DeserializeManySparse.java index 1d80fd486df..8582681c073 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/DeserializeManySparse.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/DeserializeManySparse.java @@ -116,6 +116,9 @@ public Output sparseShape() { return sparseShape; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DeserializeManySparse"; + private Output sparseIndices; private Output sparseValues; private Output sparseShape; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/EncodeBase64.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/EncodeBase64.java index 9dbfbb079b2..ddb331b4a48 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/EncodeBase64.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/EncodeBase64.java @@ -101,6 +101,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "EncodeBase64"; + private Output output; private EncodeBase64(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/FifoQueue.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/FifoQueue.java index 95c5bfcd712..842985b49e9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/FifoQueue.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/FifoQueue.java @@ -175,6 +175,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "FIFOQueueV2"; + private Output handle; private FifoQueue(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/FixedLengthRecordReader.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/FixedLengthRecordReader.java index a091f665ba4..3678b8190b9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/FixedLengthRecordReader.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/FixedLengthRecordReader.java @@ -198,6 +198,9 @@ public Output asOutput() { return (Output) readerHandle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "FixedLengthRecordReaderV2"; + private Output readerHandle; private FixedLengthRecordReader(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/IdentityReader.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/IdentityReader.java index af9a6ca34e7..99ae027a82e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/IdentityReader.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/IdentityReader.java @@ -119,6 +119,9 @@ public Output asOutput() { return (Output) readerHandle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "IdentityReaderV2"; + private Output readerHandle; private IdentityReader(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/LmdbReader.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/LmdbReader.java index aa8c476a0c1..b3b10b2809c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/LmdbReader.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/LmdbReader.java @@ -115,6 +115,9 @@ public Output asOutput() { return readerHandle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LMDBReader"; + private Output readerHandle; private LmdbReader(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/MatchingFiles.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/MatchingFiles.java index 5c9d5bcd681..ed2b33adea3 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/MatchingFiles.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/MatchingFiles.java @@ -64,6 +64,9 @@ public Output asOutput() { return filenames; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MatchingFiles"; + private Output filenames; private MatchingFiles(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/PaddingFifoQueue.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/PaddingFifoQueue.java index 516ac396ad7..b72d8188038 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/PaddingFifoQueue.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/PaddingFifoQueue.java @@ -187,6 +187,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "PaddingFIFOQueueV2"; + private Output handle; private PaddingFifoQueue(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ParseExample.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ParseExample.java index 1c0b73c5cca..bd8f0f4a603 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ParseExample.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ParseExample.java @@ -166,6 +166,9 @@ public List> raggedRowSplits() { return raggedRowSplits; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ParseExampleV2"; + private List> sparseIndices; private List> sparseValues; private List> sparseShapes; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ParseSequenceExample.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ParseSequenceExample.java index d7d83defcca..8720b3d160e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ParseSequenceExample.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ParseSequenceExample.java @@ -358,6 +358,9 @@ public List> featureListRaggedInnerSplits() { return featureListRaggedInnerSplits; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ParseSequenceExampleV2"; + private List> contextSparseIndices; private List> contextSparseValues; private List> contextSparseShapes; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ParseSingleExample.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ParseSingleExample.java index 95e8f11018b..2c09ba8ac4c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ParseSingleExample.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ParseSingleExample.java @@ -129,6 +129,9 @@ public List> denseValues() { return denseValues; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ParseSingleExample"; + private List> sparseIndices; private List> sparseValues; private List> sparseShapes; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ParseSingleSequenceExample.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ParseSingleSequenceExample.java index 4457e099ea8..bb1e1eaa576 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ParseSingleSequenceExample.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ParseSingleSequenceExample.java @@ -239,6 +239,9 @@ public List> featureListDenseValues() { return featureListDenseValues; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ParseSingleSequenceExample"; + private List> contextSparseIndices; private List> contextSparseValues; private List> contextSparseShapes; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ParseTensor.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ParseTensor.java index bf2a8e62c2d..bebdc1b4419 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ParseTensor.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ParseTensor.java @@ -67,6 +67,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ParseTensor"; + private Output output; private ParseTensor(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/PriorityQueue.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/PriorityQueue.java index 587994bba0f..569d4ae7eb3 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/PriorityQueue.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/PriorityQueue.java @@ -161,6 +161,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "PriorityQueueV2"; + private Output handle; private PriorityQueue(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueClose.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueClose.java index d2bbb349ec0..fb55f708140 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueClose.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueClose.java @@ -88,6 +88,9 @@ public static Options cancelPendingEnqueues(Boolean cancelPendingEnqueues) { return new Options().cancelPendingEnqueues(cancelPendingEnqueues); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QueueCloseV2"; + private QueueClose(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueDequeue.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueDequeue.java index d5c2f67db77..b74fb3ad3e8 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueDequeue.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueDequeue.java @@ -116,6 +116,9 @@ public Iterator> iterator() { return (Iterator) components.iterator(); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QueueDequeueV2"; + private List> components; private QueueDequeue(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueDequeueMany.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueDequeueMany.java index f705e660c1b..2906fe6543c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueDequeueMany.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueDequeueMany.java @@ -126,6 +126,9 @@ public Iterator> iterator() { return (Iterator) components.iterator(); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QueueDequeueManyV2"; + private List> components; private QueueDequeueMany(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueDequeueUpTo.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueDequeueUpTo.java index cd1406318ef..51af788104c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueDequeueUpTo.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueDequeueUpTo.java @@ -130,6 +130,9 @@ public Iterator> iterator() { return (Iterator) components.iterator(); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QueueDequeueUpToV2"; + private List> components; private QueueDequeueUpTo(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueEnqueue.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueEnqueue.java index 8bbe35eeada..546981e8abf 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueEnqueue.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueEnqueue.java @@ -93,6 +93,9 @@ public static Options timeoutMs(Long timeoutMs) { return new Options().timeoutMs(timeoutMs); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QueueEnqueueV2"; + private QueueEnqueue(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueEnqueueMany.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueEnqueueMany.java index 8f973f62260..48df5d3b9d3 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueEnqueueMany.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueEnqueueMany.java @@ -98,6 +98,9 @@ public static Options timeoutMs(Long timeoutMs) { return new Options().timeoutMs(timeoutMs); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QueueEnqueueManyV2"; + private QueueEnqueueMany(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueIsClosed.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueIsClosed.java index 0326250f5a5..895965a3c6c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueIsClosed.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueIsClosed.java @@ -62,6 +62,9 @@ public Output asOutput() { return isClosed; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QueueIsClosedV2"; + private Output isClosed; private QueueIsClosed(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueSize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueSize.java index cf904be8436..cefc1b3fd11 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueSize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueSize.java @@ -60,6 +60,9 @@ public Output asOutput() { return size; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QueueSizeV2"; + private Output size; private QueueSize(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/RandomShuffleQueue.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/RandomShuffleQueue.java index ced52fc58cd..cdde1debc95 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/RandomShuffleQueue.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/RandomShuffleQueue.java @@ -238,6 +238,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RandomShuffleQueueV2"; + private Output handle; private RandomShuffleQueue(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReadFile.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReadFile.java index 9ba806c69ae..7109022751a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReadFile.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReadFile.java @@ -59,6 +59,9 @@ public Output asOutput() { return contents; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ReadFile"; + private Output contents; private ReadFile(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderNumRecordsProduced.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderNumRecordsProduced.java index 51ec23956fb..8e4cb9c5692 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderNumRecordsProduced.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderNumRecordsProduced.java @@ -62,6 +62,9 @@ public Output asOutput() { return recordsProduced; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ReaderNumRecordsProducedV2"; + private Output recordsProduced; private ReaderNumRecordsProduced(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderNumWorkUnitsCompleted.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderNumWorkUnitsCompleted.java index 848f1602cb3..bbd6fc8075c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderNumWorkUnitsCompleted.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderNumWorkUnitsCompleted.java @@ -59,6 +59,9 @@ public Output asOutput() { return unitsCompleted; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ReaderNumWorkUnitsCompletedV2"; + private Output unitsCompleted; private ReaderNumWorkUnitsCompleted(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderRead.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderRead.java index 33e1e7135e5..9b7110b10ae 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderRead.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderRead.java @@ -68,6 +68,9 @@ public Output value() { return value; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ReaderReadV2"; + private Output key; private Output value; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderReadUpTo.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderReadUpTo.java index 897ca83dc9f..e22d5b95576 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderReadUpTo.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderReadUpTo.java @@ -72,6 +72,9 @@ public Output values() { return values; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ReaderReadUpToV2"; + private Output keys; private Output values; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderReset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderReset.java index f99a25a836a..6e3de01134b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderReset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderReset.java @@ -46,6 +46,9 @@ public static ReaderReset create(Scope scope, Operand readerHandle) { return new ReaderReset(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ReaderResetV2"; + private ReaderReset(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderRestoreState.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderRestoreState.java index 359c4d63284..b0abea1257c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderRestoreState.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderRestoreState.java @@ -53,6 +53,9 @@ public static ReaderRestoreState create(Scope scope, Operand readerHandle, Op return new ReaderRestoreState(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ReaderRestoreStateV2"; + private ReaderRestoreState(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderSerializeState.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderSerializeState.java index d10ce99d2a8..72b927ed171 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderSerializeState.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderSerializeState.java @@ -62,6 +62,9 @@ public Output asOutput() { return state; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ReaderSerializeStateV2"; + private Output state; private ReaderSerializeState(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/SerializeManySparse.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/SerializeManySparse.java index 5cb65e873cc..0afbdcd6edd 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/SerializeManySparse.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/SerializeManySparse.java @@ -93,6 +93,9 @@ public Output asOutput() { return serializedSparse; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SerializeManySparse"; + private Output serializedSparse; private SerializeManySparse(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/SerializeSparse.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/SerializeSparse.java index d97317b00d4..2d8fc7838e4 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/SerializeSparse.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/SerializeSparse.java @@ -85,6 +85,9 @@ public Output asOutput() { return serializedSparse; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SerializeSparse"; + private Output serializedSparse; private SerializeSparse(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/SerializeTensor.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/SerializeTensor.java index 07935a57d3f..d68320b85e3 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/SerializeTensor.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/SerializeTensor.java @@ -61,6 +61,9 @@ public Output asOutput() { return serialized; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SerializeTensor"; + private Output serialized; private SerializeTensor(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ShardedFilename.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ShardedFilename.java index 3febe213066..88b422a5f6d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ShardedFilename.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ShardedFilename.java @@ -66,6 +66,9 @@ public Output asOutput() { return filename; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ShardedFilename"; + private Output filename; private ShardedFilename(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ShardedFilespec.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ShardedFilespec.java index 4c414afa0a4..f04c0cf1a58 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ShardedFilespec.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ShardedFilespec.java @@ -62,6 +62,9 @@ public Output asOutput() { return filename; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ShardedFilespec"; + private Output filename; private ShardedFilespec(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/TextLineReader.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/TextLineReader.java index 963710a3708..90bf079d2cf 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/TextLineReader.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/TextLineReader.java @@ -135,6 +135,9 @@ public Output asOutput() { return (Output) readerHandle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TextLineReaderV2"; + private Output readerHandle; private TextLineReader(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/TfRecordReader.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/TfRecordReader.java index 98d58836334..a12145e7972 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/TfRecordReader.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/TfRecordReader.java @@ -135,6 +135,9 @@ public Output asOutput() { return (Output) readerHandle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TFRecordReaderV2"; + private Output readerHandle; private TfRecordReader(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/WholeFileReader.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/WholeFileReader.java index 444b36aec72..8cab4f9b09e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/WholeFileReader.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/WholeFileReader.java @@ -119,6 +119,9 @@ public Output asOutput() { return (Output) readerHandle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "WholeFileReaderV2"; + private Output readerHandle; private WholeFileReader(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/WriteFile.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/WriteFile.java index 2d8f1ed4a1b..d9fba243fc3 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/WriteFile.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/WriteFile.java @@ -51,6 +51,9 @@ public static WriteFile create(Scope scope, Operand filename, Operand asOutput() { return band; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MatrixBandPart"; + private Output band; private BandPart(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchCholesky.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchCholesky.java index 988d5a23c7f..733139f4359 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchCholesky.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchCholesky.java @@ -60,6 +60,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BatchCholesky"; + private Output output; private BatchCholesky(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchCholeskyGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchCholeskyGrad.java index 71b533674a8..d56f45e8abf 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchCholeskyGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchCholeskyGrad.java @@ -62,6 +62,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BatchCholeskyGrad"; + private Output output; private BatchCholeskyGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixBandPart.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixBandPart.java index 7b0a946e593..8c990a8a71c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixBandPart.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixBandPart.java @@ -64,6 +64,9 @@ public Output asOutput() { return band; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BatchMatrixBandPart"; + private Output band; private BatchMatrixBandPart(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixDeterminant.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixDeterminant.java index c56dcebd836..f513e9f0057 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixDeterminant.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixDeterminant.java @@ -59,6 +59,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BatchMatrixDeterminant"; + private Output output; private BatchMatrixDeterminant(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixDiag.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixDiag.java index 3cb73f6e451..b3f9071f9f6 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixDiag.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixDiag.java @@ -59,6 +59,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BatchMatrixDiag"; + private Output output; private BatchMatrixDiag(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixDiagPart.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixDiagPart.java index 99207f83e9c..47f78ed623d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixDiagPart.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixDiagPart.java @@ -59,6 +59,9 @@ public Output asOutput() { return diagonal; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BatchMatrixDiagPart"; + private Output diagonal; private BatchMatrixDiagPart(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixInverse.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixInverse.java index bf8ca469f95..36bbee414e9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixInverse.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixInverse.java @@ -94,6 +94,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BatchMatrixInverse"; + private Output output; private BatchMatrixInverse(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixSetDiag.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixSetDiag.java index 7f8508edbb0..d83ee0194e7 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixSetDiag.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixSetDiag.java @@ -61,6 +61,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BatchMatrixSetDiag"; + private Output output; private BatchMatrixSetDiag(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixSolve.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixSolve.java index a4b086faa3f..677b8aa0e7b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixSolve.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixSolve.java @@ -96,6 +96,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BatchMatrixSolve"; + private Output output; private BatchMatrixSolve(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixSolveLs.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixSolveLs.java index c5a71d9481d..ae4a4366b3b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixSolveLs.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixSolveLs.java @@ -99,6 +99,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BatchMatrixSolveLs"; + private Output output; private BatchMatrixSolveLs(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixTriangularSolve.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixTriangularSolve.java index 186d68a8f68..cb1baa772fd 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixTriangularSolve.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchMatrixTriangularSolve.java @@ -115,6 +115,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BatchMatrixTriangularSolve"; + private Output output; private BatchMatrixTriangularSolve(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchSelfAdjointEig.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchSelfAdjointEig.java index d2c56803f3a..e589f5c49fe 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchSelfAdjointEig.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchSelfAdjointEig.java @@ -95,6 +95,9 @@ public Output v() { return v; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BatchSelfAdjointEigV2"; + private Output e; private Output v; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchSvd.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchSvd.java index 25b8da69ab5..21db016713a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchSvd.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/BatchSvd.java @@ -119,6 +119,9 @@ public Output v() { return v; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BatchSvd"; + private Output s; private Output u; private Output v; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Cholesky.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Cholesky.java index 64216a5a5d3..3acf951d5a7 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Cholesky.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Cholesky.java @@ -76,6 +76,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Cholesky"; + private Output output; private Cholesky(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/CholeskyGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/CholeskyGrad.java index e60c7eee5fd..b4171907853 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/CholeskyGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/CholeskyGrad.java @@ -72,6 +72,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "CholeskyGrad"; + private Output output; private CholeskyGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/ConjugateTranspose.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/ConjugateTranspose.java index a1d82fd5d07..2da45552f35 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/ConjugateTranspose.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/ConjugateTranspose.java @@ -68,6 +68,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ConjugateTranspose"; + private Output y; private ConjugateTranspose(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Cross.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Cross.java index 1de44ceb714..0afc8a2bf60 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Cross.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Cross.java @@ -69,6 +69,9 @@ public Output asOutput() { return product; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Cross"; + private Output product; private Cross(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Det.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Det.java index 4ae18c47148..7134ef6ea44 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Det.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Det.java @@ -66,6 +66,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MatrixDeterminant"; + private Output output; private Det(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Eig.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Eig.java index faaf6dd5972..68c33487129 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Eig.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Eig.java @@ -115,6 +115,9 @@ public Output v() { return v; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Eig"; + private Output e; private Output v; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Einsum.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Einsum.java index 7471e13882c..6817270edd1 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Einsum.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Einsum.java @@ -142,6 +142,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Einsum"; + private Output output; private Einsum(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/EuclideanNorm.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/EuclideanNorm.java index eeb65943fa3..f8ce40f62bf 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/EuclideanNorm.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/EuclideanNorm.java @@ -105,6 +105,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "EuclideanNorm"; + private Output output; private EuclideanNorm(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Inv.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Inv.java index 46fbed05b63..e482957bdac 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Inv.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Inv.java @@ -112,6 +112,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MatrixInverse"; + private Output output; private Inv(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/LoadAndRemapMatrix.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/LoadAndRemapMatrix.java index 58482665ed7..1010c503eba 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/LoadAndRemapMatrix.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/LoadAndRemapMatrix.java @@ -162,6 +162,9 @@ public Output asOutput() { return outputMatrix; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LoadAndRemapMatrix"; + private Output outputMatrix; private LoadAndRemapMatrix(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/LogMatrixDeterminant.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/LogMatrixDeterminant.java index a19e1753007..33781d561b4 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/LogMatrixDeterminant.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/LogMatrixDeterminant.java @@ -75,6 +75,9 @@ public Output logAbsDeterminant() { return logAbsDeterminant; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LogMatrixDeterminant"; + private Output sign; private Output logAbsDeterminant; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Lu.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Lu.java index f243cc902c9..ce37bbcbea2 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Lu.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Lu.java @@ -111,6 +111,9 @@ public Output p() { return p; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Lu"; + private Output lu; private Output p; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/MatMul.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/MatMul.java index 72466aaceea..8b227e3910c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/MatMul.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/MatMul.java @@ -124,6 +124,9 @@ public Output asOutput() { return product; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MatMul"; + private Output product; private MatMul(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/MatrixDiag.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/MatrixDiag.java index 97e885f95e8..b187ecc0930 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/MatrixDiag.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/MatrixDiag.java @@ -164,6 +164,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MatrixDiagV2"; + private Output output; private MatrixDiag(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/MatrixDiagPart.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/MatrixDiagPart.java index 81a80bb0d5c..c4dee3f7d76 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/MatrixDiagPart.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/MatrixDiagPart.java @@ -138,6 +138,9 @@ public Output asOutput() { return diagonal; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MatrixDiagPartV2"; + private Output diagonal; private MatrixDiagPart(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/MatrixDiagPartV3.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/MatrixDiagPartV3.java index d4c9adcf553..5803f9251f5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/MatrixDiagPartV3.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/MatrixDiagPartV3.java @@ -215,6 +215,9 @@ public Output asOutput() { return diagonal; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MatrixDiagPartV3"; + private Output diagonal; private MatrixDiagPartV3(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/MatrixDiagV3.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/MatrixDiagV3.java index ef16e3195da..10b57ecc19a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/MatrixDiagV3.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/MatrixDiagV3.java @@ -239,6 +239,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MatrixDiagV3"; + private Output output; private MatrixDiagV3(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/MatrixLogarithm.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/MatrixLogarithm.java index ba6adbaf0aa..71d3a2c9575 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/MatrixLogarithm.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/MatrixLogarithm.java @@ -81,6 +81,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MatrixLogarithm"; + private Output output; private MatrixLogarithm(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/MatrixSetDiag.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/MatrixSetDiag.java index fe7c7b42d35..80367a3670b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/MatrixSetDiag.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/MatrixSetDiag.java @@ -219,6 +219,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MatrixSetDiagV3"; + private Output output; private MatrixSetDiag(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/MatrixSolveLs.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/MatrixSolveLs.java index 3ed8ddf95d3..633145ce24e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/MatrixSolveLs.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/MatrixSolveLs.java @@ -140,6 +140,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MatrixSolveLs"; + private Output output; private MatrixSolveLs(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Qr.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Qr.java index e35661a5ae4..cf58f41507f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Qr.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Qr.java @@ -115,6 +115,9 @@ public Output r() { return r; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Qr"; + private Output q; private Output r; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/QuantizedMatMul.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/QuantizedMatMul.java index 749ba329ea1..445d27e1591 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/QuantizedMatMul.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/QuantizedMatMul.java @@ -145,6 +145,9 @@ public Output maxOut() { return maxOut; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizedMatMul"; + private Output out; private Output minOut; private Output maxOut; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/QuantizedMatMulWithBias.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/QuantizedMatMulWithBias.java index 48ac255e7a5..30800fc499a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/QuantizedMatMulWithBias.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/QuantizedMatMulWithBias.java @@ -165,6 +165,9 @@ public Output maxOut() { return maxOut; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizedMatMulWithBias"; + private Output out; private Output minOut; private Output maxOut; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/QuantizedMatMulWithBiasAndRelu.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/QuantizedMatMulWithBiasAndRelu.java index 6958b14a7f3..6e584b6b82f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/QuantizedMatMulWithBiasAndRelu.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/QuantizedMatMulWithBiasAndRelu.java @@ -166,6 +166,9 @@ public Output maxOut() { return maxOut; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizedMatMulWithBiasAndRelu"; + private Output out; private Output minOut; private Output maxOut; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/QuantizedMatMulWithBiasAndReluAndRequantize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/QuantizedMatMulWithBiasAndReluAndRequantize.java index 17d2b2a25d0..c6b38ac66af 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/QuantizedMatMulWithBiasAndReluAndRequantize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/QuantizedMatMulWithBiasAndReluAndRequantize.java @@ -171,6 +171,9 @@ public Output maxOut() { return maxOut; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizedMatMulWithBiasAndReluAndRequantize"; + private Output out; private Output minOut; private Output maxOut; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/SelfAdjointEig.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/SelfAdjointEig.java index d0d3e8f4f5f..60bbafe6e70 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/SelfAdjointEig.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/SelfAdjointEig.java @@ -112,6 +112,9 @@ public Output v() { return v; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SelfAdjointEigV2"; + private Output e; private Output v; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Solve.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Solve.java index 087b8ef7991..62f1beb11c8 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Solve.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Solve.java @@ -107,6 +107,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MatrixSolve"; + private Output output; private Solve(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Sqrtm.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Sqrtm.java index 86d747a81a5..35c3b88605c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Sqrtm.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Sqrtm.java @@ -82,6 +82,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MatrixSquareRoot"; + private Output output; private Sqrtm(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Svd.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Svd.java index df0772367fd..4ff72f0e139 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Svd.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Svd.java @@ -149,6 +149,9 @@ public Output v() { return v; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Svd"; + private Output s; private Output u; private Output v; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/TensorDiag.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/TensorDiag.java index 40bf987f815..126a8c5cde7 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/TensorDiag.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/TensorDiag.java @@ -79,6 +79,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Diag"; + private Output output; private TensorDiag(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/TensorDiagPart.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/TensorDiagPart.java index c14b82af064..e999ca96a4b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/TensorDiagPart.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/TensorDiagPart.java @@ -81,6 +81,9 @@ public Output asOutput() { return diagonal; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DiagPart"; + private Output diagonal; private TensorDiagPart(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Transpose.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Transpose.java index 5ce582563ea..1df98fabe64 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Transpose.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/Transpose.java @@ -67,6 +67,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Transpose"; + private Output y; private Transpose(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/TriangularSolve.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/TriangularSolve.java index ba5ce4f65c2..da86d99b6c6 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/TriangularSolve.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/TriangularSolve.java @@ -176,6 +176,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MatrixTriangularSolve"; + private Output output; private TriangularSolve(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/TridiagonalMatMul.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/TridiagonalMatMul.java index 7fb782724f9..2ff1c18fc60 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/TridiagonalMatMul.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/TridiagonalMatMul.java @@ -73,6 +73,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TridiagonalMatMul"; + private Output output; private TridiagonalMatMul(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/TridiagonalSolve.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/TridiagonalSolve.java index 0ad614e24d2..0f581811162 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/TridiagonalSolve.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/TridiagonalSolve.java @@ -110,6 +110,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TridiagonalSolve"; + private Output output; private TridiagonalSolve(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/CSRSparseMatrixComponents.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/CSRSparseMatrixComponents.java index 01e7c156baf..332382cec08 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/CSRSparseMatrixComponents.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/CSRSparseMatrixComponents.java @@ -79,6 +79,9 @@ public Output values() { return values; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "CSRSparseMatrixComponents"; + private Output rowPtrs; private Output colInds; private Output values; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/CSRSparseMatrixToDense.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/CSRSparseMatrixToDense.java index f221c56fce1..0d8ceba40d3 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/CSRSparseMatrixToDense.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/CSRSparseMatrixToDense.java @@ -64,6 +64,9 @@ public Output asOutput() { return denseOutput; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "CSRSparseMatrixToDense"; + private Output denseOutput; private CSRSparseMatrixToDense(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/CSRSparseMatrixToSparseTensor.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/CSRSparseMatrixToSparseTensor.java index c9796bf7573..0b5a2d41df8 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/CSRSparseMatrixToSparseTensor.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/CSRSparseMatrixToSparseTensor.java @@ -74,6 +74,9 @@ public Output denseShape() { return denseShape; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "CSRSparseMatrixToSparseTensor"; + private Output indices; private Output values; private Output denseShape; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/DenseToCSRSparseMatrix.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/DenseToCSRSparseMatrix.java index 93414b7e7f6..0033c9a9760 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/DenseToCSRSparseMatrix.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/DenseToCSRSparseMatrix.java @@ -63,6 +63,9 @@ public Output asOutput() { return (Output) sparseOutput; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DenseToCSRSparseMatrix"; + private Output sparseOutput; private DenseToCSRSparseMatrix(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixAdd.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixAdd.java index 2e7b03b0fb6..d8e676743a1 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixAdd.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixAdd.java @@ -69,6 +69,9 @@ public Output asOutput() { return (Output) c; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseMatrixAdd"; + private Output c; private SparseMatrixAdd(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixMatMul.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixMatMul.java index 999afbb7a1a..2ee48d29d79 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixMatMul.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixMatMul.java @@ -217,6 +217,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseMatrixMatMul"; + private Output output; private SparseMatrixMatMul(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixMul.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixMul.java index cc6f936e661..ad1571580f5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixMul.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixMul.java @@ -71,6 +71,9 @@ public Output asOutput() { return (Output) output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseMatrixMul"; + private Output output; private SparseMatrixMul(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixNNZ.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixNNZ.java index 613228d6272..e730d181699 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixNNZ.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixNNZ.java @@ -59,6 +59,9 @@ public Output asOutput() { return nnz; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseMatrixNNZ"; + private Output nnz; private SparseMatrixNNZ(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixOrderingAMD.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixOrderingAMD.java index 9acf649aa94..6967ebec973 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixOrderingAMD.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixOrderingAMD.java @@ -107,6 +107,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseMatrixOrderingAMD"; + private Output output; private SparseMatrixOrderingAMD(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixSoftmax.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixSoftmax.java index 2d62bbb6899..01cec0f84da 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixSoftmax.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixSoftmax.java @@ -70,6 +70,9 @@ public Output asOutput() { return (Output) softmax; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseMatrixSoftmax"; + private Output softmax; private SparseMatrixSoftmax(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixSoftmaxGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixSoftmaxGrad.java index 0a698bb7929..8ac96d72177 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixSoftmaxGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixSoftmaxGrad.java @@ -66,6 +66,9 @@ public Output asOutput() { return (Output) gradient; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseMatrixSoftmaxGrad"; + private Output gradient; private SparseMatrixSoftmaxGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixSparseCholesky.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixSparseCholesky.java index 603e4e30c9f..3f52d64f600 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixSparseCholesky.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixSparseCholesky.java @@ -137,6 +137,9 @@ public Output asOutput() { return (Output) output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseMatrixSparseCholesky"; + private Output output; private SparseMatrixSparseCholesky(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixSparseMatMul.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixSparseMatMul.java index 2e8bafb9b0b..8e7c545df87 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixSparseMatMul.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixSparseMatMul.java @@ -229,6 +229,9 @@ public Output asOutput() { return (Output) c; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseMatrixSparseMatMul"; + private Output c; private SparseMatrixSparseMatMul(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixTranspose.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixTranspose.java index 6801b45dd6d..90e5ba4294f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixTranspose.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixTranspose.java @@ -100,6 +100,9 @@ public Output asOutput() { return (Output) output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseMatrixTranspose"; + private Output output; private SparseMatrixTranspose(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixZeros.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixZeros.java index eab0d59e8c2..3c5bef9daed 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixZeros.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseMatrixZeros.java @@ -64,6 +64,9 @@ public Output asOutput() { return (Output) sparseMatrix; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseMatrixZeros"; + private Output sparseMatrix; private SparseMatrixZeros(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseTensorToCSRSparseMatrix.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseTensorToCSRSparseMatrix.java index a14a09c9433..afda1e8b5f1 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseTensorToCSRSparseMatrix.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/linalg/sparse/SparseTensorToCSRSparseMatrix.java @@ -65,6 +65,9 @@ public Output asOutput() { return (Output) sparseMatrix; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseTensorToCSRSparseMatrix"; + private Output sparseMatrix; private SparseTensorToCSRSparseMatrix(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Abs.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Abs.java index a04d249dc74..7aa760a535b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Abs.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Abs.java @@ -66,6 +66,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Abs"; + private Output y; private Abs(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/AccumulateN.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/AccumulateN.java index 733a7546f57..dc15d9f9d81 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/AccumulateN.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/AccumulateN.java @@ -74,6 +74,9 @@ public Output asOutput() { return sum; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "AccumulateNV2"; + private Output sum; private AccumulateN(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Acos.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Acos.java index 200fa10daad..43ba8e54334 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Acos.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Acos.java @@ -61,6 +61,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Acos"; + private Output y; private Acos(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Acosh.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Acosh.java index e26f402b14e..0d1aaf95237 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Acosh.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Acosh.java @@ -69,6 +69,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Acosh"; + private Output y; private Acosh(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Add.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Add.java index 2c3c69e735f..86d7c82ae38 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Add.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Add.java @@ -66,6 +66,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Add"; + private Output z; private Add(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/AddN.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/AddN.java index aa6abe36421..16a5e22ce16 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/AddN.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/AddN.java @@ -70,6 +70,9 @@ public Output asOutput() { return sum; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "AddN"; + private Output sum; private AddN(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Angle.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Angle.java index 08c203e2625..ce996785568 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Angle.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Angle.java @@ -94,6 +94,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Angle"; + private Output output; private Angle(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/ApproximateEqual.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/ApproximateEqual.java index 83762aa8117..245c42f269d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/ApproximateEqual.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/ApproximateEqual.java @@ -96,6 +96,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ApproximateEqual"; + private Output z; private ApproximateEqual(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/ArgMax.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/ArgMax.java index 9670f62b1a5..b45c1268cb2 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/ArgMax.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/ArgMax.java @@ -98,6 +98,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ArgMax"; + private Output output; private ArgMax(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/ArgMin.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/ArgMin.java index 00e84ed2dc3..5a49adecd22 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/ArgMin.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/ArgMin.java @@ -98,6 +98,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ArgMin"; + private Output output; private ArgMin(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Asin.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Asin.java index 6dd53582f63..941515b013e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Asin.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Asin.java @@ -77,6 +77,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Asin"; + private Output y; private Asin(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Asinh.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Asinh.java index 93131b0b597..c2451727573 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Asinh.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Asinh.java @@ -71,6 +71,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Asinh"; + private Output y; private Asinh(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Atan.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Atan.java index ae1c0de475b..a3574d549bc 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Atan.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Atan.java @@ -77,6 +77,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Atan"; + private Output y; private Atan(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Atan2.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Atan2.java index d77090da6a1..d49bc324cb3 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Atan2.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Atan2.java @@ -70,6 +70,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Atan2"; + private Output z; private Atan2(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Atanh.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Atanh.java index 2d8596be938..6c53c8828c0 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Atanh.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Atanh.java @@ -73,6 +73,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Atanh"; + private Output y; private Atanh(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/BesselI0e.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/BesselI0e.java index b951b555fc9..c68eeadc30c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/BesselI0e.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/BesselI0e.java @@ -67,6 +67,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BesselI0e"; + private Output y; private BesselI0e(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/BesselI1e.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/BesselI1e.java index 9d92b8a4d66..f61e846e2b6 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/BesselI1e.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/BesselI1e.java @@ -67,6 +67,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BesselI1e"; + private Output y; private BesselI1e(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Betainc.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Betainc.java index bf42fa10faf..53ecd2ed396 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Betainc.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Betainc.java @@ -77,6 +77,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Betainc"; + private Output z; private Betainc(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Bincount.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Bincount.java index 30b96bf1b5d..4217584c4fb 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Bincount.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Bincount.java @@ -79,6 +79,9 @@ public Output asOutput() { return bins; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Bincount"; + private Output bins; private Bincount(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Ceil.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Ceil.java index 36bcf7ce417..c97e5b5ae5d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Ceil.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Ceil.java @@ -62,6 +62,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Ceil"; + private Output y; private Ceil(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/CompareAndBitpack.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/CompareAndBitpack.java index a00341d467d..2538cc59248 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/CompareAndBitpack.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/CompareAndBitpack.java @@ -85,6 +85,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "CompareAndBitpack"; + private Output output; private CompareAndBitpack(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/ComplexAbs.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/ComplexAbs.java index f72854aa5ed..317744e519a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/ComplexAbs.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/ComplexAbs.java @@ -83,6 +83,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ComplexAbs"; + private Output y; private ComplexAbs(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Conj.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Conj.java index c633957aeb2..b565fe9d322 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Conj.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Conj.java @@ -75,6 +75,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Conj"; + private Output output; private Conj(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Cos.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Cos.java index 8a61ed1db2a..29f81972b17 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Cos.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Cos.java @@ -72,6 +72,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Cos"; + private Output y; private Cos(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Cosh.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Cosh.java index 20f70fe2f0c..f65e3e952ea 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Cosh.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Cosh.java @@ -71,6 +71,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Cosh"; + private Output y; private Cosh(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Cumprod.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Cumprod.java index faab91b5bd9..52154403d72 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Cumprod.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Cumprod.java @@ -143,6 +143,9 @@ public Output asOutput() { return out; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Cumprod"; + private Output out; private Cumprod(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Cumsum.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Cumsum.java index a1027a8b221..6895cbed39f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Cumsum.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Cumsum.java @@ -143,6 +143,9 @@ public Output asOutput() { return out; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Cumsum"; + private Output out; private Cumsum(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/CumulativeLogsumexp.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/CumulativeLogsumexp.java index 82b702e4def..3c8e6f89870 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/CumulativeLogsumexp.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/CumulativeLogsumexp.java @@ -135,6 +135,9 @@ public Output asOutput() { return out; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "CumulativeLogsumexp"; + private Output out; private CumulativeLogsumexp(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Digamma.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Digamma.java index c217acd7f51..2fd494f637c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Digamma.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Digamma.java @@ -64,6 +64,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Digamma"; + private Output y; private Digamma(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Div.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Div.java index fb34257a1e8..0cd80db04df 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Div.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Div.java @@ -66,6 +66,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Div"; + private Output z; private Div(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/DivNoNan.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/DivNoNan.java index 373dcff32cb..7a1ea66a50d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/DivNoNan.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/DivNoNan.java @@ -67,6 +67,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DivNoNan"; + private Output z; private DivNoNan(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Equal.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Equal.java index 971a44984c6..d67b38e9ca6 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Equal.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Equal.java @@ -109,6 +109,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Equal"; + private Output z; private Equal(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Erf.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Erf.java index 2f8e2f8c302..9f86126bff4 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Erf.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Erf.java @@ -62,6 +62,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Erf"; + private Output y; private Erf(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Erfc.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Erfc.java index a1494ae42a7..b94fecf9ede 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Erfc.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Erfc.java @@ -62,6 +62,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Erfc"; + private Output y; private Erfc(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Exp.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Exp.java index 16e93c8ec2c..cee48319f26 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Exp.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Exp.java @@ -87,6 +87,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Exp"; + private Output y; private Exp(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Expm1.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Expm1.java index 6998e3d3fdb..9d76f16b774 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Expm1.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Expm1.java @@ -76,6 +76,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Expm1"; + private Output y; private Expm1(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Fact.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Fact.java index 7c8f8af6c95..31d78966166 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Fact.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Fact.java @@ -57,6 +57,9 @@ public Output asOutput() { return fact; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Fact"; + private Output fact; private Fact(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Floor.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Floor.java index fb1955c2e91..ac8d7a8ffba 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Floor.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Floor.java @@ -62,6 +62,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Floor"; + private Output y; private Floor(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/FloorDiv.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/FloorDiv.java index b02797cde81..366b88bc6d9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/FloorDiv.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/FloorDiv.java @@ -66,6 +66,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "FloorDiv"; + private Output z; private FloorDiv(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/FloorMod.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/FloorMod.java index 79881c593bc..715628b57a3 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/FloorMod.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/FloorMod.java @@ -70,6 +70,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "FloorMod"; + private Output z; private FloorMod(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Greater.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Greater.java index a2aef106674..e8ef3811fd1 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Greater.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Greater.java @@ -78,6 +78,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Greater"; + private Output z; private Greater(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/GreaterEqual.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/GreaterEqual.java index 6097961d214..11a83743031 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/GreaterEqual.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/GreaterEqual.java @@ -78,6 +78,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "GreaterEqual"; + private Output z; private GreaterEqual(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Igamma.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Igamma.java index e6492c17a8e..a4687ef3ab1 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Igamma.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Igamma.java @@ -77,6 +77,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Igamma"; + private Output z; private Igamma(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/IgammaGradA.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/IgammaGradA.java index 90e5b649dc5..e57b8d886e1 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/IgammaGradA.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/IgammaGradA.java @@ -63,6 +63,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "IgammaGradA"; + private Output z; private IgammaGradA(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Igammac.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Igammac.java index 03c9ab28002..1e2cb0cf0f7 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Igammac.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Igammac.java @@ -77,6 +77,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Igammac"; + private Output z; private Igammac(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Imag.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Imag.java index dbd5b5b8406..48a8a7107a3 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Imag.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Imag.java @@ -90,6 +90,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Imag"; + private Output output; private Imag(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/InvertPermutation.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/InvertPermutation.java index 28d0a80d4ad..de9e9c46932 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/InvertPermutation.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/InvertPermutation.java @@ -79,6 +79,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "InvertPermutation"; + private Output y; private InvertPermutation(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/IsFinite.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/IsFinite.java index b8136095909..ffe9bb99f10 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/IsFinite.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/IsFinite.java @@ -72,6 +72,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "IsFinite"; + private Output y; private IsFinite(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/IsInf.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/IsInf.java index 429e8aee411..3d36e9fbfe9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/IsInf.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/IsInf.java @@ -72,6 +72,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "IsInf"; + private Output y; private IsInf(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/IsNan.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/IsNan.java index 1c480c08336..b58205a005c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/IsNan.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/IsNan.java @@ -72,6 +72,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "IsNan"; + private Output y; private IsNan(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Less.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Less.java index 106040ab8b1..3d796296f01 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Less.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Less.java @@ -78,6 +78,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Less"; + private Output z; private Less(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/LessEqual.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/LessEqual.java index 094bd19e36c..618cd7a9866 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/LessEqual.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/LessEqual.java @@ -78,6 +78,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LessEqual"; + private Output z; private LessEqual(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Lgamma.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Lgamma.java index 42a5baad397..9bc18b1b3b8 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Lgamma.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Lgamma.java @@ -72,6 +72,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Lgamma"; + private Output y; private Lgamma(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Log.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Log.java index 1ee4bc3c6e2..9db418d1002 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Log.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Log.java @@ -70,6 +70,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Log"; + private Output y; private Log(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Log1p.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Log1p.java index 407cfa649ad..3cc2656ea9b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Log1p.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Log1p.java @@ -70,6 +70,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Log1p"; + private Output y; private Log1p(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/LogicalAnd.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/LogicalAnd.java index 410cd28dc9d..89bb2837f46 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/LogicalAnd.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/LogicalAnd.java @@ -64,6 +64,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LogicalAnd"; + private Output z; private LogicalAnd(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/LogicalNot.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/LogicalNot.java index 643af8caa45..f59c85fd320 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/LogicalNot.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/LogicalNot.java @@ -60,6 +60,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LogicalNot"; + private Output y; private LogicalNot(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/LogicalOr.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/LogicalOr.java index a9f33397ae1..604e3ea18f5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/LogicalOr.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/LogicalOr.java @@ -64,6 +64,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LogicalOr"; + private Output z; private LogicalOr(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Maximum.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Maximum.java index 998e5fbc3bf..9f72150c5d3 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Maximum.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Maximum.java @@ -67,6 +67,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Maximum"; + private Output z; private Maximum(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Mean.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Mean.java index 301ff6b1c31..7859b7ce10f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Mean.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Mean.java @@ -105,6 +105,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Mean"; + private Output output; private Mean(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Minimum.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Minimum.java index 33f6fe5d7af..e11b6e484fc 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Minimum.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Minimum.java @@ -67,6 +67,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Minimum"; + private Output z; private Minimum(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Mod.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Mod.java index 8cd9b2cd30d..7ba98b81b39 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Mod.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Mod.java @@ -70,6 +70,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Mod"; + private Output z; private Mod(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Mul.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Mul.java index d4cf53f8540..20d5f471ba8 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Mul.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Mul.java @@ -66,6 +66,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Mul"; + private Output z; private Mul(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/MulNoNan.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/MulNoNan.java index 157b5d1ead0..312a3025870 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/MulNoNan.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/MulNoNan.java @@ -66,6 +66,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MulNoNan"; + private Output z; private MulNoNan(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Ndtri.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Ndtri.java index 0330942d8b3..55dcf0c434d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Ndtri.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Ndtri.java @@ -60,6 +60,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Ndtri"; + private Output y; private Ndtri(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Neg.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Neg.java index 14a1544cb82..53079692e32 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Neg.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Neg.java @@ -63,6 +63,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Neg"; + private Output y; private Neg(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/NextAfter.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/NextAfter.java index 4ac1cde3380..8fa53306eed 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/NextAfter.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/NextAfter.java @@ -72,6 +72,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "NextAfter"; + private Output output; private NextAfter(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/NotEqual.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/NotEqual.java index 647b596f6be..977688031c5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/NotEqual.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/NotEqual.java @@ -99,6 +99,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "NotEqual"; + private Output z; private NotEqual(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Polygamma.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Polygamma.java index 415b5b51837..d0021efc2ac 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Polygamma.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Polygamma.java @@ -71,6 +71,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Polygamma"; + private Output z; private Polygamma(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/PopulationCount.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/PopulationCount.java index 21b22d86fa5..bc721897426 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/PopulationCount.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/PopulationCount.java @@ -68,6 +68,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "PopulationCount"; + private Output y; private PopulationCount(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Pow.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Pow.java index cd22d351e6e..27f26e431fe 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Pow.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Pow.java @@ -72,6 +72,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Pow"; + private Output z; private Pow(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/QuantizedAdd.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/QuantizedAdd.java index fd2f5890d47..ccd6d2e5f98 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/QuantizedAdd.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/QuantizedAdd.java @@ -87,6 +87,9 @@ public Output maxZ() { return maxZ; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizedAdd"; + private Output z; private Output minZ; private Output maxZ; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/QuantizedMul.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/QuantizedMul.java index a629145fa62..e16dc423a63 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/QuantizedMul.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/QuantizedMul.java @@ -87,6 +87,9 @@ public Output maxZ() { return maxZ; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizedMul"; + private Output z; private Output minZ; private Output maxZ; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Real.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Real.java index 0b619946e0b..e113597afd8 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Real.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Real.java @@ -90,6 +90,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Real"; + private Output output; private Real(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/RealDiv.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/RealDiv.java index 32dcc8988fc..ec322c696db 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/RealDiv.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/RealDiv.java @@ -68,6 +68,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RealDiv"; + private Output z; private RealDiv(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Reciprocal.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Reciprocal.java index b39118351c5..a0b53da3b7c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Reciprocal.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Reciprocal.java @@ -63,6 +63,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Reciprocal"; + private Output y; private Reciprocal(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/ReciprocalGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/ReciprocalGrad.java index 9d9a1f03723..dee41220ba9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/ReciprocalGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/ReciprocalGrad.java @@ -65,6 +65,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ReciprocalGrad"; + private Output z; private ReciprocalGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/RequantizationRangePerChannel.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/RequantizationRangePerChannel.java index 659dae182cf..feda79c70b2 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/RequantizationRangePerChannel.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/RequantizationRangePerChannel.java @@ -69,6 +69,9 @@ public Output outputMax() { return outputMax; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RequantizationRangePerChannel"; + private Output outputMin; private Output outputMax; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/RequantizePerChannel.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/RequantizePerChannel.java index 793429b9779..53a6201151e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/RequantizePerChannel.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/RequantizePerChannel.java @@ -82,6 +82,9 @@ public Output outputMax() { return outputMax; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RequantizePerChannel"; + private Output output; private Output outputMin; private Output outputMax; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Rint.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Rint.java index 576508d7d30..b7b152248a8 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Rint.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Rint.java @@ -72,6 +72,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Rint"; + private Output y; private Rint(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Round.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Round.java index dbd546baf23..7f892d28ed0 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Round.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Round.java @@ -64,6 +64,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Round"; + private Output y; private Round(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Rsqrt.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Rsqrt.java index 43a6886684d..de04c3f1204 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Rsqrt.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Rsqrt.java @@ -63,6 +63,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Rsqrt"; + private Output y; private Rsqrt(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/RsqrtGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/RsqrtGrad.java index df8cdcfb392..ee0eec068f3 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/RsqrtGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/RsqrtGrad.java @@ -65,6 +65,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RsqrtGrad"; + private Output z; private RsqrtGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SegmentMax.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SegmentMax.java index 99c1bda676b..fdd40054420 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SegmentMax.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SegmentMax.java @@ -90,6 +90,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SegmentMax"; + private Output output; private SegmentMax(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SegmentMean.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SegmentMean.java index 263a550e74c..2fe16ce7e12 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SegmentMean.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SegmentMean.java @@ -91,6 +91,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SegmentMean"; + private Output output; private SegmentMean(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SegmentMin.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SegmentMin.java index 38a0e75784c..b7ab590e976 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SegmentMin.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SegmentMin.java @@ -90,6 +90,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SegmentMin"; + private Output output; private SegmentMin(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SegmentProd.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SegmentProd.java index 36592e64f85..0f1179072e5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SegmentProd.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SegmentProd.java @@ -90,6 +90,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SegmentProd"; + private Output output; private SegmentProd(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SegmentSum.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SegmentSum.java index 54287c045b2..fceec1bfe43 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SegmentSum.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SegmentSum.java @@ -90,6 +90,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SegmentSum"; + private Output output; private SegmentSum(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Sigmoid.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Sigmoid.java index a12d7061324..a54e4ae51ea 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Sigmoid.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Sigmoid.java @@ -63,6 +63,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Sigmoid"; + private Output y; private Sigmoid(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SigmoidGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SigmoidGrad.java index c53a0ae603f..125397bfd65 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SigmoidGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SigmoidGrad.java @@ -65,6 +65,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SigmoidGrad"; + private Output z; private SigmoidGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Sign.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Sign.java index 6591ed77c71..c9d8609872e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Sign.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Sign.java @@ -69,6 +69,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Sign"; + private Output y; private Sign(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Sin.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Sin.java index 15ef4b31dd2..a17ea9d288e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Sin.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Sin.java @@ -71,6 +71,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Sin"; + private Output y; private Sin(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Sinh.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Sinh.java index 8785916850b..613d983eef5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Sinh.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Sinh.java @@ -71,6 +71,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Sinh"; + private Output y; private Sinh(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SobolSample.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SobolSample.java index d66475e2071..131cb7ed792 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SobolSample.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SobolSample.java @@ -92,6 +92,9 @@ public Output asOutput() { return samples; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SobolSample"; + private Output samples; private SobolSample(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Softplus.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Softplus.java index a4f3a22ebcd..79adcf30d76 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Softplus.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Softplus.java @@ -62,6 +62,9 @@ public Output asOutput() { return activations; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Softplus"; + private Output activations; private Softplus(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SoftplusGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SoftplusGrad.java index f885abcbdeb..90174757bc3 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SoftplusGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SoftplusGrad.java @@ -64,6 +64,9 @@ public Output asOutput() { return backprops; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SoftplusGrad"; + private Output backprops; private SoftplusGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Sqrt.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Sqrt.java index 315173746b2..de62810d7ce 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Sqrt.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Sqrt.java @@ -63,6 +63,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Sqrt"; + private Output y; private Sqrt(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SqrtGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SqrtGrad.java index 5ba9497bbdd..2c4b301a60b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SqrtGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SqrtGrad.java @@ -65,6 +65,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SqrtGrad"; + private Output z; private SqrtGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Square.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Square.java index 36fdb6bda9c..01ccd098cc8 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Square.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Square.java @@ -63,6 +63,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Square"; + private Output y; private Square(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SquaredDifference.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SquaredDifference.java index c860747add8..bed2fe9bb77 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SquaredDifference.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/SquaredDifference.java @@ -66,6 +66,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SquaredDifference"; + private Output z; private SquaredDifference(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Sub.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Sub.java index 1489a80202d..3578a962622 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Sub.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Sub.java @@ -66,6 +66,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Sub"; + private Output z; private Sub(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Tan.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Tan.java index 1b1ddd50ba5..f09d909e8cb 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Tan.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Tan.java @@ -72,6 +72,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Tan"; + private Output y; private Tan(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Tanh.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Tanh.java index f2611083984..04d9d1e092c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Tanh.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Tanh.java @@ -71,6 +71,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Tanh"; + private Output y; private Tanh(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/TanhGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/TanhGrad.java index 3ebc6ab598d..273c5a1f76d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/TanhGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/TanhGrad.java @@ -65,6 +65,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TanhGrad"; + private Output z; private TanhGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/TruncateDiv.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/TruncateDiv.java index a0a1f6697d1..5cd4b52fbed 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/TruncateDiv.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/TruncateDiv.java @@ -71,6 +71,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TruncateDiv"; + private Output z; private TruncateDiv(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/TruncateMod.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/TruncateMod.java index cfa0461f460..48c92574eb4 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/TruncateMod.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/TruncateMod.java @@ -70,6 +70,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TruncateMod"; + private Output z; private TruncateMod(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/UnsortedSegmentMax.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/UnsortedSegmentMax.java index 4c509457c3e..582113e3320 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/UnsortedSegmentMax.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/UnsortedSegmentMax.java @@ -100,6 +100,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "UnsortedSegmentMax"; + private Output output; private UnsortedSegmentMax(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/UnsortedSegmentMin.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/UnsortedSegmentMin.java index bd12cae09b9..397ac5706a0 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/UnsortedSegmentMin.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/UnsortedSegmentMin.java @@ -94,6 +94,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "UnsortedSegmentMin"; + private Output output; private UnsortedSegmentMin(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/UnsortedSegmentProd.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/UnsortedSegmentProd.java index 86f2b588cc0..c65fc484e4c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/UnsortedSegmentProd.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/UnsortedSegmentProd.java @@ -93,6 +93,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "UnsortedSegmentProd"; + private Output output; private UnsortedSegmentProd(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/UnsortedSegmentSum.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/UnsortedSegmentSum.java index 95868ce64d0..aaaf5b7bd23 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/UnsortedSegmentSum.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/UnsortedSegmentSum.java @@ -96,6 +96,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "UnsortedSegmentSum"; + private Output output; private UnsortedSegmentSum(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Xdivy.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Xdivy.java index 5372f4b5c11..1a5e57836fc 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Xdivy.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Xdivy.java @@ -63,6 +63,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Xdivy"; + private Output z; private Xdivy(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Xlog1py.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Xlog1py.java index f0586582e8c..a15f29dab04 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Xlog1py.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Xlog1py.java @@ -63,6 +63,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Xlog1py"; + private Output z; private Xlog1py(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Xlogy.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Xlogy.java index 6b303403408..a140c8aa6fe 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Xlogy.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Xlogy.java @@ -63,6 +63,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Xlogy"; + private Output z; private Xlogy(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Zeta.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Zeta.java index 431921f8e2b..0f3cee188fc 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Zeta.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/Zeta.java @@ -68,6 +68,9 @@ public Output asOutput() { return z; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Zeta"; + private Output z; private Zeta(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/erfinv.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/erfinv.java index 385bd855018..de2a4482f65 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/erfinv.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/erfinv.java @@ -60,6 +60,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Erfinv"; + private Output y; private erfinv(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/Dawsn.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/Dawsn.java index 0855403368a..74388434149 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/Dawsn.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/Dawsn.java @@ -59,6 +59,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Dawsn"; + private Output y; private Dawsn(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/Expint.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/Expint.java index 1d2aa725fce..b36c55fdeb6 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/Expint.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/Expint.java @@ -59,6 +59,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Expint"; + private Output y; private Expint(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/FresnelCos.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/FresnelCos.java index 732cfb1ac20..bb9a9f47e78 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/FresnelCos.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/FresnelCos.java @@ -59,6 +59,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "FresnelCos"; + private Output y; private FresnelCos(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/FresnelSin.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/FresnelSin.java index cab6e46cba8..36681c87678 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/FresnelSin.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/FresnelSin.java @@ -59,6 +59,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "FresnelSin"; + private Output y; private FresnelSin(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/Spence.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/Spence.java index c313fb84aee..ed613a28b1a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/Spence.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/Spence.java @@ -59,6 +59,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Spence"; + private Output y; private Spence(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/Dequantize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/Dequantize.java index f759acb0a51..760dd9fe913 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/Dequantize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/Dequantize.java @@ -207,6 +207,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Dequantize"; + private Output output; private Dequantize(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/FakeQuantWithMinMaxArgs.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/FakeQuantWithMinMaxArgs.java index 16ea096ef9d..1d79edcb24e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/FakeQuantWithMinMaxArgs.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/FakeQuantWithMinMaxArgs.java @@ -167,6 +167,9 @@ public Output asOutput() { return outputs; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "FakeQuantWithMinMaxArgs"; + private Output outputs; private FakeQuantWithMinMaxArgs(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/FakeQuantWithMinMaxArgsGradient.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/FakeQuantWithMinMaxArgsGradient.java index 71da232b5df..62057eaefed 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/FakeQuantWithMinMaxArgsGradient.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/FakeQuantWithMinMaxArgsGradient.java @@ -154,6 +154,9 @@ public Output asOutput() { return backprops; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "FakeQuantWithMinMaxArgsGradient"; + private Output backprops; private FakeQuantWithMinMaxArgsGradient(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/FakeQuantWithMinMaxVars.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/FakeQuantWithMinMaxVars.java index 21113c6a6f3..667c5d60014 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/FakeQuantWithMinMaxVars.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/FakeQuantWithMinMaxVars.java @@ -136,6 +136,9 @@ public Output asOutput() { return outputs; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "FakeQuantWithMinMaxVars"; + private Output outputs; private FakeQuantWithMinMaxVars(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/FakeQuantWithMinMaxVarsGradient.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/FakeQuantWithMinMaxVarsGradient.java index 7b4e10d9c21..e9fcd339a75 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/FakeQuantWithMinMaxVarsGradient.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/FakeQuantWithMinMaxVarsGradient.java @@ -132,6 +132,9 @@ public Output backpropWrtMax() { return backpropWrtMax; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "FakeQuantWithMinMaxVarsGradient"; + private Output backpropsWrtInput; private Output backpropWrtMin; private Output backpropWrtMax; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/FakeQuantWithMinMaxVarsPerChannel.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/FakeQuantWithMinMaxVarsPerChannel.java index 1302ae47b32..f65ed1735de 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/FakeQuantWithMinMaxVarsPerChannel.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/FakeQuantWithMinMaxVarsPerChannel.java @@ -137,6 +137,9 @@ public Output asOutput() { return outputs; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "FakeQuantWithMinMaxVarsPerChannel"; + private Output outputs; private FakeQuantWithMinMaxVarsPerChannel(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/FakeQuantWithMinMaxVarsPerChannelGradient.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/FakeQuantWithMinMaxVarsPerChannelGradient.java index 3e104c42c90..4fba9b56115 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/FakeQuantWithMinMaxVarsPerChannelGradient.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/FakeQuantWithMinMaxVarsPerChannelGradient.java @@ -135,6 +135,9 @@ public Output backpropWrtMax() { return backpropWrtMax; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "FakeQuantWithMinMaxVarsPerChannelGradient"; + private Output backpropsWrtInput; private Output backpropWrtMin; private Output backpropWrtMax; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/Quantize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/Quantize.java index 1b6ed2fd791..37f58cfa512 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/Quantize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/Quantize.java @@ -311,6 +311,9 @@ public Output outputMax() { return outputMax; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizeV2"; + private Output output; private Output outputMin; private Output outputMax; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/QuantizeAndDequantize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/QuantizeAndDequantize.java index d90d91706d9..fd75b330e41 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/QuantizeAndDequantize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/QuantizeAndDequantize.java @@ -163,6 +163,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizeAndDequantizeV3"; + private Output output; private QuantizeAndDequantize(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/QuantizeDownAndShrinkRange.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/QuantizeDownAndShrinkRange.java index 3b77c20f70c..362375b40e2 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/QuantizeDownAndShrinkRange.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/QuantizeDownAndShrinkRange.java @@ -101,6 +101,9 @@ public Output outputMax() { return outputMax; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizeDownAndShrinkRange"; + private Output output; private Output outputMin; private Output outputMax; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/QuantizedConcat.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/QuantizedConcat.java index 46f73857d91..43839d072de 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/QuantizedConcat.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/QuantizedConcat.java @@ -84,6 +84,9 @@ public Output outputMax() { return outputMax; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizedConcat"; + private Output output; private Output outputMin; private Output outputMax; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/QuantizedMatMulWithBiasAndDequantize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/QuantizedMatMulWithBiasAndDequantize.java index 42da8ab044f..baa20635c51 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/QuantizedMatMulWithBiasAndDequantize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/QuantizedMatMulWithBiasAndDequantize.java @@ -151,6 +151,9 @@ public Output asOutput() { return out; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizedMatMulWithBiasAndDequantize"; + private Output out; private QuantizedMatMulWithBiasAndDequantize(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/QuantizedMatMulWithBiasAndRequantize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/QuantizedMatMulWithBiasAndRequantize.java index a3ececf8fb3..950221b1b94 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/QuantizedMatMulWithBiasAndRequantize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/QuantizedMatMulWithBiasAndRequantize.java @@ -157,6 +157,9 @@ public Output maxOut() { return maxOut; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "QuantizedMatMulWithBiasAndRequantize"; + private Output out; private Output minOut; private Output maxOut; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/RequantizationRange.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/RequantizationRange.java index 85eddcd506a..86ab731bb50 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/RequantizationRange.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/RequantizationRange.java @@ -72,6 +72,9 @@ public Output outputMax() { return outputMax; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RequantizationRange"; + private Output outputMin; private Output outputMax; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/Requantize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/Requantize.java index 987dd660095..5df8ca0b622 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/Requantize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/quantization/Requantize.java @@ -90,6 +90,9 @@ public Output outputMax() { return outputMax; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Requantize"; + private Output output; private Output outputMin; private Output outputMax; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedGather.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedGather.java index c200b82da2a..7cc7de6d3db 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedGather.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedGather.java @@ -109,6 +109,9 @@ public Output outputDenseValues() { return outputDenseValues; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RaggedGather"; + private List> outputNestedSplits; private Output outputDenseValues; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedRange.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedRange.java index 8fd3fb45bea..9d8f5594fd9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedRange.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedRange.java @@ -102,6 +102,9 @@ public Output rtDenseValues() { return rtDenseValues; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RaggedRange"; + private Output rtNestedSplits; private Output rtDenseValues; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedTensorFromVariant.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedTensorFromVariant.java index 3b094d70e0b..c9dcfe54bda 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedTensorFromVariant.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedTensorFromVariant.java @@ -110,6 +110,9 @@ public Output outputDenseValues() { return outputDenseValues; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RaggedTensorFromVariant"; + private List> outputNestedSplits; private Output outputDenseValues; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedTensorToSparse.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedTensorToSparse.java index d4443b915ac..7906048788d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedTensorToSparse.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedTensorToSparse.java @@ -79,6 +79,9 @@ public Output sparseDenseShape() { return sparseDenseShape; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RaggedTensorToSparse"; + private Output sparseIndices; private Output sparseValues; private Output sparseDenseShape; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedTensorToTensor.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedTensorToTensor.java index d5b03b37352..e469e6fc020 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedTensorToTensor.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedTensorToTensor.java @@ -133,6 +133,9 @@ public Output asOutput() { return result; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RaggedTensorToTensor"; + private Output result; private RaggedTensorToTensor(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedTensorToVariant.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedTensorToVariant.java index b8c1570a573..6c22a0c4529 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedTensorToVariant.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedTensorToVariant.java @@ -80,6 +80,9 @@ public Output asOutput() { return (Output) encodedRagged; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RaggedTensorToVariant"; + private Output encodedRagged; private RaggedTensorToVariant(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/AllCandidateSampler.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/AllCandidateSampler.java index 1fca347c024..de24d12678f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/AllCandidateSampler.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/AllCandidateSampler.java @@ -152,6 +152,9 @@ public Output sampledExpectedCount() { return sampledExpectedCount; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "AllCandidateSampler"; + private Output sampledCandidates; private Output trueExpectedCount; private Output sampledExpectedCount; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/AnonymousRandomSeedGenerator.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/AnonymousRandomSeedGenerator.java index f0d6d9d77cd..a87026cd7f1 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/AnonymousRandomSeedGenerator.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/AnonymousRandomSeedGenerator.java @@ -60,6 +60,9 @@ public Output deleter() { return deleter; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "AnonymousRandomSeedGenerator"; + private Output handle; private Output deleter; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/DeleteRandomSeedGenerator.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/DeleteRandomSeedGenerator.java index 63e2698983b..9bc34d98ebb 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/DeleteRandomSeedGenerator.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/DeleteRandomSeedGenerator.java @@ -46,6 +46,9 @@ public static DeleteRandomSeedGenerator create(Scope scope, Operand handle, O return new DeleteRandomSeedGenerator(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DeleteRandomSeedGenerator"; + private DeleteRandomSeedGenerator(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/LogUniformCandidateSampler.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/LogUniformCandidateSampler.java index 8295f36e678..761f945de1a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/LogUniformCandidateSampler.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/LogUniformCandidateSampler.java @@ -154,6 +154,9 @@ public Output sampledExpectedCount() { return sampledExpectedCount; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LogUniformCandidateSampler"; + private Output sampledCandidates; private Output trueExpectedCount; private Output sampledExpectedCount; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/Multinomial.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/Multinomial.java index 41fb03d9dc2..58cc57d6c52 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/Multinomial.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/Multinomial.java @@ -142,6 +142,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Multinomial"; + private Output output; private Multinomial(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/NonDeterministicInts.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/NonDeterministicInts.java index b251813e265..246974eaf6f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/NonDeterministicInts.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/NonDeterministicInts.java @@ -79,6 +79,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "NonDeterministicInts"; + private Output output; private NonDeterministicInts(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/ParameterizedTruncatedNormal.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/ParameterizedTruncatedNormal.java index 8ed64aa14a7..4be50b9cde0 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/ParameterizedTruncatedNormal.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/ParameterizedTruncatedNormal.java @@ -133,6 +133,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ParameterizedTruncatedNormal"; + private Output output; private ParameterizedTruncatedNormal(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RandomGamma.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RandomGamma.java index 65ae0fbcbb4..13963e09ecb 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RandomGamma.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RandomGamma.java @@ -130,6 +130,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RandomGamma"; + private Output output; private RandomGamma(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RandomGammaGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RandomGammaGrad.java index ba25e19b24e..ce3798cef3f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RandomGammaGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RandomGammaGrad.java @@ -63,6 +63,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RandomGammaGrad"; + private Output output; private RandomGammaGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RandomPoisson.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RandomPoisson.java index e7bcb3d6855..d4b516343ac 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RandomPoisson.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RandomPoisson.java @@ -156,6 +156,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RandomPoissonV2"; + private Output output; private RandomPoisson(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RandomShuffle.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RandomShuffle.java index 738d92b7f0e..b08c31031ec 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RandomShuffle.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RandomShuffle.java @@ -130,6 +130,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RandomShuffle"; + private Output output; private RandomShuffle(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RandomStandardNormal.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RandomStandardNormal.java index 48e08f355b3..bdd971cc19d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RandomStandardNormal.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RandomStandardNormal.java @@ -125,6 +125,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RandomStandardNormal"; + private Output output; private RandomStandardNormal(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RandomUniform.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RandomUniform.java index 121a58533c1..5e42c2d9691 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RandomUniform.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RandomUniform.java @@ -126,6 +126,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RandomUniform"; + private Output output; private RandomUniform(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RandomUniformInt.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RandomUniformInt.java index b2eafcadf4b..5232135ac1c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RandomUniformInt.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RandomUniformInt.java @@ -132,6 +132,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RandomUniformInt"; + private Output output; private RandomUniformInt(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RecordInput.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RecordInput.java index a8520fc1144..7e3550cb71c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RecordInput.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RecordInput.java @@ -193,6 +193,9 @@ public Output asOutput() { return records; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RecordInput"; + private Output records; private RecordInput(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RngSkip.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RngSkip.java index af9e90226b4..e3411c3b989 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RngSkip.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RngSkip.java @@ -55,6 +55,9 @@ public static RngSkip create(Scope scope, Operand resource, Operand a return new RngSkip(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RngSkip"; + private RngSkip(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatefulRandomBinomial.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatefulRandomBinomial.java index f6b9ed59a68..b3c2dfce166 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatefulRandomBinomial.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatefulRandomBinomial.java @@ -88,6 +88,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StatefulRandomBinomial"; + private Output output; private StatefulRandomBinomial(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatefulStandardNormal.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatefulStandardNormal.java index fd0f1cd16a4..12aabfa2a73 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatefulStandardNormal.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatefulStandardNormal.java @@ -87,6 +87,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StatefulStandardNormalV2"; + private Output output; private StatefulStandardNormal(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatefulTruncatedNormal.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatefulTruncatedNormal.java index 97ad2eb4f00..86904de711f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatefulTruncatedNormal.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatefulTruncatedNormal.java @@ -88,6 +88,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StatefulTruncatedNormal"; + private Output output; private StatefulTruncatedNormal(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatefulUniform.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatefulUniform.java index 8c6d86dd507..dd9a2c10af0 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatefulUniform.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatefulUniform.java @@ -87,6 +87,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StatefulUniform"; + private Output output; private StatefulUniform(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatefulUniformFullInt.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatefulUniformFullInt.java index e234af42486..0bf991bd72e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatefulUniformFullInt.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatefulUniformFullInt.java @@ -71,6 +71,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StatefulUniformFullInt"; + private Output output; private StatefulUniformFullInt(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatefulUniformInt.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatefulUniformInt.java index a5550877593..74337edc44d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatefulUniformInt.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatefulUniformInt.java @@ -78,6 +78,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StatefulUniformInt"; + private Output output; private StatefulUniformInt(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessMultinomial.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessMultinomial.java index d5473395eb3..1dbe0e5a7d0 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessMultinomial.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessMultinomial.java @@ -89,6 +89,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StatelessMultinomial"; + private Output output; private StatelessMultinomial(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessRandomBinomial.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessRandomBinomial.java index 9629ee7620e..03543495413 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessRandomBinomial.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessRandomBinomial.java @@ -95,6 +95,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StatelessRandomBinomial"; + private Output output; private StatelessRandomBinomial(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessRandomGamma.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessRandomGamma.java index 815e4b8c1ad..2c4eef75ff7 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessRandomGamma.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessRandomGamma.java @@ -71,6 +71,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StatelessRandomGammaV2"; + private Output output; private StatelessRandomGamma(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessRandomNormal.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessRandomNormal.java index 028537a3417..07c5298cca0 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessRandomNormal.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessRandomNormal.java @@ -86,6 +86,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StatelessRandomNormal"; + private Output output; private StatelessRandomNormal(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessRandomPoisson.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessRandomPoisson.java index e0c7e949dd3..e71c70e2c1f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessRandomPoisson.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessRandomPoisson.java @@ -74,6 +74,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StatelessRandomPoisson"; + private Output output; private StatelessRandomPoisson(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessRandomUniform.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessRandomUniform.java index 5ea49ccf36d..9eb6edc67e5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessRandomUniform.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessRandomUniform.java @@ -87,6 +87,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StatelessRandomUniform"; + private Output output; private StatelessRandomUniform(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessRandomUniformFullInt.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessRandomUniformFullInt.java index 657153d3098..291cce74d19 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessRandomUniformFullInt.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessRandomUniformFullInt.java @@ -71,6 +71,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StatelessRandomUniformFullInt"; + private Output output; private StatelessRandomUniformFullInt(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessRandomUniformInt.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessRandomUniformInt.java index ebb569ea222..4695718a186 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessRandomUniformInt.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessRandomUniformInt.java @@ -72,6 +72,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StatelessRandomUniformInt"; + private Output output; private StatelessRandomUniformInt(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessTruncatedNormal.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessTruncatedNormal.java index 180e5ffa4b5..3d4761fc4df 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessTruncatedNormal.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessTruncatedNormal.java @@ -88,6 +88,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StatelessTruncatedNormal"; + private Output output; private StatelessTruncatedNormal(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/TruncatedNormal.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/TruncatedNormal.java index b40ddfb6e47..7b88d720386 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/TruncatedNormal.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/TruncatedNormal.java @@ -128,6 +128,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TruncatedNormal"; + private Output output; private TruncatedNormal(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/UniformCandidateSampler.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/UniformCandidateSampler.java index e568dd965ba..9e1f2b1abbd 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/UniformCandidateSampler.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/UniformCandidateSampler.java @@ -154,6 +154,9 @@ public Output sampledExpectedCount() { return sampledExpectedCount; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "UniformCandidateSampler"; + private Output sampledCandidates; private Output trueExpectedCount; private Output sampledExpectedCount; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/BatchFft.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/BatchFft.java index 029a9990900..9eaacf4b26a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/BatchFft.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/BatchFft.java @@ -59,6 +59,9 @@ public Output asOutput() { return (Output) output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BatchFFT"; + private Output output; private BatchFft(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/BatchFft2d.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/BatchFft2d.java index c8357878666..551d7c3f139 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/BatchFft2d.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/BatchFft2d.java @@ -59,6 +59,9 @@ public Output asOutput() { return (Output) output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BatchFFT2D"; + private Output output; private BatchFft2d(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/BatchFft3d.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/BatchFft3d.java index 4ad58e855ae..beeb97ee414 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/BatchFft3d.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/BatchFft3d.java @@ -59,6 +59,9 @@ public Output asOutput() { return (Output) output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BatchFFT3D"; + private Output output; private BatchFft3d(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/BatchIfft.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/BatchIfft.java index 0e098f94b72..262b02d2bc5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/BatchIfft.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/BatchIfft.java @@ -59,6 +59,9 @@ public Output asOutput() { return (Output) output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BatchIFFT"; + private Output output; private BatchIfft(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/BatchIfft2d.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/BatchIfft2d.java index e689c9061d4..2145f201419 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/BatchIfft2d.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/BatchIfft2d.java @@ -59,6 +59,9 @@ public Output asOutput() { return (Output) output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BatchIFFT2D"; + private Output output; private BatchIfft2d(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/BatchIfft3d.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/BatchIfft3d.java index 5f23ed1ca7a..6a271795308 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/BatchIfft3d.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/BatchIfft3d.java @@ -59,6 +59,9 @@ public Output asOutput() { return (Output) output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BatchIFFT3D"; + private Output output; private BatchIfft3d(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Fft.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Fft.java index 802788288a6..632500fad5e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Fft.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Fft.java @@ -70,6 +70,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "FFT"; + private Output output; private Fft(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Fft2d.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Fft2d.java index aaafdb8392f..201b2e3c8af 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Fft2d.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Fft2d.java @@ -70,6 +70,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "FFT2D"; + private Output output; private Fft2d(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Fft3d.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Fft3d.java index a7b29547d0c..7e840fbfb62 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Fft3d.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Fft3d.java @@ -70,6 +70,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "FFT3D"; + private Output output; private Fft3d(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Ifft.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Ifft.java index 6ba09167aa0..c020956beec 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Ifft.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Ifft.java @@ -70,6 +70,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "IFFT"; + private Output output; private Ifft(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Ifft2d.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Ifft2d.java index 086dd9d2338..c8cac107ff4 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Ifft2d.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Ifft2d.java @@ -70,6 +70,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "IFFT2D"; + private Output output; private Ifft2d(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Ifft3d.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Ifft3d.java index d1d114fc2d5..ce7f87a9aa2 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Ifft3d.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Ifft3d.java @@ -70,6 +70,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "IFFT3D"; + private Output output; private Ifft3d(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Irfft.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Irfft.java index 8cbeb80aec5..80d3bb85291 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Irfft.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Irfft.java @@ -103,6 +103,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "IRFFT"; + private Output output; private Irfft(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Irfft2d.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Irfft2d.java index a383b340c45..8acf23a4f23 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Irfft2d.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Irfft2d.java @@ -104,6 +104,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "IRFFT2D"; + private Output output; private Irfft2d(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Irfft3d.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Irfft3d.java index 278bf3eac13..c7b9efabfd2 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Irfft3d.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Irfft3d.java @@ -104,6 +104,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "IRFFT3D"; + private Output output; private Irfft3d(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Rfft.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Rfft.java index 5b3dc8a4199..9764bcbf0f2 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Rfft.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Rfft.java @@ -86,6 +86,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RFFT"; + private Output output; private Rfft(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Rfft2d.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Rfft2d.java index 7f47b98f969..91187dced7b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Rfft2d.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Rfft2d.java @@ -88,6 +88,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RFFT2D"; + private Output output; private Rfft2d(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Rfft3d.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Rfft3d.java index 7fa5f8f23b7..1eb113e9cf1 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Rfft3d.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/signal/Rfft3d.java @@ -88,6 +88,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RFFT3D"; + private Output output; private Rfft3d(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/AddManySparseToTensorsMap.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/AddManySparseToTensorsMap.java index f3b4e77d1f3..ec66167f7e6 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/AddManySparseToTensorsMap.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/AddManySparseToTensorsMap.java @@ -145,6 +145,9 @@ public Output asOutput() { return sparseHandles; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "AddManySparseToTensorsMap"; + private Output sparseHandles; private AddManySparseToTensorsMap(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/AddSparseToTensorsMap.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/AddSparseToTensorsMap.java index 0cc79427ce1..153e326aa9d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/AddSparseToTensorsMap.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/AddSparseToTensorsMap.java @@ -136,6 +136,9 @@ public Output asOutput() { return sparseHandle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "AddSparseToTensorsMap"; + private Output sparseHandle; private AddSparseToTensorsMap(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/DenseToDenseSetOperation.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/DenseToDenseSetOperation.java index 7308a8a8ecb..15e62be4fa8 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/DenseToDenseSetOperation.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/DenseToDenseSetOperation.java @@ -122,6 +122,9 @@ public Output resultShape() { return resultShape; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DenseToDenseSetOperation"; + private Output resultIndices; private Output resultValues; private Output resultShape; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/DenseToSparseSetOperation.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/DenseToSparseSetOperation.java index 85a490c25a0..107f32524ea 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/DenseToSparseSetOperation.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/DenseToSparseSetOperation.java @@ -137,6 +137,9 @@ public Output resultShape() { return resultShape; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DenseToSparseSetOperation"; + private Output resultIndices; private Output resultValues; private Output resultShape; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/DeserializeSparse.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/DeserializeSparse.java index a4fb2ee2e39..a1a6bb2fa49 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/DeserializeSparse.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/DeserializeSparse.java @@ -115,6 +115,9 @@ public Output sparseShape() { return sparseShape; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DeserializeSparse"; + private Output sparseIndices; private Output sparseValues; private Output sparseShape; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseAccumulatorApplyGradient.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseAccumulatorApplyGradient.java index 15751d4ca97..3f36812ea57 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseAccumulatorApplyGradient.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseAccumulatorApplyGradient.java @@ -66,6 +66,9 @@ public static SparseAccumulatorApplyGradient create(Scope scop return new SparseAccumulatorApplyGradient(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseAccumulatorApplyGradient"; + private SparseAccumulatorApplyGradient(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseAccumulatorTakeGradient.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseAccumulatorTakeGradient.java index d072e331bbf..87cbd112e57 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseAccumulatorTakeGradient.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseAccumulatorTakeGradient.java @@ -87,6 +87,9 @@ public Output shape() { return shape; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseAccumulatorTakeGradient"; + private Output indices; private Output values; private Output shape; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseAdd.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseAdd.java index 1bab6a714a0..bc8beb287bb 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseAdd.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseAdd.java @@ -97,6 +97,9 @@ public Output sumShape() { return sumShape; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseAdd"; + private Output sumIndices; private Output sumValues; private Output sumShape; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseAddGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseAddGrad.java index 1709c008119..c3fdf2952a9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseAddGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseAddGrad.java @@ -80,6 +80,9 @@ public Output bValGrad() { return bValGrad; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseAddGrad"; + private Output aValGrad; private Output bValGrad; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseConcat.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseConcat.java index 1ee35437c40..c6866997e30 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseConcat.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseConcat.java @@ -122,6 +122,9 @@ public Output outputShape() { return outputShape; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseConcat"; + private Output outputIndices; private Output outputValues; private Output outputShape; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseConditionalAccumulator.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseConditionalAccumulator.java index 7c9eea707df..b38fc0a6c46 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseConditionalAccumulator.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseConditionalAccumulator.java @@ -148,6 +148,9 @@ public Output asOutput() { return handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseConditionalAccumulator"; + private Output handle; private SparseConditionalAccumulator(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseCross.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseCross.java index 72d7107e2d5..2cc80dcd83d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseCross.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseCross.java @@ -131,6 +131,9 @@ public Output outputShape() { return outputShape; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseCross"; + private Output outputIndices; private Output outputValues; private Output outputShape; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseDenseCwiseAdd.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseDenseCwiseAdd.java index aace49ffa77..40c5fc1446b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseDenseCwiseAdd.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseDenseCwiseAdd.java @@ -79,6 +79,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseDenseCwiseAdd"; + private Output output; private SparseDenseCwiseAdd(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseDenseCwiseDiv.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseDenseCwiseDiv.java index 78e4bcfe8b4..1d88f78e482 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseDenseCwiseDiv.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseDenseCwiseDiv.java @@ -73,6 +73,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseDenseCwiseDiv"; + private Output output; private SparseDenseCwiseDiv(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseDenseCwiseMul.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseDenseCwiseMul.java index 78b37a2306a..b0144601eb3 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseDenseCwiseMul.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseDenseCwiseMul.java @@ -77,6 +77,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseDenseCwiseMul"; + private Output output; private SparseDenseCwiseMul(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseFillEmptyRows.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseFillEmptyRows.java index 47baf154e30..6c8066061fc 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseFillEmptyRows.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseFillEmptyRows.java @@ -125,6 +125,9 @@ public Output reverseIndexMap() { return reverseIndexMap; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseFillEmptyRows"; + private Output outputIndices; private Output outputValues; private Output emptyRowIndicator; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseFillEmptyRowsGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseFillEmptyRowsGrad.java index 7289cfa1eef..3942e8bc8b3 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseFillEmptyRowsGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseFillEmptyRowsGrad.java @@ -76,6 +76,9 @@ public Output dDefaultValue() { return dDefaultValue; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseFillEmptyRowsGrad"; + private Output dValues; private Output dDefaultValue; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseMatMul.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseMatMul.java index 42922e892cd..295063d560a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseMatMul.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseMatMul.java @@ -164,6 +164,9 @@ public Output asOutput() { return product; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseMatMul"; + private Output product; private SparseMatMul(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseReduceMax.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseReduceMax.java index 9e8ffaf3484..5288f7b5b88 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseReduceMax.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseReduceMax.java @@ -119,6 +119,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseReduceMax"; + private Output output; private SparseReduceMax(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseReduceMaxSparse.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseReduceMaxSparse.java index de96c4d2105..93ce28bb66a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseReduceMaxSparse.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseReduceMaxSparse.java @@ -125,6 +125,9 @@ public Output outputShape() { return outputShape; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseReduceMaxSparse"; + private Output outputIndices; private Output outputValues; private Output outputShape; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseReduceSum.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseReduceSum.java index b072fb46bfd..138bb1aab5b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseReduceSum.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseReduceSum.java @@ -118,6 +118,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseReduceSum"; + private Output output; private SparseReduceSum(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseReduceSumSparse.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseReduceSumSparse.java index befdc901b28..e27a1a98861 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseReduceSumSparse.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseReduceSumSparse.java @@ -124,6 +124,9 @@ public Output outputShape() { return outputShape; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseReduceSumSparse"; + private Output outputIndices; private Output outputValues; private Output outputShape; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseReorder.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseReorder.java index 88be4106deb..16713d1f767 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseReorder.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseReorder.java @@ -80,6 +80,9 @@ public Output outputValues() { return outputValues; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseReorder"; + private Output outputIndices; private Output outputValues; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseReshape.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseReshape.java index 7d2799f8ffe..772b19db9c5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseReshape.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseReshape.java @@ -86,6 +86,9 @@ public Output outputShape() { return outputShape; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseReshape"; + private Output outputIndices; private Output outputShape; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSegmentMean.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSegmentMean.java index 785b1149b0a..867ceffa333 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSegmentMean.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSegmentMean.java @@ -74,6 +74,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseSegmentMean"; + private Output output; private SparseSegmentMean(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSegmentMeanGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSegmentMeanGrad.java index a0c8e8b8e43..1af1cf8f170 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSegmentMeanGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSegmentMeanGrad.java @@ -72,6 +72,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseSegmentMeanGrad"; + private Output output; private SparseSegmentMeanGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSegmentMeanWithNumSegments.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSegmentMeanWithNumSegments.java index 0458eca8621..593f96408c8 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSegmentMeanWithNumSegments.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSegmentMeanWithNumSegments.java @@ -78,6 +78,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseSegmentMeanWithNumSegments"; + private Output output; private SparseSegmentMeanWithNumSegments(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSegmentSqrtN.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSegmentSqrtN.java index 03b6e015a80..85d8284ca8f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSegmentSqrtN.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSegmentSqrtN.java @@ -74,6 +74,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseSegmentSqrtN"; + private Output output; private SparseSegmentSqrtN(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSegmentSqrtNGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSegmentSqrtNGrad.java index cbe39991793..5893a8963f9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSegmentSqrtNGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSegmentSqrtNGrad.java @@ -72,6 +72,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseSegmentSqrtNGrad"; + private Output output; private SparseSegmentSqrtNGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSegmentSqrtNWithNumSegments.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSegmentSqrtNWithNumSegments.java index ce787acb499..334c7665238 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSegmentSqrtNWithNumSegments.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSegmentSqrtNWithNumSegments.java @@ -80,6 +80,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseSegmentSqrtNWithNumSegments"; + private Output output; private SparseSegmentSqrtNWithNumSegments(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSegmentSum.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSegmentSum.java index 16e47ab2431..2125bc49719 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSegmentSum.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSegmentSum.java @@ -99,6 +99,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseSegmentSum"; + private Output output; private SparseSegmentSum(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSegmentSumWithNumSegments.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSegmentSumWithNumSegments.java index 569d0c691c6..0e0b0227a06 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSegmentSumWithNumSegments.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSegmentSumWithNumSegments.java @@ -99,6 +99,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseSegmentSumWithNumSegments"; + private Output output; private SparseSegmentSumWithNumSegments(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSlice.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSlice.java index 5c429a40d9a..4ed30d8e2eb 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSlice.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSlice.java @@ -99,6 +99,9 @@ public Output outputShape() { return outputShape; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseSlice"; + private Output outputIndices; private Output outputValues; private Output outputShape; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSliceGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSliceGrad.java index 172d8bd5816..480631eccbc 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSliceGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSliceGrad.java @@ -74,6 +74,9 @@ public Output asOutput() { return valGrad; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseSliceGrad"; + private Output valGrad; private SparseSliceGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSoftmax.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSoftmax.java index ee37d13c818..0906213115f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSoftmax.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSoftmax.java @@ -85,6 +85,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseSoftmax"; + private Output output; private SparseSoftmax(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSparseMaximum.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSparseMaximum.java index d6d86234578..3cbf1a6ef7d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSparseMaximum.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSparseMaximum.java @@ -79,6 +79,9 @@ public Output outputValues() { return outputValues; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseSparseMaximum"; + private Output outputIndices; private Output outputValues; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSparseMinimum.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSparseMinimum.java index f46065ae9fc..b2f6aedbccb 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSparseMinimum.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSparseMinimum.java @@ -78,6 +78,9 @@ public Output outputValues() { return outputValues; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseSparseMinimum"; + private Output outputIndices; private Output outputValues; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSplit.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSplit.java index dee18e0e862..e93f6ebe40e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSplit.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseSplit.java @@ -104,6 +104,9 @@ public List> outputShape() { return outputShape; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseSplit"; + private List> outputIndices; private List> outputValues; private List> outputShape; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseTensorDenseAdd.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseTensorDenseAdd.java index 86f9d3394d1..9959d57d16b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseTensorDenseAdd.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseTensorDenseAdd.java @@ -70,6 +70,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseTensorDenseAdd"; + private Output output; private SparseTensorDenseAdd(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseTensorDenseMatMul.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseTensorDenseMatMul.java index 858bce58f73..63f3d3116c0 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseTensorDenseMatMul.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseTensorDenseMatMul.java @@ -136,6 +136,9 @@ public Output asOutput() { return product; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseTensorDenseMatMul"; + private Output product; private SparseTensorDenseMatMul(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseToDense.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseToDense.java index 04b21e5d46e..0f86af1327d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseToDense.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseToDense.java @@ -126,6 +126,9 @@ public Output asOutput() { return dense; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseToDense"; + private Output dense; private SparseToDense(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseToSparseSetOperation.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseToSparseSetOperation.java index 3b606bbd6e9..31cbe67a914 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseToSparseSetOperation.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseToSparseSetOperation.java @@ -152,6 +152,9 @@ public Output resultShape() { return resultShape; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseToSparseSetOperation"; + private Output resultIndices; private Output resultValues; private Output resultShape; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/TakeManySparseFromTensorsMap.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/TakeManySparseFromTensorsMap.java index 8b38ac4f936..7fd5242cb20 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/TakeManySparseFromTensorsMap.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/TakeManySparseFromTensorsMap.java @@ -179,6 +179,9 @@ public Output sparseShape() { return sparseShape; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TakeManySparseFromTensorsMap"; + private Output sparseIndices; private Output sparseValues; private Output sparseShape; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/Join.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/Join.java index 448a161166b..633457793a3 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/Join.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/Join.java @@ -104,6 +104,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StringJoin"; + private Output output; private Join(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/Lower.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/Lower.java index 14ac2b2a660..0b214f47017 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/Lower.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/Lower.java @@ -99,6 +99,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StringLower"; + private Output output; private Lower(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/ReduceJoin.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/ReduceJoin.java index 615262737c6..23d90b3a2b1 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/ReduceJoin.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/ReduceJoin.java @@ -143,6 +143,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ReduceJoin"; + private Output output; private ReduceJoin(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/RegexFullMatch.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/RegexFullMatch.java index 62923005059..446166c6e29 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/RegexFullMatch.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/RegexFullMatch.java @@ -77,6 +77,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RegexFullMatch"; + private Output output; private RegexFullMatch(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/RegexReplace.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/RegexReplace.java index 39d76d9115b..3eaec903fee 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/RegexReplace.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/RegexReplace.java @@ -106,6 +106,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RegexReplace"; + private Output output; private RegexReplace(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/StaticRegexFullMatch.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/StaticRegexFullMatch.java index fe6714ca733..3aa7b0827eb 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/StaticRegexFullMatch.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/StaticRegexFullMatch.java @@ -69,6 +69,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StaticRegexFullMatch"; + private Output output; private StaticRegexFullMatch(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/StaticRegexReplace.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/StaticRegexReplace.java index e09c93144d4..c1802f48001 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/StaticRegexReplace.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/StaticRegexReplace.java @@ -101,6 +101,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StaticRegexReplace"; + private Output output; private StaticRegexReplace(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/StringFormat.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/StringFormat.java index 0e6798c4bf4..3decf1e5c93 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/StringFormat.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/StringFormat.java @@ -135,6 +135,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StringFormat"; + private Output output; private StringFormat(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/StringLength.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/StringLength.java index ff820abbea3..d9fc036ad22 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/StringLength.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/StringLength.java @@ -113,6 +113,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StringLength"; + private Output output; private StringLength(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/StringNGrams.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/StringNGrams.java index e54a46a6b69..6d68c11fe1b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/StringNGrams.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/StringNGrams.java @@ -95,6 +95,9 @@ public Output ngramsSplits() { return ngramsSplits; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StringNGrams"; + private Output ngrams; private Output ngramsSplits; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/StringSplit.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/StringSplit.java index d1e4b45d745..87debf546cf 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/StringSplit.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/StringSplit.java @@ -127,6 +127,9 @@ public Output shape() { return shape; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StringSplitV2"; + private Output indices; private Output values; private Output shape; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/Strip.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/Strip.java index eb8f1a23a4a..fc6f37bbabb 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/Strip.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/Strip.java @@ -65,6 +65,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StringStrip"; + private Output output; private Strip(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/Substr.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/Substr.java index 9d6e21cbafc..153f6873d03 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/Substr.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/Substr.java @@ -184,6 +184,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Substr"; + private Output output; private Substr(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/ToHashBucket.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/ToHashBucket.java index 82d26aebe40..11f025a4055 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/ToHashBucket.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/ToHashBucket.java @@ -70,6 +70,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StringToHashBucket"; + private Output output; private ToHashBucket(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/ToHashBucketFast.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/ToHashBucketFast.java index 62737da0d0d..b1025fb9ccd 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/ToHashBucketFast.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/ToHashBucketFast.java @@ -75,6 +75,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StringToHashBucketFast"; + private Output output; private ToHashBucketFast(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/ToHashBucketStrong.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/ToHashBucketStrong.java index c27d7053165..28af44e377f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/ToHashBucketStrong.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/ToHashBucketStrong.java @@ -90,6 +90,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StringToHashBucketStrong"; + private Output output; private ToHashBucketStrong(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/ToNumber.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/ToNumber.java index 8c0751ea782..e8e5e4039b9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/ToNumber.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/ToNumber.java @@ -90,6 +90,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StringToNumber"; + private Output output; private ToNumber(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/UnicodeDecode.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/UnicodeDecode.java index 1d5f077d04b..a39b08b1f5a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/UnicodeDecode.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/UnicodeDecode.java @@ -199,6 +199,9 @@ public Output charValues() { return charValues; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "UnicodeDecode"; + private Output rowSplits; private Output charValues; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/UnicodeDecodeWithOffsets.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/UnicodeDecodeWithOffsets.java index 019afa8fe33..ce6977b63ef 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/UnicodeDecodeWithOffsets.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/UnicodeDecodeWithOffsets.java @@ -213,6 +213,9 @@ public Output charToByteStarts() { return charToByteStarts; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "UnicodeDecodeWithOffsets"; + private Output rowSplits; private Output charValues; private Output charToByteStarts; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/UnicodeEncode.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/UnicodeEncode.java index 1a539366d81..ab83ef9dcda 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/UnicodeEncode.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/UnicodeEncode.java @@ -156,6 +156,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "UnicodeEncode"; + private Output output; private UnicodeEncode(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/UnicodeScript.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/UnicodeScript.java index 3da3bac675c..6d3600a1de3 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/UnicodeScript.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/UnicodeScript.java @@ -71,6 +71,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "UnicodeScript"; + private Output output; private UnicodeScript(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/UnicodeTranscode.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/UnicodeTranscode.java index 4b4e03fda8d..8f62db46152 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/UnicodeTranscode.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/UnicodeTranscode.java @@ -203,6 +203,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "UnicodeTranscode"; + private Output output; private UnicodeTranscode(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/UnsortedSegmentJoin.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/UnsortedSegmentJoin.java index 47043fac5b2..df1bbc68b68 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/UnsortedSegmentJoin.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/UnsortedSegmentJoin.java @@ -127,6 +127,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "UnsortedSegmentJoin"; + private Output output; private UnsortedSegmentJoin(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/Upper.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/Upper.java index 343e4c58d5d..e90dc891dd8 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/Upper.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/strings/Upper.java @@ -99,6 +99,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StringUpper"; + private Output output; private Upper(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/AudioSummary.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/AudioSummary.java index f8382c2cede..6743a4ef4c1 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/AudioSummary.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/AudioSummary.java @@ -114,6 +114,9 @@ public Output asOutput() { return summary; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "AudioSummaryV2"; + private Output summary; private AudioSummary(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/CloseSummaryWriter.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/CloseSummaryWriter.java index c056b2f4f35..ff9735f0b07 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/CloseSummaryWriter.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/CloseSummaryWriter.java @@ -44,6 +44,9 @@ public static CloseSummaryWriter create(Scope scope, Operand writer) { return new CloseSummaryWriter(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "CloseSummaryWriter"; + private CloseSummaryWriter(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/CreateSummaryDbWriter.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/CreateSummaryDbWriter.java index 50cfefb2e9f..61e7405f74d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/CreateSummaryDbWriter.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/CreateSummaryDbWriter.java @@ -53,6 +53,9 @@ public static CreateSummaryDbWriter create(Scope scope, Operand writer, Opera return new CreateSummaryDbWriter(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "CreateSummaryDbWriter"; + private CreateSummaryDbWriter(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/CreateSummaryFileWriter.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/CreateSummaryFileWriter.java index 13130955bca..d113ebcf3f6 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/CreateSummaryFileWriter.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/CreateSummaryFileWriter.java @@ -54,6 +54,9 @@ public static CreateSummaryFileWriter create(Scope scope, Operand writer, Ope return new CreateSummaryFileWriter(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "CreateSummaryFileWriter"; + private CreateSummaryFileWriter(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/FlushSummaryWriter.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/FlushSummaryWriter.java index 16babb3df73..6b1e610c632 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/FlushSummaryWriter.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/FlushSummaryWriter.java @@ -44,6 +44,9 @@ public static FlushSummaryWriter create(Scope scope, Operand writer) { return new FlushSummaryWriter(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "FlushSummaryWriter"; + private FlushSummaryWriter(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/HistogramSummary.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/HistogramSummary.java index c98efad5b3b..669cbf5c2fb 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/HistogramSummary.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/HistogramSummary.java @@ -70,6 +70,9 @@ public Output asOutput() { return summary; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "HistogramSummary"; + private Output summary; private HistogramSummary(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/ImageSummary.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/ImageSummary.java index 50cc52f5769..5b0f9f8859f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/ImageSummary.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/ImageSummary.java @@ -166,6 +166,9 @@ public Output asOutput() { return summary; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ImageSummary"; + private Output summary; private ImageSummary(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/ImportEvent.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/ImportEvent.java index 736aa827d82..9b6dc173abe 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/ImportEvent.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/ImportEvent.java @@ -47,6 +47,9 @@ public static ImportEvent create(Scope scope, Operand writer, Operand asOutput() { return summary; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MergeSummary"; + private Output summary; private MergeSummary(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/ScalarSummary.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/ScalarSummary.java index c766d9759ed..416251aa6b1 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/ScalarSummary.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/ScalarSummary.java @@ -67,6 +67,9 @@ public Output asOutput() { return summary; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ScalarSummary"; + private Output summary; private ScalarSummary(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/StatsAggregatorSummary.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/StatsAggregatorSummary.java index 525db2a64e8..9cc5fe6d83b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/StatsAggregatorSummary.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/StatsAggregatorSummary.java @@ -58,6 +58,9 @@ public Output asOutput() { return summary; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StatsAggregatorSummary"; + private Output summary; private StatsAggregatorSummary(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/SummaryWriter.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/SummaryWriter.java index f27b996b716..131cb6e4a9d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/SummaryWriter.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/SummaryWriter.java @@ -109,6 +109,9 @@ public Output asOutput() { return (Output) writer; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SummaryWriter"; + private Output writer; private SummaryWriter(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/TensorSummary.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/TensorSummary.java index 0d6e950a4f3..85e0f8d533b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/TensorSummary.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/TensorSummary.java @@ -65,6 +65,9 @@ public Output asOutput() { return summary; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorSummaryV2"; + private Output summary; private TensorSummary(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteAudioSummary.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteAudioSummary.java index 69e42753c7c..306b1d88e6e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteAudioSummary.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteAudioSummary.java @@ -89,6 +89,9 @@ public static Options maxOutputs(Long maxOutputs) { return new Options().maxOutputs(maxOutputs); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "WriteAudioSummary"; + private WriteAudioSummary(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteGraphSummary.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteGraphSummary.java index 0d6b11f1f6d..fa10196ca72 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteGraphSummary.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteGraphSummary.java @@ -50,6 +50,9 @@ public static WriteGraphSummary create(Scope scope, Operand writer, Operand WriteHistogramSummary create(Scope scope, Oper return new WriteHistogramSummary(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "WriteHistogramSummary"; + private WriteHistogramSummary(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteImageSummary.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteImageSummary.java index 26be4538bf0..286d584d695 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteImageSummary.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteImageSummary.java @@ -91,6 +91,9 @@ public static Options maxImages(Long maxImages) { return new Options().maxImages(maxImages); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "WriteImageSummary"; + private WriteImageSummary(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteRawProtoSummary.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteRawProtoSummary.java index e781534b31b..524b56bed7a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteRawProtoSummary.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteRawProtoSummary.java @@ -50,6 +50,9 @@ public static WriteRawProtoSummary create(Scope scope, Operand writer, Operan return new WriteRawProtoSummary(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "WriteRawProtoSummary"; + private WriteRawProtoSummary(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteScalarSummary.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteScalarSummary.java index b3a7b3a6723..2317db7bdeb 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteScalarSummary.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteScalarSummary.java @@ -54,6 +54,9 @@ public static WriteScalarSummary create(Scope scope, Operand return new WriteScalarSummary(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "WriteScalarSummary"; + private WriteScalarSummary(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteSummary.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteSummary.java index a538b5a4cfd..6d257f948e8 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteSummary.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteSummary.java @@ -55,6 +55,9 @@ public static WriteSummary create(Scope scope, Operand writ return new WriteSummary(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "WriteSummary"; + private WriteSummary(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/AllToAll.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/AllToAll.java index 615657b1408..9bbac83ac2c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/AllToAll.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/AllToAll.java @@ -90,6 +90,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "AllToAll"; + private Output output; private AllToAll(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/CollectivePermute.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/CollectivePermute.java index 5b298bc1630..bafa9a893f9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/CollectivePermute.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/CollectivePermute.java @@ -71,6 +71,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "CollectivePermute"; + private Output output; private CollectivePermute(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/ConfigureDistributedTPU.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/ConfigureDistributedTPU.java index 73f1bfceb3e..bfdde5b98e2 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/ConfigureDistributedTPU.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/ConfigureDistributedTPU.java @@ -170,6 +170,9 @@ public Output asOutput() { return topology; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ConfigureDistributedTPU"; + private Output topology; private ConfigureDistributedTPU(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/ConfigureTPUEmbedding.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/ConfigureTPUEmbedding.java index d1fb1fa838d..1905a3082b3 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/ConfigureTPUEmbedding.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/ConfigureTPUEmbedding.java @@ -45,6 +45,9 @@ public static ConfigureTPUEmbedding create(Scope scope, String config) { return new ConfigureTPUEmbedding(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ConfigureTPUEmbedding"; + private ConfigureTPUEmbedding(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/CrossReplicaSum.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/CrossReplicaSum.java index 2c257fb6d2f..79dc79410a1 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/CrossReplicaSum.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/CrossReplicaSum.java @@ -74,6 +74,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "CrossReplicaSum"; + private Output output; private CrossReplicaSum(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/EnqueueTPUEmbeddingIntegerBatch.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/EnqueueTPUEmbeddingIntegerBatch.java index 7b499d87664..4198c38e11c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/EnqueueTPUEmbeddingIntegerBatch.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/EnqueueTPUEmbeddingIntegerBatch.java @@ -90,6 +90,9 @@ public static Options deviceOrdinal(Long deviceOrdinal) { return new Options().deviceOrdinal(deviceOrdinal); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "EnqueueTPUEmbeddingIntegerBatch"; + private EnqueueTPUEmbeddingIntegerBatch(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/EnqueueTPUEmbeddingSparseBatch.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/EnqueueTPUEmbeddingSparseBatch.java index 35185704d89..23288018938 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/EnqueueTPUEmbeddingSparseBatch.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/EnqueueTPUEmbeddingSparseBatch.java @@ -143,6 +143,9 @@ public static Options combiners(List combiners) { return new Options().combiners(combiners); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "EnqueueTPUEmbeddingSparseBatch"; + private EnqueueTPUEmbeddingSparseBatch(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/EnqueueTPUEmbeddingSparseTensorBatch.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/EnqueueTPUEmbeddingSparseTensorBatch.java index 5e4bf1c6b27..59018e1b3e5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/EnqueueTPUEmbeddingSparseTensorBatch.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/EnqueueTPUEmbeddingSparseTensorBatch.java @@ -175,6 +175,9 @@ public static Options maxSequenceLengths(List maxSequenceLengths) { return new Options().maxSequenceLengths(maxSequenceLengths); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "EnqueueTPUEmbeddingSparseTensorBatch"; + private EnqueueTPUEmbeddingSparseTensorBatch(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/InfeedDequeue.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/InfeedDequeue.java index 19a5528dd5d..ad4d5f52fa8 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/InfeedDequeue.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/InfeedDequeue.java @@ -65,6 +65,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "InfeedDequeue"; + private Output output; private InfeedDequeue(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/InfeedDequeueTuple.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/InfeedDequeueTuple.java index 3e9fe720ca9..f471da5b5d7 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/InfeedDequeueTuple.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/InfeedDequeueTuple.java @@ -75,6 +75,9 @@ public Iterator> iterator() { return (Iterator) outputs.iterator(); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "InfeedDequeueTuple"; + private List> outputs; private InfeedDequeueTuple(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/InfeedEnqueue.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/InfeedEnqueue.java index f40a1b7c5c4..9c79df444e3 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/InfeedEnqueue.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/InfeedEnqueue.java @@ -132,6 +132,9 @@ public static Options deviceOrdinal(Long deviceOrdinal) { return new Options().deviceOrdinal(deviceOrdinal); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "InfeedEnqueue"; + private InfeedEnqueue(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/InfeedEnqueuePrelinearizedBuffer.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/InfeedEnqueuePrelinearizedBuffer.java index cdd475a08ae..b1d32f70ec9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/InfeedEnqueuePrelinearizedBuffer.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/InfeedEnqueuePrelinearizedBuffer.java @@ -81,6 +81,9 @@ public static Options deviceOrdinal(Long deviceOrdinal) { return new Options().deviceOrdinal(deviceOrdinal); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "InfeedEnqueuePrelinearizedBuffer"; + private InfeedEnqueuePrelinearizedBuffer(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/InfeedEnqueueTuple.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/InfeedEnqueueTuple.java index c97a792ae7d..d2a95d84244 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/InfeedEnqueueTuple.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/InfeedEnqueueTuple.java @@ -121,6 +121,9 @@ public static Options deviceOrdinal(Long deviceOrdinal) { return new Options().deviceOrdinal(deviceOrdinal); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "InfeedEnqueueTuple"; + private InfeedEnqueueTuple(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingADAMParameters.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingADAMParameters.java index 1222247d109..9e60fae350e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingADAMParameters.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingADAMParameters.java @@ -132,6 +132,9 @@ public static Options config(String config) { return new Options().config(config); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LoadTPUEmbeddingADAMParameters"; + private LoadTPUEmbeddingADAMParameters(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingADAMParametersGradAccumDebug.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingADAMParametersGradAccumDebug.java index 53af351f736..58cfa5cf465 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingADAMParametersGradAccumDebug.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingADAMParametersGradAccumDebug.java @@ -134,6 +134,9 @@ public static Options config(String config) { return new Options().config(config); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LoadTPUEmbeddingADAMParametersGradAccumDebug"; + private LoadTPUEmbeddingADAMParametersGradAccumDebug(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingAdadeltaParameters.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingAdadeltaParameters.java index 66e2bc9a3d4..e4f4228f0f1 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingAdadeltaParameters.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingAdadeltaParameters.java @@ -132,6 +132,9 @@ public static Options config(String config) { return new Options().config(config); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LoadTPUEmbeddingAdadeltaParameters"; + private LoadTPUEmbeddingAdadeltaParameters(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingAdadeltaParametersGradAccumDebug.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingAdadeltaParametersGradAccumDebug.java index d659eb12ec3..76af15dc0b6 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingAdadeltaParametersGradAccumDebug.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingAdadeltaParametersGradAccumDebug.java @@ -134,6 +134,9 @@ public static Options config(String config) { return new Options().config(config); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LoadTPUEmbeddingAdadeltaParametersGradAccumDebug"; + private LoadTPUEmbeddingAdadeltaParametersGradAccumDebug(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingAdagradParameters.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingAdagradParameters.java index 80b424e073c..dc4f5c62341 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingAdagradParameters.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingAdagradParameters.java @@ -130,6 +130,9 @@ public static Options config(String config) { return new Options().config(config); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LoadTPUEmbeddingAdagradParameters"; + private LoadTPUEmbeddingAdagradParameters(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingAdagradParametersGradAccumDebug.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingAdagradParametersGradAccumDebug.java index de11b50f1f9..6551f875f2d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingAdagradParametersGradAccumDebug.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingAdagradParametersGradAccumDebug.java @@ -132,6 +132,9 @@ public static Options config(String config) { return new Options().config(config); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LoadTPUEmbeddingAdagradParametersGradAccumDebug"; + private LoadTPUEmbeddingAdagradParametersGradAccumDebug(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingCenteredRMSPropParameters.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingCenteredRMSPropParameters.java index b7bbb92fa90..d4a0103654c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingCenteredRMSPropParameters.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingCenteredRMSPropParameters.java @@ -134,6 +134,9 @@ public static Options config(String config) { return new Options().config(config); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LoadTPUEmbeddingCenteredRMSPropParameters"; + private LoadTPUEmbeddingCenteredRMSPropParameters(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingFTRLParameters.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingFTRLParameters.java index 7939230997f..a65301f6348 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingFTRLParameters.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingFTRLParameters.java @@ -132,6 +132,9 @@ public static Options config(String config) { return new Options().config(config); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LoadTPUEmbeddingFTRLParameters"; + private LoadTPUEmbeddingFTRLParameters(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingFTRLParametersGradAccumDebug.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingFTRLParametersGradAccumDebug.java index 38ebb8518bd..5a1c165428d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingFTRLParametersGradAccumDebug.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingFTRLParametersGradAccumDebug.java @@ -134,6 +134,9 @@ public static Options config(String config) { return new Options().config(config); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LoadTPUEmbeddingFTRLParametersGradAccumDebug"; + private LoadTPUEmbeddingFTRLParametersGradAccumDebug(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingMDLAdagradLightParameters.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingMDLAdagradLightParameters.java index 7d0f7d014c3..407cf842f19 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingMDLAdagradLightParameters.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingMDLAdagradLightParameters.java @@ -134,6 +134,9 @@ public static Options config(String config) { return new Options().config(config); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LoadTPUEmbeddingMDLAdagradLightParameters"; + private LoadTPUEmbeddingMDLAdagradLightParameters(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingMomentumParameters.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingMomentumParameters.java index c705213c9a2..35b8479749b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingMomentumParameters.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingMomentumParameters.java @@ -130,6 +130,9 @@ public static Options config(String config) { return new Options().config(config); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LoadTPUEmbeddingMomentumParameters"; + private LoadTPUEmbeddingMomentumParameters(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingMomentumParametersGradAccumDebug.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingMomentumParametersGradAccumDebug.java index d774094df05..babc2de15fd 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingMomentumParametersGradAccumDebug.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingMomentumParametersGradAccumDebug.java @@ -132,6 +132,9 @@ public static Options config(String config) { return new Options().config(config); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LoadTPUEmbeddingMomentumParametersGradAccumDebug"; + private LoadTPUEmbeddingMomentumParametersGradAccumDebug(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingProximalAdagradParameters.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingProximalAdagradParameters.java index 57db2202b99..0ebad625abe 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingProximalAdagradParameters.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingProximalAdagradParameters.java @@ -130,6 +130,9 @@ public static Options config(String config) { return new Options().config(config); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LoadTPUEmbeddingProximalAdagradParameters"; + private LoadTPUEmbeddingProximalAdagradParameters(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingProximalAdagradParametersGradAccumDebug.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingProximalAdagradParametersGradAccumDebug.java index 40eec1594f1..80b05d47203 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingProximalAdagradParametersGradAccumDebug.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingProximalAdagradParametersGradAccumDebug.java @@ -132,6 +132,9 @@ public static Options config(String config) { return new Options().config(config); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LoadTPUEmbeddingProximalAdagradParametersGradAccumDebug"; + private LoadTPUEmbeddingProximalAdagradParametersGradAccumDebug(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingRMSPropParameters.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingRMSPropParameters.java index 88e2c035ce8..d0e39d22edb 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingRMSPropParameters.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingRMSPropParameters.java @@ -132,6 +132,9 @@ public static Options config(String config) { return new Options().config(config); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LoadTPUEmbeddingRMSPropParameters"; + private LoadTPUEmbeddingRMSPropParameters(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingRMSPropParametersGradAccumDebug.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingRMSPropParametersGradAccumDebug.java index 6e79a29f987..98f1043a768 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingRMSPropParametersGradAccumDebug.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingRMSPropParametersGradAccumDebug.java @@ -134,6 +134,9 @@ public static Options config(String config) { return new Options().config(config); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LoadTPUEmbeddingRMSPropParametersGradAccumDebug"; + private LoadTPUEmbeddingRMSPropParametersGradAccumDebug(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingStochasticGradientDescentParameters.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingStochasticGradientDescentParameters.java index 32b34ea6262..ca881823239 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingStochasticGradientDescentParameters.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingStochasticGradientDescentParameters.java @@ -128,6 +128,9 @@ public static Options config(String config) { return new Options().config(config); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LoadTPUEmbeddingStochasticGradientDescentParameters"; + private LoadTPUEmbeddingStochasticGradientDescentParameters(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/OutfeedDequeue.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/OutfeedDequeue.java index 2e822837449..3be811cd039 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/OutfeedDequeue.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/OutfeedDequeue.java @@ -105,6 +105,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "OutfeedDequeue"; + private Output output; private OutfeedDequeue(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/OutfeedDequeueTuple.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/OutfeedDequeueTuple.java index b7c2f10fcac..6b9110232d8 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/OutfeedDequeueTuple.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/OutfeedDequeueTuple.java @@ -116,6 +116,9 @@ public Iterator> iterator() { return (Iterator) outputs.iterator(); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "OutfeedDequeueTuple"; + private List> outputs; private OutfeedDequeueTuple(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/OutfeedEnqueue.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/OutfeedEnqueue.java index 16e8733bc55..46ee54430d9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/OutfeedEnqueue.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/OutfeedEnqueue.java @@ -46,6 +46,9 @@ public static OutfeedEnqueue create(Scope scope, Operand in return new OutfeedEnqueue(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "OutfeedEnqueue"; + private OutfeedEnqueue(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/OutfeedEnqueueTuple.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/OutfeedEnqueueTuple.java index 43972c6f64a..25d110f1114 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/OutfeedEnqueueTuple.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/OutfeedEnqueueTuple.java @@ -47,6 +47,9 @@ public static OutfeedEnqueueTuple create(Scope scope, Iterable> input return new OutfeedEnqueueTuple(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "OutfeedEnqueueTuple"; + private OutfeedEnqueueTuple(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/Prelinearize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/Prelinearize.java index 78b0e38f4ae..c5c9573fb75 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/Prelinearize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/Prelinearize.java @@ -122,6 +122,9 @@ public Output asOutput() { return (Output) output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "Prelinearize"; + private Output output; private Prelinearize(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/PrelinearizeTuple.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/PrelinearizeTuple.java index cc5a77b7fe4..6ff29f7b63a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/PrelinearizeTuple.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/PrelinearizeTuple.java @@ -112,6 +112,9 @@ public Output asOutput() { return (Output) output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "PrelinearizeTuple"; + private Output output; private PrelinearizeTuple(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RecvTPUEmbeddingActivations.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RecvTPUEmbeddingActivations.java index 9ed8bdf75bc..e2bacade157 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RecvTPUEmbeddingActivations.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RecvTPUEmbeddingActivations.java @@ -74,6 +74,9 @@ public Iterator> iterator() { return (Iterator) outputs.iterator(); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RecvTPUEmbeddingActivations"; + private List> outputs; @SuppressWarnings("unchecked") diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingADAMParameters.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingADAMParameters.java index 9f14bc5f984..6201ed4b9eb 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingADAMParameters.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingADAMParameters.java @@ -146,6 +146,9 @@ public Output velocities() { return velocities; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RetrieveTPUEmbeddingADAMParameters"; + private Output parameters; private Output momenta; private Output velocities; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingADAMParametersGradAccumDebug.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingADAMParametersGradAccumDebug.java index ba7a9aebf01..423fc97541e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingADAMParametersGradAccumDebug.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingADAMParametersGradAccumDebug.java @@ -153,6 +153,9 @@ public Output gradientAccumulators() { return gradientAccumulators; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RetrieveTPUEmbeddingADAMParametersGradAccumDebug"; + private Output parameters; private Output momenta; private Output velocities; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingAdadeltaParameters.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingAdadeltaParameters.java index b7235410fa1..9a00080e017 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingAdadeltaParameters.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingAdadeltaParameters.java @@ -146,6 +146,9 @@ public Output updates() { return updates; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RetrieveTPUEmbeddingAdadeltaParameters"; + private Output parameters; private Output accumulators; private Output updates; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingAdadeltaParametersGradAccumDebug.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingAdadeltaParametersGradAccumDebug.java index 5b563e92d70..3fec5d6a6f7 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingAdadeltaParametersGradAccumDebug.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingAdadeltaParametersGradAccumDebug.java @@ -153,6 +153,9 @@ public Output gradientAccumulators() { return gradientAccumulators; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RetrieveTPUEmbeddingAdadeltaParametersGradAccumDebug"; + private Output parameters; private Output accumulators; private Output updates; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingAdagradParameters.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingAdagradParameters.java index f79703b3de7..07ed32ae1f9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingAdagradParameters.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingAdagradParameters.java @@ -139,6 +139,9 @@ public Output accumulators() { return accumulators; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RetrieveTPUEmbeddingAdagradParameters"; + private Output parameters; private Output accumulators; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingAdagradParametersGradAccumDebug.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingAdagradParametersGradAccumDebug.java index 1ebf1ee8bee..39a8a7ab791 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingAdagradParametersGradAccumDebug.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingAdagradParametersGradAccumDebug.java @@ -146,6 +146,9 @@ public Output gradientAccumulators() { return gradientAccumulators; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RetrieveTPUEmbeddingAdagradParametersGradAccumDebug"; + private Output parameters; private Output accumulators; private Output gradientAccumulators; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingCenteredRMSPropParameters.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingCenteredRMSPropParameters.java index 69fc77119ce..800cbd10aff 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingCenteredRMSPropParameters.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingCenteredRMSPropParameters.java @@ -153,6 +153,9 @@ public Output mg() { return mg; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RetrieveTPUEmbeddingCenteredRMSPropParameters"; + private Output parameters; private Output ms; private Output mom; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingFTRLParameters.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingFTRLParameters.java index 556a2b5faa7..0e7114d3744 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingFTRLParameters.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingFTRLParameters.java @@ -146,6 +146,9 @@ public Output linears() { return linears; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RetrieveTPUEmbeddingFTRLParameters"; + private Output parameters; private Output accumulators; private Output linears; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingFTRLParametersGradAccumDebug.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingFTRLParametersGradAccumDebug.java index f80357dd124..2dbff3ea109 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingFTRLParametersGradAccumDebug.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingFTRLParametersGradAccumDebug.java @@ -153,6 +153,9 @@ public Output gradientAccumulators() { return gradientAccumulators; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RetrieveTPUEmbeddingFTRLParametersGradAccumDebug"; + private Output parameters; private Output accumulators; private Output linears; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingMDLAdagradLightParameters.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingMDLAdagradLightParameters.java index 4b1ef14db2b..aa4be2cb318 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingMDLAdagradLightParameters.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingMDLAdagradLightParameters.java @@ -153,6 +153,9 @@ public Output benefits() { return benefits; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RetrieveTPUEmbeddingMDLAdagradLightParameters"; + private Output parameters; private Output accumulators; private Output weights; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingMomentumParameters.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingMomentumParameters.java index 72732a3da00..7f397adda1c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingMomentumParameters.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingMomentumParameters.java @@ -139,6 +139,9 @@ public Output momenta() { return momenta; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RetrieveTPUEmbeddingMomentumParameters"; + private Output parameters; private Output momenta; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingMomentumParametersGradAccumDebug.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingMomentumParametersGradAccumDebug.java index b8398bf62e9..15aceae7f2a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingMomentumParametersGradAccumDebug.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingMomentumParametersGradAccumDebug.java @@ -146,6 +146,9 @@ public Output gradientAccumulators() { return gradientAccumulators; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RetrieveTPUEmbeddingMomentumParametersGradAccumDebug"; + private Output parameters; private Output momenta; private Output gradientAccumulators; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingProximalAdagradParameters.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingProximalAdagradParameters.java index 43c9daa0f1a..4f20964f27f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingProximalAdagradParameters.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingProximalAdagradParameters.java @@ -139,6 +139,9 @@ public Output accumulators() { return accumulators; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RetrieveTPUEmbeddingProximalAdagradParameters"; + private Output parameters; private Output accumulators; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingProximalAdagradParametersGradAccumDebug.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingProximalAdagradParametersGradAccumDebug.java index 982e7c8bd44..abde61ec5a9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingProximalAdagradParametersGradAccumDebug.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingProximalAdagradParametersGradAccumDebug.java @@ -146,6 +146,9 @@ public Output gradientAccumulators() { return gradientAccumulators; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RetrieveTPUEmbeddingProximalAdagradParametersGradAccumDebug"; + private Output parameters; private Output accumulators; private Output gradientAccumulators; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingRMSPropParameters.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingRMSPropParameters.java index 393cc2c482d..fcc01589e38 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingRMSPropParameters.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingRMSPropParameters.java @@ -146,6 +146,9 @@ public Output mom() { return mom; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RetrieveTPUEmbeddingRMSPropParameters"; + private Output parameters; private Output ms; private Output mom; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingRMSPropParametersGradAccumDebug.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingRMSPropParametersGradAccumDebug.java index 2e65ab437da..0c3814b23b4 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingRMSPropParametersGradAccumDebug.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingRMSPropParametersGradAccumDebug.java @@ -153,6 +153,9 @@ public Output gradientAccumulators() { return gradientAccumulators; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RetrieveTPUEmbeddingRMSPropParametersGradAccumDebug"; + private Output parameters; private Output ms; private Output mom; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingStochasticGradientDescentParameters.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingStochasticGradientDescentParameters.java index c98b2b5f7a8..e69247fa0ce 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingStochasticGradientDescentParameters.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingStochasticGradientDescentParameters.java @@ -138,6 +138,9 @@ public Output asOutput() { return parameters; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RetrieveTPUEmbeddingStochasticGradientDescentParameters"; + private Output parameters; private RetrieveTPUEmbeddingStochasticGradientDescentParameters(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/SendTPUEmbeddingGradients.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/SendTPUEmbeddingGradients.java index 87b07cd2b8a..25d25c1d5bf 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/SendTPUEmbeddingGradients.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/SendTPUEmbeddingGradients.java @@ -61,6 +61,9 @@ public static SendTPUEmbeddingGradients create(Scope scope, Iterable asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TPUCompilationResult"; + private Output output; private TPUCompilationResult(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/TPUEmbeddingActivations.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/TPUEmbeddingActivations.java index 5473e957471..138a7434106 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/TPUEmbeddingActivations.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/TPUEmbeddingActivations.java @@ -72,6 +72,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TPUEmbeddingActivations"; + private Output output; private TPUEmbeddingActivations(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/TPUOrdinalSelector.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/TPUOrdinalSelector.java index 156f4b779fe..2df183cb793 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/TPUOrdinalSelector.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/TPUOrdinalSelector.java @@ -61,6 +61,9 @@ public Output asOutput() { return deviceOrdinals; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TPUOrdinalSelector"; + private Output deviceOrdinals; private TPUOrdinalSelector(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/TPUReplicateMetadata.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/TPUReplicateMetadata.java index 547c12d64e4..4cc6056c8bc 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/TPUReplicateMetadata.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/TPUReplicateMetadata.java @@ -249,6 +249,9 @@ public static Options allowSoftPlacement(Boolean allowSoftPlacement) { return new Options().allowSoftPlacement(allowSoftPlacement); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TPUReplicateMetadata"; + private TPUReplicateMetadata(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/TPUReplicatedInput.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/TPUReplicatedInput.java index 157cb366d65..a2df9260990 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/TPUReplicatedInput.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/TPUReplicatedInput.java @@ -126,6 +126,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TPUReplicatedInput"; + private Output output; private TPUReplicatedInput(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/TPUReplicatedOutput.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/TPUReplicatedOutput.java index 0c169b3008d..24c9418b0c3 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/TPUReplicatedOutput.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/TPUReplicatedOutput.java @@ -76,6 +76,9 @@ public Iterator> iterator() { return (Iterator) outputs.iterator(); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TPUReplicatedOutput"; + private List> outputs; @SuppressWarnings("unchecked") diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/WorkerHeartbeat.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/WorkerHeartbeat.java index bb35afe9d09..49895008bd2 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/WorkerHeartbeat.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/WorkerHeartbeat.java @@ -62,6 +62,9 @@ public Output asOutput() { return response; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "WorkerHeartbeat"; + private Output response; private WorkerHeartbeat(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/AccumulatorApplyGradient.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/AccumulatorApplyGradient.java index c493d6daa72..82583bd691e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/AccumulatorApplyGradient.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/AccumulatorApplyGradient.java @@ -55,6 +55,9 @@ public static AccumulatorApplyGradient create(Scope scope, Ope return new AccumulatorApplyGradient(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "AccumulatorApplyGradient"; + private AccumulatorApplyGradient(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/AccumulatorNumAccumulated.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/AccumulatorNumAccumulated.java index 8146deccf7d..9fca915c550 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/AccumulatorNumAccumulated.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/AccumulatorNumAccumulated.java @@ -61,6 +61,9 @@ public Output asOutput() { return numAccumulated; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "AccumulatorNumAccumulated"; + private Output numAccumulated; private AccumulatorNumAccumulated(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/AccumulatorSetGlobalStep.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/AccumulatorSetGlobalStep.java index 747fcc6b123..b57bb702669 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/AccumulatorSetGlobalStep.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/AccumulatorSetGlobalStep.java @@ -53,6 +53,9 @@ public static AccumulatorSetGlobalStep create(Scope scope, Operand hand return new AccumulatorSetGlobalStep(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "AccumulatorSetGlobalStep"; + private AccumulatorSetGlobalStep(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/AccumulatorTakeGradient.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/AccumulatorTakeGradient.java index 23f24d3f675..51de5485845 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/AccumulatorTakeGradient.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/AccumulatorTakeGradient.java @@ -76,6 +76,9 @@ public Output asOutput() { return average; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "AccumulatorTakeGradient"; + private Output average; private AccumulatorTakeGradient(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyAdaMax.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyAdaMax.java index 8153a364508..1b24ac1fe26 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyAdaMax.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyAdaMax.java @@ -119,6 +119,9 @@ public Output asOutput() { return out; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ApplyAdaMax"; + private Output out; private ApplyAdaMax(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyAdadelta.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyAdadelta.java index 928e2ae0f4e..7e68618da7d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyAdadelta.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyAdadelta.java @@ -115,6 +115,9 @@ public Output asOutput() { return out; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ApplyAdadelta"; + private Output out; private ApplyAdadelta(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyAdagrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyAdagrad.java index 2a88b987503..c8311ac541a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyAdagrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyAdagrad.java @@ -128,6 +128,9 @@ public Output asOutput() { return out; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ApplyAdagrad"; + private Output out; private ApplyAdagrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyAdagradDa.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyAdagradDa.java index e03d521353b..3bb9f9cae4b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyAdagradDa.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyAdagradDa.java @@ -113,6 +113,9 @@ public Output asOutput() { return out; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ApplyAdagradDA"; + private Output out; private ApplyAdagradDa(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyAdagradV2.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyAdagradV2.java index aeaaddb103c..da399e31eda 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyAdagradV2.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyAdagradV2.java @@ -129,6 +129,9 @@ public Output asOutput() { return out; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ApplyAdagradV2"; + private Output out; private ApplyAdagradV2(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyAdam.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyAdam.java index c6b93126708..31d98fa299b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyAdam.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyAdam.java @@ -142,6 +142,9 @@ public Output asOutput() { return out; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ApplyAdam"; + private Output out; private ApplyAdam(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyAddSign.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyAddSign.java index d7ca57e1dce..1fe2cd756af 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyAddSign.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyAddSign.java @@ -116,6 +116,9 @@ public Output asOutput() { return out; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ApplyAddSign"; + private Output out; private ApplyAddSign(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyCenteredRmsProp.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyCenteredRmsProp.java index fb1735ca92c..22aeeed0d91 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyCenteredRmsProp.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyCenteredRmsProp.java @@ -135,6 +135,9 @@ public Output asOutput() { return out; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ApplyCenteredRMSProp"; + private Output out; private ApplyCenteredRmsProp(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyFtrl.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyFtrl.java index 54c9cab7494..fa89d721ca0 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyFtrl.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyFtrl.java @@ -124,6 +124,9 @@ public Output asOutput() { return out; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ApplyFtrlV2"; + private Output out; private ApplyFtrl(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyGradientDescent.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyGradientDescent.java index 8377b0594e0..729312860fd 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyGradientDescent.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyGradientDescent.java @@ -102,6 +102,9 @@ public Output asOutput() { return out; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ApplyGradientDescent"; + private Output out; private ApplyGradientDescent(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyMomentum.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyMomentum.java index dbd26f4eb9c..d7885da2e32 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyMomentum.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyMomentum.java @@ -136,6 +136,9 @@ public Output asOutput() { return out; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ApplyMomentum"; + private Output out; private ApplyMomentum(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyPowerSign.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyPowerSign.java index c0332c9a840..d508e939714 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyPowerSign.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyPowerSign.java @@ -116,6 +116,9 @@ public Output asOutput() { return out; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ApplyPowerSign"; + private Output out; private ApplyPowerSign(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyProximalAdagrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyProximalAdagrad.java index 0f3e9af018a..bd710eb08ca 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyProximalAdagrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyProximalAdagrad.java @@ -112,6 +112,9 @@ public Output asOutput() { return out; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ApplyProximalAdagrad"; + private Output out; private ApplyProximalAdagrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyProximalGradientDescent.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyProximalGradientDescent.java index 7a28929d7e7..eb5e9a96dc9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyProximalGradientDescent.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyProximalGradientDescent.java @@ -109,6 +109,9 @@ public Output asOutput() { return out; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ApplyProximalGradientDescent"; + private Output out; private ApplyProximalGradientDescent(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyRmsProp.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyRmsProp.java index 53ff4e45b87..388fc062c5d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyRmsProp.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ApplyRmsProp.java @@ -125,6 +125,9 @@ public Output asOutput() { return out; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ApplyRMSProp"; + private Output out; private ApplyRmsProp(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/BatchMatMul.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/BatchMatMul.java index 6e1ae852143..3b6da5b0811 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/BatchMatMul.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/BatchMatMul.java @@ -141,6 +141,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BatchMatMulV2"; + private Output output; private BatchMatMul(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ConditionalAccumulator.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ConditionalAccumulator.java index 3708f037741..f35e9f5001f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ConditionalAccumulator.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ConditionalAccumulator.java @@ -148,6 +148,9 @@ public Output asOutput() { return handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ConditionalAccumulator"; + private Output handle; private ConditionalAccumulator(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/GenerateVocabRemapping.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/GenerateVocabRemapping.java index f1d4fb5d792..e91afa44cd8 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/GenerateVocabRemapping.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/GenerateVocabRemapping.java @@ -137,6 +137,9 @@ public Output numPresent() { return numPresent; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "GenerateVocabRemapping"; + private Output remapping; private Output numPresent; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/MergeV2Checkpoints.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/MergeV2Checkpoints.java index 7807178f138..4fe4a27171a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/MergeV2Checkpoints.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/MergeV2Checkpoints.java @@ -93,6 +93,9 @@ public static Options deleteOldDirs(Boolean deleteOldDirs) { return new Options().deleteOldDirs(deleteOldDirs); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "MergeV2Checkpoints"; + private MergeV2Checkpoints(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/NegTrain.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/NegTrain.java index 1a625589a1d..f43928961a9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/NegTrain.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/NegTrain.java @@ -65,6 +65,9 @@ public static NegTrain create(Scope scope, Operand wIn, Operand asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "PreventGradient"; + private Output output; private PreventGradient(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceAccumulatorApplyGradient.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceAccumulatorApplyGradient.java index ee76a499d06..ca29897ca3d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceAccumulatorApplyGradient.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceAccumulatorApplyGradient.java @@ -53,6 +53,9 @@ public static ResourceAccumulatorApplyGradient create(Scope sc return new ResourceAccumulatorApplyGradient(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceAccumulatorApplyGradient"; + private ResourceAccumulatorApplyGradient(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceAccumulatorNumAccumulated.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceAccumulatorNumAccumulated.java index 3ec9d5dc02c..628a916f659 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceAccumulatorNumAccumulated.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceAccumulatorNumAccumulated.java @@ -59,6 +59,9 @@ public Output asOutput() { return numAccumulated; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceAccumulatorNumAccumulated"; + private Output numAccumulated; private ResourceAccumulatorNumAccumulated(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceAccumulatorSetGlobalStep.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceAccumulatorSetGlobalStep.java index d7f8261bc11..e04784aef48 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceAccumulatorSetGlobalStep.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceAccumulatorSetGlobalStep.java @@ -51,6 +51,9 @@ public static ResourceAccumulatorSetGlobalStep create(Scope scope, Operand ha return new ResourceAccumulatorSetGlobalStep(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceAccumulatorSetGlobalStep"; + private ResourceAccumulatorSetGlobalStep(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceAccumulatorTakeGradient.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceAccumulatorTakeGradient.java index ab334ce4cc0..c27fb1db524 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceAccumulatorTakeGradient.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceAccumulatorTakeGradient.java @@ -74,6 +74,9 @@ public Output asOutput() { return average; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceAccumulatorTakeGradient"; + private Output average; private ResourceAccumulatorTakeGradient(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdaMax.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdaMax.java index c22944b05c8..5efab216739 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdaMax.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdaMax.java @@ -104,6 +104,9 @@ public static Options useLocking(Boolean useLocking) { return new Options().useLocking(useLocking); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceApplyAdaMax"; + private ResourceApplyAdaMax(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdadelta.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdadelta.java index 8a947bc150e..0121155a2ef 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdadelta.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdadelta.java @@ -100,6 +100,9 @@ public static Options useLocking(Boolean useLocking) { return new Options().useLocking(useLocking); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceApplyAdadelta"; + private ResourceApplyAdadelta(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdagrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdagrad.java index 33ae02d0f59..4517528d8db 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdagrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdagrad.java @@ -114,6 +114,9 @@ public static Options updateSlots(Boolean updateSlots) { return new Options().updateSlots(updateSlots); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceApplyAdagradV2"; + private ResourceApplyAdagrad(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdagradDa.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdagradDa.java index ffb77721112..7f5b26056ac 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdagradDa.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdagradDa.java @@ -98,6 +98,9 @@ public static Options useLocking(Boolean useLocking) { return new Options().useLocking(useLocking); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceApplyAdagradDA"; + private ResourceApplyAdagradDa(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdam.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdam.java index 8c68669fc92..20a07b4865d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdam.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdam.java @@ -127,6 +127,9 @@ public static Options useNesterov(Boolean useNesterov) { return new Options().useNesterov(useNesterov); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceApplyAdam"; + private ResourceApplyAdam(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdamWithAmsgrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdamWithAmsgrad.java index 86dcc2d06ef..ec13f10038d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdamWithAmsgrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdamWithAmsgrad.java @@ -111,6 +111,9 @@ public static Options useLocking(Boolean useLocking) { return new Options().useLocking(useLocking); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceApplyAdamWithAmsgrad"; + private ResourceApplyAdamWithAmsgrad(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAddSign.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAddSign.java index 82489d348da..e64354ec3bb 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAddSign.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAddSign.java @@ -101,6 +101,9 @@ public static Options useLocking(Boolean useLocking) { return new Options().useLocking(useLocking); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceApplyAddSign"; + private ResourceApplyAddSign(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyCenteredRmsProp.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyCenteredRmsProp.java index d76224d6022..c4c8d7c9ec7 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyCenteredRmsProp.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyCenteredRmsProp.java @@ -120,6 +120,9 @@ public static Options useLocking(Boolean useLocking) { return new Options().useLocking(useLocking); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceApplyCenteredRMSProp"; + private ResourceApplyCenteredRmsProp(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyFtrl.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyFtrl.java index 7add86848c9..6f321a053b3 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyFtrl.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyFtrl.java @@ -109,6 +109,9 @@ public static Options useLocking(Boolean useLocking) { return new Options().useLocking(useLocking); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceApplyFtrlV2"; + private ResourceApplyFtrl(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyGradientDescent.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyGradientDescent.java index a57d2e90a18..0e495bdd651 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyGradientDescent.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyGradientDescent.java @@ -87,6 +87,9 @@ public static Options useLocking(Boolean useLocking) { return new Options().useLocking(useLocking); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceApplyGradientDescent"; + private ResourceApplyGradientDescent(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyKerasMomentum.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyKerasMomentum.java index e58fd2150cd..3a986d617eb 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyKerasMomentum.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyKerasMomentum.java @@ -121,6 +121,9 @@ public static Options useNesterov(Boolean useNesterov) { return new Options().useNesterov(useNesterov); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceApplyKerasMomentum"; + private ResourceApplyKerasMomentum(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyMomentum.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyMomentum.java index 51af89430d2..bfb176edf28 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyMomentum.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyMomentum.java @@ -121,6 +121,9 @@ public static Options useNesterov(Boolean useNesterov) { return new Options().useNesterov(useNesterov); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceApplyMomentum"; + private ResourceApplyMomentum(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyPowerSign.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyPowerSign.java index 5f035f53935..c1ba8b0ebd7 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyPowerSign.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyPowerSign.java @@ -101,6 +101,9 @@ public static Options useLocking(Boolean useLocking) { return new Options().useLocking(useLocking); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceApplyPowerSign"; + private ResourceApplyPowerSign(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyProximalAdagrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyProximalAdagrad.java index e2197540e94..b51ce4698e1 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyProximalAdagrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyProximalAdagrad.java @@ -97,6 +97,9 @@ public static Options useLocking(Boolean useLocking) { return new Options().useLocking(useLocking); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceApplyProximalAdagrad"; + private ResourceApplyProximalAdagrad(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyProximalGradientDescent.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyProximalGradientDescent.java index d5b9d063a95..7f9c4f4e52c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyProximalGradientDescent.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyProximalGradientDescent.java @@ -94,6 +94,9 @@ public static Options useLocking(Boolean useLocking) { return new Options().useLocking(useLocking); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceApplyProximalGradientDescent"; + private ResourceApplyProximalGradientDescent(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyRmsProp.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyRmsProp.java index f79a1202f6a..4c400f1aaa1 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyRmsProp.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyRmsProp.java @@ -110,6 +110,9 @@ public static Options useLocking(Boolean useLocking) { return new Options().useLocking(useLocking); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceApplyRMSProp"; + private ResourceApplyRmsProp(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceConditionalAccumulator.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceConditionalAccumulator.java index fe27517dee2..2935d3ca6bc 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceConditionalAccumulator.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceConditionalAccumulator.java @@ -149,6 +149,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceConditionalAccumulator"; + private Output handle; private ResourceConditionalAccumulator(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyAdadelta.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyAdadelta.java index d64efcb9474..9a50137d196 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyAdadelta.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyAdadelta.java @@ -98,6 +98,9 @@ public static Options useLocking(Boolean useLocking) { return new Options().useLocking(useLocking); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceSparseApplyAdadelta"; + private ResourceSparseApplyAdadelta(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyAdagrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyAdagrad.java index 6ece72cb637..69a3e775622 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyAdagrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyAdagrad.java @@ -117,6 +117,9 @@ public static Options updateSlots(Boolean updateSlots) { return new Options().updateSlots(updateSlots); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceSparseApplyAdagrad"; + private ResourceSparseApplyAdagrad(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyAdagradDa.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyAdagradDa.java index ad007159e6a..4f3189f074c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyAdagradDa.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyAdagradDa.java @@ -101,6 +101,9 @@ public static Options useLocking(Boolean useLocking) { return new Options().useLocking(useLocking); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceSparseApplyAdagradDA"; + private ResourceSparseApplyAdagradDa(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyAdagradV2.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyAdagradV2.java index f8808aa3980..30e6c19da15 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyAdagradV2.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyAdagradV2.java @@ -118,6 +118,9 @@ public static Options updateSlots(Boolean updateSlots) { return new Options().updateSlots(updateSlots); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceSparseApplyAdagradV2"; + private ResourceSparseApplyAdagradV2(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyCenteredRmsProp.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyCenteredRmsProp.java index e9482879729..ab9b9d3c38d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyCenteredRmsProp.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyCenteredRmsProp.java @@ -121,6 +121,9 @@ public static Options useLocking(Boolean useLocking) { return new Options().useLocking(useLocking); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceSparseApplyCenteredRMSProp"; + private ResourceSparseApplyCenteredRmsProp(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyFtrl.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyFtrl.java index 07f2e12f9b0..3ffcb127a48 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyFtrl.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyFtrl.java @@ -113,6 +113,9 @@ public static Options useLocking(Boolean useLocking) { return new Options().useLocking(useLocking); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceSparseApplyFtrlV2"; + private ResourceSparseApplyFtrl(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyKerasMomentum.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyKerasMomentum.java index e1ff036c295..0284564f78c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyKerasMomentum.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyKerasMomentum.java @@ -126,6 +126,9 @@ public static Options useNesterov(Boolean useNesterov) { return new Options().useNesterov(useNesterov); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceSparseApplyKerasMomentum"; + private ResourceSparseApplyKerasMomentum(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyMomentum.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyMomentum.java index 80c58d282bc..5199932b5bc 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyMomentum.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyMomentum.java @@ -126,6 +126,9 @@ public static Options useNesterov(Boolean useNesterov) { return new Options().useNesterov(useNesterov); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceSparseApplyMomentum"; + private ResourceSparseApplyMomentum(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyProximalAdagrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyProximalAdagrad.java index 75e7ca9e0f1..e235a19f5d1 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyProximalAdagrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyProximalAdagrad.java @@ -102,6 +102,9 @@ public static Options useLocking(Boolean useLocking) { return new Options().useLocking(useLocking); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceSparseApplyProximalAdagrad"; + private ResourceSparseApplyProximalAdagrad(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyProximalGradientDescent.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyProximalGradientDescent.java index bf48496179c..08a9edc01c4 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyProximalGradientDescent.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyProximalGradientDescent.java @@ -98,6 +98,9 @@ public static Options useLocking(Boolean useLocking) { return new Options().useLocking(useLocking); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceSparseApplyProximalGradientDescent"; + private ResourceSparseApplyProximalGradientDescent(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyRmsProp.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyRmsProp.java index 0dc980bb6f8..982e1f30eb7 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyRmsProp.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyRmsProp.java @@ -113,6 +113,9 @@ public static Options useLocking(Boolean useLocking) { return new Options().useLocking(useLocking); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceSparseApplyRMSProp"; + private ResourceSparseApplyRmsProp(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/Restore.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/Restore.java index ecd4a059793..5a2466f501d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/Restore.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/Restore.java @@ -93,6 +93,9 @@ public Iterator> iterator() { return (Iterator) tensors.iterator(); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RestoreV2"; + private List> tensors; private Restore(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/RestoreSlice.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/RestoreSlice.java index e1148129d86..631a127a44f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/RestoreSlice.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/RestoreSlice.java @@ -116,6 +116,9 @@ public Output asOutput() { return tensor; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RestoreSlice"; + private Output tensor; private RestoreSlice(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/Save.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/Save.java index b33f1c1c33b..781714d8121 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/Save.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/Save.java @@ -60,6 +60,9 @@ public static Save create(Scope scope, Operand prefix, Operand return new Save(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SaveV2"; + private Save(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SaveSlices.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SaveSlices.java index 25c91540ede..e8e67190e63 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SaveSlices.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SaveSlices.java @@ -86,6 +86,9 @@ public static SaveSlices create(Scope scope, Operand filename, Operand< return new SaveSlices(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SaveSlices"; + private SaveSlices(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SdcaFprint.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SdcaFprint.java index b5629b59b88..cdee1af05f5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SdcaFprint.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SdcaFprint.java @@ -62,6 +62,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SdcaFprint"; + private Output output; private SdcaFprint(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SdcaOptimizer.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SdcaOptimizer.java index 9cf443dc4d8..a38f6773d7f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SdcaOptimizer.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SdcaOptimizer.java @@ -163,6 +163,9 @@ public List> outDeltaDenseWeights() { return outDeltaDenseWeights; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SdcaOptimizerV2"; + private Output outExampleStateData; private List> outDeltaSparseWeights; private List> outDeltaDenseWeights; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SdcaShrinkL1.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SdcaShrinkL1.java index d531030e063..24c6d53ef9d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SdcaShrinkL1.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SdcaShrinkL1.java @@ -53,6 +53,9 @@ public static SdcaShrinkL1 create(Scope scope, Iterable> weigh return new SdcaShrinkL1(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SdcaShrinkL1"; + private SdcaShrinkL1(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyAdadelta.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyAdadelta.java index 6ed5c2faee3..190449c8ca7 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyAdadelta.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyAdadelta.java @@ -113,6 +113,9 @@ public Output asOutput() { return out; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseApplyAdadelta"; + private Output out; private SparseApplyAdadelta(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyAdagrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyAdagrad.java index 90cbe36a32d..71776f4fd26 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyAdagrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyAdagrad.java @@ -133,6 +133,9 @@ public Output asOutput() { return out; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseApplyAdagradV2"; + private Output out; private SparseApplyAdagrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyAdagradDa.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyAdagradDa.java index 23c791a6d50..7f13dd080dd 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyAdagradDa.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyAdagradDa.java @@ -116,6 +116,9 @@ public Output asOutput() { return out; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseApplyAdagradDA"; + private Output out; private SparseApplyAdagradDa(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyCenteredRmsProp.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyCenteredRmsProp.java index 367de145c5e..b73275139d1 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyCenteredRmsProp.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyCenteredRmsProp.java @@ -136,6 +136,9 @@ public Output asOutput() { return out; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseApplyCenteredRMSProp"; + private Output out; private SparseApplyCenteredRmsProp(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyFtrl.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyFtrl.java index defb68856e6..b8bd88a291a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyFtrl.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyFtrl.java @@ -128,6 +128,9 @@ public Output asOutput() { return out; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseApplyFtrlV2"; + private Output out; private SparseApplyFtrl(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyMomentum.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyMomentum.java index ebd4d0e7c14..5e8bf197092 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyMomentum.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyMomentum.java @@ -141,6 +141,9 @@ public Output asOutput() { return out; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseApplyMomentum"; + private Output out; private SparseApplyMomentum(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyProximalAdagrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyProximalAdagrad.java index 0a73d0a138c..19ede0d5f71 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyProximalAdagrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyProximalAdagrad.java @@ -117,6 +117,9 @@ public Output asOutput() { return out; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseApplyProximalAdagrad"; + private Output out; private SparseApplyProximalAdagrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyProximalGradientDescent.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyProximalGradientDescent.java index 2a4ef9f900b..14735403f02 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyProximalGradientDescent.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyProximalGradientDescent.java @@ -113,6 +113,9 @@ public Output asOutput() { return out; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseApplyProximalGradientDescent"; + private Output out; private SparseApplyProximalGradientDescent(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyRmsProp.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyRmsProp.java index 5205086b7dd..c0b39b65e5e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyRmsProp.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SparseApplyRmsProp.java @@ -128,6 +128,9 @@ public Output asOutput() { return out; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseApplyRMSProp"; + private Output out; private SparseApplyRmsProp(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/TileGrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/TileGrad.java index 42d68f0f59b..1bcfde7b183 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/TileGrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/TileGrad.java @@ -68,6 +68,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TileGrad"; + private Output output; private TileGrad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/BroadcastHelper.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/BroadcastHelper.java index 1d8b4fe476b..e06919d04bd 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/BroadcastHelper.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/BroadcastHelper.java @@ -73,6 +73,9 @@ public Output rhsOutput() { return rhsOutput; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "XlaBroadcastHelper"; + private Output lhsOutput; private Output rhsOutput; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/ClusterOutput.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/ClusterOutput.java index 21a978fc7a8..717b65c931e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/ClusterOutput.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/ClusterOutput.java @@ -61,6 +61,9 @@ public Output asOutput() { return outputs; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "XlaClusterOutput"; + private Output outputs; private ClusterOutput(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Conv.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Conv.java index 7727cf1e9ac..05cec5b6d51 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Conv.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Conv.java @@ -81,6 +81,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "XlaConv"; + private Output output; private Conv(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Dequantize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Dequantize.java index 751e47f4d5b..f8cdec66d1f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Dequantize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Dequantize.java @@ -73,6 +73,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "XlaDequantize"; + private Output output; private Dequantize(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Dot.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Dot.java index 0f3e1ef83df..9cb83d061cb 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Dot.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Dot.java @@ -70,6 +70,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "XlaDot"; + private Output output; private Dot(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/DynamicSlice.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/DynamicSlice.java index b6ecba31189..b9e2bebf9b8 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/DynamicSlice.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/DynamicSlice.java @@ -78,6 +78,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "XlaDynamicSlice"; + private Output output; private DynamicSlice(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/DynamicUpdateSlice.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/DynamicUpdateSlice.java index b974b64196e..dccbdd10da8 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/DynamicUpdateSlice.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/DynamicUpdateSlice.java @@ -78,6 +78,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "XlaDynamicUpdateSlice"; + private Output output; private DynamicUpdateSlice(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Einsum.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Einsum.java index f5bf706641a..451fb27bc49 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Einsum.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Einsum.java @@ -68,6 +68,9 @@ public Output asOutput() { return product; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "XlaEinsum"; + private Output product; private Einsum(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Gather.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Gather.java index d5b3298b395..9daa1808620 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Gather.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Gather.java @@ -72,6 +72,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "XlaGather"; + private Output output; private Gather(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/KeyValueSort.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/KeyValueSort.java index 9fd5e4c774d..d1cf154bd8a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/KeyValueSort.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/KeyValueSort.java @@ -73,6 +73,9 @@ public Output sortedValues() { return sortedValues; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "XlaKeyValueSort"; + private Output sortedKeys; private Output sortedValues; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Pad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Pad.java index eafaf001168..c56631c48f2 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Pad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Pad.java @@ -74,6 +74,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "XlaPad"; + private Output output; private Pad(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Recv.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Recv.java index 03274eb84e6..fe26ee27587 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Recv.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Recv.java @@ -71,6 +71,9 @@ public Output asOutput() { return tensor; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "XlaRecv"; + private Output tensor; private Recv(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/ReplicaId.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/ReplicaId.java index a27b87f6c1a..886cc40b3ab 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/ReplicaId.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/ReplicaId.java @@ -57,6 +57,9 @@ public Output asOutput() { return id; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "XlaReplicaId"; + private Output id; private ReplicaId(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/SelfAdjointEig.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/SelfAdjointEig.java index abbecd3e54b..9ce4468fdfe 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/SelfAdjointEig.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/SelfAdjointEig.java @@ -82,6 +82,9 @@ public Output v() { return v; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "XlaSelfAdjointEig"; + private Output w; private Output v; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Send.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Send.java index 3e060842de3..d1172f8e96f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Send.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Send.java @@ -52,6 +52,9 @@ public static Send create(Scope scope, Operand tensor, Stri return new Send(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "XlaSend"; + private Send(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Sharding.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Sharding.java index d8d879183d2..dbc255aa607 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Sharding.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Sharding.java @@ -61,6 +61,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "XlaSharding"; + private Output output; private Sharding(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Sort.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Sort.java index abafbd5e286..d7f9aae6449 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Sort.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Sort.java @@ -67,6 +67,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "XlaSort"; + private Output output; private Sort(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Svd.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Svd.java index e3571702151..cd0a67f33b4 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Svd.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Svd.java @@ -86,6 +86,9 @@ public Output v() { return v; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "XlaSvd"; + private Output s; private Output u; private Output v; From 208b84a1a09d38ab9821d66572c1328326685c5a Mon Sep 17 00:00:00 2001 From: Jim Clarke Date: Thu, 20 Aug 2020 10:42:22 -0400 Subject: [PATCH 09/33] fix dependencies for other Tensorflow Java modules --- tensorflow-keras/pom.xml | 29 +++-------------------------- 1 file changed, 3 insertions(+), 26 deletions(-) diff --git a/tensorflow-keras/pom.xml b/tensorflow-keras/pom.xml index c314b53bcc0..b33d1201fd9 100644 --- a/tensorflow-keras/pom.xml +++ b/tensorflow-keras/pom.xml @@ -27,22 +27,17 @@ tensorflow-keras jar - TensorFlow Keras Library + Java implementation of the TensorFlow Keras API + - Java implementation of the TensorFlow Keras API org.tensorflow - tensorflow-core-api - ${project.version} - - - org.tensorflow - tensorflow-core-generator + tensorflow-core-platform ${project.version} @@ -50,18 +45,6 @@ tensorflow-framework ${project.version} - - org.tensorflow - ndarray - ${project.version} - - - - com.google.protobuf - protobuf-java - 3.11.4 - - org.json json @@ -73,12 +56,6 @@ commons-csv 1.8 - - - org.tensorflow - tensorflow-core-platform - ${project.version} - org.junit.jupiter junit-jupiter-api From 39131619f3a4c970f5f62dacdbaa93ac3f9bf996 Mon Sep 17 00:00:00 2001 From: Jim Clarke Date: Thu, 20 Aug 2020 10:46:20 -0400 Subject: [PATCH 10/33] formatting fix --- .../java/org/tensorflow/keras/utils/EagerTestSession.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/utils/EagerTestSession.java b/tensorflow-keras/src/test/java/org/tensorflow/keras/utils/EagerTestSession.java index 3bc8091811a..6b7ebf9e2f2 100644 --- a/tensorflow-keras/src/test/java/org/tensorflow/keras/utils/EagerTestSession.java +++ b/tensorflow-keras/src/test/java/org/tensorflow/keras/utils/EagerTestSession.java @@ -56,10 +56,10 @@ public Ops getTF() { return tf; } - /** - * Get the TensorFlow EagerSession instance - * @return the TensorFlow EagerSession instance - */ + /** + * Get the TensorFlow EagerSession instance + * @return the TensorFlow EagerSession instance + */ public EagerSession getSession() { return session; } From b5a7c0f9f54acf1fb0f57003027aa0843ae67c82 Mon Sep 17 00:00:00 2001 From: Jim Clarke Date: Thu, 20 Aug 2020 10:48:23 -0400 Subject: [PATCH 11/33] Fix ctors with name to properly pass the name to the the super ctor. --- .../keras/{optimizer => optimizers}/AdaDelta.java | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) rename tensorflow-keras/src/main/java/org/tensorflow/keras/{optimizer => optimizers}/AdaDelta.java (92%) diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/AdaDelta.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/AdaDelta.java similarity index 92% rename from tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/AdaDelta.java rename to tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/AdaDelta.java index f02d2664759..b0a9dcf7d68 100644 --- a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/AdaDelta.java +++ b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/AdaDelta.java @@ -19,7 +19,6 @@ import java.util.List; import java.util.Map; import java.util.Optional; -import org.tensorflow.keras.backend.tf.ControlDependencies; import static org.tensorflow.keras.optimizers.OptimizerInterface.assertGraph; import org.tensorflow.op.Op; import org.tensorflow.op.Ops; @@ -33,7 +32,6 @@ *

Two accumulation steps are required: 1) the accumulation of gradients squared, 2) the * accumulation of updates squared. * - * @param The Type for the call operation */ public class AdaDelta extends org.tensorflow.framework.optimizers.AdaDelta implements OptimizerInterface { @@ -69,7 +67,7 @@ public AdaDelta(Ops tf) { * @param name the name of the Optimizer, defaults to "Adadelta" */ public AdaDelta(Ops tf, String name) { - this(tf, LEARNING_RATE_DEFAULT, RHO_DEFAULT, EPSILON_DEFAULT); + this(tf, name, LEARNING_RATE_DEFAULT, RHO_DEFAULT, EPSILON_DEFAULT); } /** @@ -90,7 +88,7 @@ public AdaDelta(Ops tf, float learningRate) { * @param learningRate The learning rate */ public AdaDelta(Ops tf, String name, float learningRate) { - this(tf, learningRate, RHO_DEFAULT, EPSILON_DEFAULT); + this(tf, name, learningRate, RHO_DEFAULT, EPSILON_DEFAULT); } /** @@ -129,15 +127,14 @@ protected Optional prepare(String name) { case 1: return Optional.of(initializers.get(0)); default: - return Optional.of( - ControlDependencies.addControlDependencies(tf, this.getOptimizerName(), initializers)); + return Optional.of( tf.withSubScope(name).withControlDependencies(initializers).noOp()); } } /** * Create an Adam Optimizer from a config object * - * @param graph the tensorflow graph + * @param tf the tensorflow Ops * @param config a config object to initialize, he config object has keys for "name", * "learning_rate", "rho" and "epsilon". If a key is missing the default value is used. */ @@ -148,7 +145,8 @@ public static AdaDelta fromConfig(Ops tf, Map config) { /** * Create an Adadelta optimizer * - * @param graph the tensorflow graph @@param config a config object to initialize, the config + * @param tf the tensorflow Ops + * @param config a config object to initialize, the config * object has keys for "name", "learning_rate", "rho" and "epsilon". If a key is missing the * default value is used. */ From fcba0a525d4712fca5210db71c141bc1bce87307 Mon Sep 17 00:00:00 2001 From: Jim Clarke Date: Thu, 20 Aug 2020 13:04:27 -0400 Subject: [PATCH 12/33] change asserts to IllegalArgumentException fix javadoc, fix casts --- .../{optimizer => optimizers}/Nadam.java | 47 +++++++++---------- 1 file changed, 22 insertions(+), 25 deletions(-) rename tensorflow-keras/src/main/java/org/tensorflow/keras/{optimizer => optimizers}/Nadam.java (92%) diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/Nadam.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/Nadam.java similarity index 92% rename from tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/Nadam.java rename to tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/Nadam.java index 4772c247ef8..a2eba4ecb49 100644 --- a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/Nadam.java +++ b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/Nadam.java @@ -18,15 +18,15 @@ import java.util.List; import java.util.Map; import java.util.Optional; + +import org.tensorflow.DataType; import org.tensorflow.Graph; import org.tensorflow.Operand; import org.tensorflow.Output; -import static org.tensorflow.keras.optimizers.OptimizerInterface.NAME_KEY; import static org.tensorflow.keras.optimizers.OptimizerInterface.assertGraph; import org.tensorflow.ndarray.Shape; import org.tensorflow.op.Op; import org.tensorflow.op.Ops; -import org.tensorflow.op.Scope; import org.tensorflow.op.core.Assign; import org.tensorflow.op.core.Constant; import org.tensorflow.op.core.Variable; @@ -52,7 +52,6 @@ public class Nadam extends org.tensorflow.framework.optimizers.Optimizer public static final float BETA_ONE_DEFAULT = 0.9F; public static final float BETA_TWO_DEFAULT = 0.999F; - private Scope scope; private final Map config = new HashMap<>(); private float learningRate; @@ -144,7 +143,6 @@ public Nadam(Ops tf, float learningRate, float betaOne, float betaTwo, float eps this.betaOne = betaOne; this.betaTwo = betaTwo; this.epsilon = epsilon; - this.scope = tf.scope(); initConfig(learningRate, betaOne, betaTwo, epsilon); } @@ -165,7 +163,6 @@ public Nadam( this.betaOne = betaOne; this.betaTwo = betaTwo; this.epsilon = epsilon; - this.scope = tf.scope(); initConfig(learningRate, betaOne, betaTwo, epsilon); } @@ -228,6 +225,7 @@ protected void createSlots(List> variables) { /** * Create slots for first and second momements and momentum + * * @param v the variable * @param the data type or the Variable */ @@ -247,8 +245,8 @@ private void createNadamSlot(Output v) { /** {@inheritDoc} */ @Override protected Optional prepare(String scopeName) { - Constant one = tf.constant(1.0F); - Constant point5 = tf.constant(0.5F); + Constant one = tf.constant(1.0F); + Constant point5 = tf.constant(0.5F); learningRateConst = tf.constant(learningRate); betaOneConst = tf.constant(betaOne); @@ -310,47 +308,50 @@ protected Optional prepare(String scopeName) { /** {@inheritDoc} */ @Override protected Op applyDense(Output gradient, Output variable) { + DataType dType = gradient.dataType(); Variable m = getSlot(variable, FIRST_MOMENT).get(); // first Moment Variable v = getSlot(variable, SECOND_MOMENT).get(); // Second Moment // g_prime = grad / coefficients['one_minus_m_schedule_new'] - Operand g_prime = tf.math.div((Operand) gradient, one_minus_m_schedule_new); + Operand g_prime = tf.math.div(gradient, tf.dtypes.cast(one_minus_m_schedule_new, dType)); // m_t = (coefficients['beta_1_t'] * m + coefficients['one_minus_beta_1_t'] * grad) - Operand m_t = + Operand m_t = tf.math.add( - tf.math.mul(betaOneConst, (Operand) m), - tf.math.mul(one_minus_beta_1, (Operand) gradient)); + tf.math.mul(tf.dtypes.cast(betaOneConst, dType), m), + tf.math.mul(tf.dtypes.cast(one_minus_beta_1, dType), gradient)); // m_t = state_ops.assign(m, m_t, use_locking=self._use_locking) // update m m_t = tf.assign(m, m_t, Assign.useLocking(true)); // m_t_prime = m_t / coefficients['one_minus_m_schedule_next'] - Operand m_t_prime = tf.math.div(m_t, one_minus_m_schedule_next); + Operand m_t_prime = tf.math.div(m_t, tf.dtypes.cast(one_minus_m_schedule_next, dType)); // v_t = (coefficients['beta_2_t'] * v + coefficients['one_minus_beta_2_t'] * // math_ops.square(grad)) - Operand v_t = + Operand v_t = tf.math.add( - tf.math.mul(betaTwoConst, (Operand) v), - tf.math.mul(one_minus_beta_2, tf.math.square((Operand) gradient))); + tf.math.mul(tf.dtypes.cast(betaTwoConst, dType), v), + tf.math.mul(tf.dtypes.cast(one_minus_beta_2, dType), tf.math.square(gradient))); // v_t = state_ops.assign(v, v_t, use_locking=self._use_locking) // update v v_t = tf.assign(v, v_t, Assign.useLocking(true)); // v_t_prime = v_t / coefficients['v_t_prime_denominator'] - Operand v_t_prime = tf.math.div(v_t, v_t_prime_denominator); + Operand v_t_prime = tf.math.div(v_t, tf.dtypes.cast(v_t_prime_denominator, dType)); // m_t_bar = (coefficients['one_minus_m_t'] * g_prime + coefficients['m_t_1'] * m_t_prime) - Operand m_t_bar = - tf.math.add(tf.math.mul(one_minus_m_t, g_prime), tf.math.mul(m_t_1, m_t_prime)); + Operand m_t_bar = + tf.math.add( + tf.math.mul(tf.dtypes.cast(one_minus_m_t, dType), g_prime), + tf.math.mul(tf.dtypes.cast(m_t_1, dType), m_t_prime)); // var_t = var - coefficients['lr_t'] * m_t_bar / (math_ops.sqrt(v_t_prime) + // coefficients['epsilon']) - Operand var_t = + Operand var_t = tf.math.sub( variable, tf.math.div( - tf.math.mul(learningRateConst, m_t_bar), - tf.math.add(tf.math.sqrt(v_t_prime), epsilonConst))); + tf.math.mul(tf.dtypes.cast(learningRateConst, dType), m_t_bar), + tf.math.add(tf.math.sqrt(v_t_prime), tf.dtypes.cast(epsilonConst, dType)))); // assign(var, var_t, use_locking=self._use_locking) return tf.assign(variable, var_t, Assign.useLocking(true)); } @@ -395,8 +396,4 @@ private void initConfig(float learningRate, float betaOne, float betaTwo, float config.put(BETA_ONE_KEY, betaOne); config.put(BETA_TWO_KEY, betaTwo); } - - private float calcM(int iteration) { - return betaOne * (1 - .05F * (float) Math.pow(this.decayBase, this.decay * iteration)); - } } From 960cfc3ca4e010fca3bd549df6d16a17fb0b22bc Mon Sep 17 00:00:00 2001 From: Jim Clarke Date: Thu, 20 Aug 2020 13:05:22 -0400 Subject: [PATCH 13/33] change asserts to IllegalArgumentException --- .../{optimizer => optimizers}/AdaGrad.java | 12 +++---- .../{optimizer => optimizers}/AdaGradDA.java | 21 ++++++----- .../keras/{optimizer => optimizers}/Adam.java | 0 .../{optimizer => optimizers}/Adamax.java | 0 .../keras/{optimizer => optimizers}/Ftrl.java | 36 +++++++++++-------- .../OptimizerInterface.java | 16 +++++---- .../{optimizer => optimizers}/Optimizers.java | 35 +++++++++--------- .../{optimizer => optimizers}/RMSProp.java | 0 .../keras/{optimizer => optimizers}/SGD.java | 7 ++-- 9 files changed, 71 insertions(+), 56 deletions(-) rename tensorflow-keras/src/main/java/org/tensorflow/keras/{optimizer => optimizers}/AdaGrad.java (94%) rename tensorflow-keras/src/main/java/org/tensorflow/keras/{optimizer => optimizers}/AdaGradDA.java (88%) rename tensorflow-keras/src/main/java/org/tensorflow/keras/{optimizer => optimizers}/Adam.java (100%) rename tensorflow-keras/src/main/java/org/tensorflow/keras/{optimizer => optimizers}/Adamax.java (100%) rename tensorflow-keras/src/main/java/org/tensorflow/keras/{optimizer => optimizers}/Ftrl.java (87%) rename tensorflow-keras/src/main/java/org/tensorflow/keras/{optimizer => optimizers}/OptimizerInterface.java (76%) rename tensorflow-keras/src/main/java/org/tensorflow/keras/{optimizer => optimizers}/Optimizers.java (80%) rename tensorflow-keras/src/main/java/org/tensorflow/keras/{optimizer => optimizers}/RMSProp.java (100%) rename tensorflow-keras/src/main/java/org/tensorflow/keras/{optimizer => optimizers}/SGD.java (96%) diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/AdaGrad.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/AdaGrad.java similarity index 94% rename from tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/AdaGrad.java rename to tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/AdaGrad.java index 6010a95b199..039cf4a0d82 100644 --- a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/AdaGrad.java +++ b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/AdaGrad.java @@ -99,15 +99,15 @@ public AdaGrad(Ops tf, float learningRate, float initialAccumulatorValue) { */ public AdaGrad(Ops tf, String name, float learningRate, float initialAccumulatorValue) { super(assertGraph(tf), name, learningRate, initialAccumulatorValue); - assert initialAccumulatorValue >= 0.0F - : "initial_accumulator_value must be non-negative: " + initialAccumulatorValue; + if(initialAccumulatorValue < 0.0F) + throw new IllegalArgumentException( "initial_accumulator_value must be non-negative: " + initialAccumulatorValue); initConfig(learningRate, initialAccumulatorValue); } /** * Create an AdaGrad Optimizer from a config object * - * @param graph the tensorflow graph + * @param tf the TensorFlow Ops * @param config a config object to initialize, , the config object has keys for "name", * "learning_rate" and "accumulator". If a key is missing the default value is used. */ @@ -118,7 +118,7 @@ public static AdaGrad fromConfig(Ops tf, Map config) { /** * Create an AdaGrad Optimizer from a config object * - * @param graph the tensorflow graph + * @param tf the TensorFlow Ops * @param config a config object to initialize, the config object has keys for "name", * "learning_rate" and "accumulator". If a key is missing the default value is used. */ @@ -137,8 +137,8 @@ public static AdaGrad create(Ops tf, Map config) { /** * Initialize the configuration * - * @param learningRate - * @param initialAccumulatorValue + * @param learningRate the learning rate + * @param initialAccumulatorValue the initial Accumulator value */ private void initConfig(float learningRate, float initialAccumulatorValue) { this.learningRate = learningRate; diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/AdaGradDA.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/AdaGradDA.java similarity index 88% rename from tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/AdaGradDA.java rename to tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/AdaGradDA.java index d7ee03338c8..2f15024bf56 100644 --- a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/AdaGradDA.java +++ b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/AdaGradDA.java @@ -85,10 +85,12 @@ public AdaGradDA( float l1Strength, float l2Strength) { super(assertGraph(tf), learningRate, initialAccumulatorValue, l1Strength, l2Strength); - assert initialAccumulatorValue >= 0.0F - : "initial_accumulator_value must be non-negative: " + initialAccumulatorValue; - assert l1Strength >= 0.0F : "l1Strength must be non-negative: " + l1Strength; - assert l2Strength >= 0.0F : "l2Strength must be non-negative: " + l2Strength; + if( initialAccumulatorValue < 0.0F) + throw new IllegalArgumentException("initial_accumulator_value must be non-negative: " + initialAccumulatorValue); + if(l1Strength < 0) + throw new IllegalArgumentException("l1Strength must be non-negative: " + l1Strength); + if(l2Strength < 0) + throw new IllegalArgumentException("l2Strength must be non-negative: " + l2Strength); initConfig(learningRate, initialAccumulatorValue, l1Strength, l2Strength); } @@ -110,10 +112,13 @@ public AdaGradDA( float l1Strength, float l2Strength) { super(assertGraph(tf), name, learningRate, initialAccumulatorValue, l1Strength, l2Strength); - assert initialAccumulatorValue >= 0.0F - : "initial_accumulator_value must be non-negative: " + initialAccumulatorValue; - assert l1Strength >= 0.0F : "l1Strength must be non-negative: " + l1Strength; - assert l2Strength >= 0.0F : "l2Strength must be non-negative: " + l2Strength; + if( initialAccumulatorValue < 0.0F) + throw new IllegalArgumentException("initial_accumulator_value must be non-negative: " + initialAccumulatorValue); + if(l1Strength < 0) + throw new IllegalArgumentException("l1Strength must be non-negative: " + l1Strength); + if(l2Strength < 0) + throw new IllegalArgumentException("l2Strength must be non-negative: " + l2Strength); + initConfig(learningRate, initialAccumulatorValue, l1Strength, l2Strength); initConfig(learningRate, initialAccumulatorValue, l1Strength, l2Strength); } diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/Adam.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/Adam.java similarity index 100% rename from tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/Adam.java rename to tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/Adam.java diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/Adamax.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/Adamax.java similarity index 100% rename from tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/Adamax.java rename to tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/Adamax.java diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/Ftrl.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/Ftrl.java similarity index 87% rename from tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/Ftrl.java rename to tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/Ftrl.java index aec7af8d6c9..db73f60c77e 100644 --- a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/Ftrl.java +++ b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/Ftrl.java @@ -31,7 +31,7 @@ import org.tensorflow.types.TFloat32; import org.tensorflow.types.family.TType; -/** Ftrl Optimizer that implements the FTRL algorithm. */ +/** Ftrl (Follow the Regularized Leader) Optimizer that implements the FTRL algorithm. */ public class Ftrl extends org.tensorflow.framework.optimizers.Optimizer implements OptimizerInterface { @@ -140,11 +140,15 @@ public Ftrl(Ops tf, String name, float learningRate) { * * @param tf the TensorFlow Ops * @param learningRate the learning rate - * @param learningRatePower - * @param initialAccumulatorValue - * @param l1Strength - * @param l2Strength - * @param l2ShrinkageRegularizationStrength + * @param learningRatePower Controls how the learning rate decreases during training. Use zero for + * a fixed learning rate. + * @param initialAccumulatorValue The starting value for accumulators. Only zero or positive + * values are allowed. + * @param l1Strength the L1 Regularization strength, must be greater than or equal to zero. + * @param l2Strength the L2 Regularization strength, must be greater than or equal to zero. + * @param l2ShrinkageRegularizationStrength This differs from L2 above in that the L2 above is a + * stabilization penalty, whereas this L2 shrinkage is a magnitude penalty. must be greater + * than or equal to zero. */ public Ftrl( Ops tf, @@ -170,13 +174,17 @@ public Ftrl( * Create a Ftrl Optimizer * * @param tf the TensorFlow Ops - * @param name the Optmizer name + * @param name the name of this Ftrl Optimizer * @param learningRate the learning rate - * @param learningRatePower - * @param initialAccumulatorValue - * @param l1Strength - * @param l2Strength - * @param l2ShrinkageRegularizationStrength + * @param learningRatePower Controls how the learning rate decreases during training. Use zero for + * a fixed learning rate. + * @param initialAccumulatorValue The starting value for accumulators. Only zero or positive + * values are allowed. + * @param l1Strength the L1 Regularization strength, must be greater than or equal to zero. + * @param l2Strength the L2 Regularization strength, must be greater than or equal to zero. + * @param l2ShrinkageRegularizationStrength This differs from L2 above in that the L2 above is a + * stabilization penalty, whereas this L2 shrinkage is a magnitude penalty. must be greater + * than or equal to zero. */ public Ftrl( Ops tf, @@ -199,8 +207,6 @@ public Ftrl( initConfig(); } - - /** * Create a Ftrl Optmizer * @@ -325,7 +331,7 @@ protected Op applyDense(Output gradient, Output variable accumSlot, // accum linearSlot, // linear gradient, // gradient - tf.dtypes.cast(tf.constant(learningRate), gradient.dataType()), // lr + tf.dtypes.cast(tf.constant(learningRate), gradient.dataType()), // lr tf.dtypes.cast(tf.constant(l1RegularizationStrength), gradient.dataType()), // l1 tf.dtypes.cast(tf.constant(l2RegularizationStrength), gradient.dataType()), // l2 tf.dtypes.cast( diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/OptimizerInterface.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/OptimizerInterface.java similarity index 76% rename from tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/OptimizerInterface.java rename to tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/OptimizerInterface.java index 9e3223deb80..0074ecb0f0a 100644 --- a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/OptimizerInterface.java +++ b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/OptimizerInterface.java @@ -22,17 +22,19 @@ public interface OptimizerInterface { /** The value for the name key in the Config object */ - public static final String NAME_KEY = "name"; + String NAME_KEY = "name"; /** * Get a TensorFlow Graph from the Ops. * * @param tf the TensorFlow Ops * @return the graph - * @throws java.lang.AssertionError if the TensorFlow Ops does not represent Graph mode + * @throws java.lang.IllegalArgumentException if the TensorFlow Ops does not represent Graph mode */ - public static Graph assertGraph(Ops tf) { - assert tf.scope().env().isGraph() : "Optimizers can only be used in Graph Mode"; + static Graph assertGraph(Ops tf) { + if(!tf.scope().env().isGraph()) { + throw new IllegalArgumentException("Invalid environment, Optimizers can only be used in Graph Mode"); + } return (Graph) tf.scope().env(); } @@ -41,19 +43,19 @@ public static Graph assertGraph(Ops tf) { * * @return the config object used to initialize the Optimizer */ - public Map getConfig(); + Map getConfig(); /** * Return the current learning rate * * @return the current learning rate */ - public float getLearningRate(); + float getLearningRate(); /** * Set the learning rate * * @param learningRate the learning rate; */ - public void setLearningRate(float learningRate); + void setLearningRate(float learningRate); } diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/Optimizers.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/Optimizers.java similarity index 80% rename from tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/Optimizers.java rename to tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/Optimizers.java index 3892e239dad..1facb307b38 100644 --- a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/Optimizers.java +++ b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/Optimizers.java @@ -41,15 +41,15 @@ public class Optimizers { static Map> map = new HashMap>() { { - put("adadelta", tf -> new AdaDelta(tf)); - put("adagrad", tf -> new AdaGrad(tf)); - put("adagrad-da", tf -> new AdaGradDA(tf)); - put("adam", tf -> new Adam(tf)); - put("adamax", tf -> new Adamax(tf)); - put("ftrl", tf -> new Ftrl(tf)); - put("nadam", tf -> new Nadam(tf)); - put("rmsprop", tf -> new RMSProp(tf)); - put("sgd", tf -> new SGD(tf)); + put("adadelta", AdaDelta::new); + put("adagrad", AdaGrad::new); + put("adagrad-da", AdaGradDA::new); + put("adam", Adam::new); + put("adamax", Adamax::new); + put("ftrl", Ftrl::new); + put("nadam", Nadam::new); + put("rmsprop", RMSProp::new); + put("sgd", SGD::new); } }; @@ -65,9 +65,9 @@ public static Optimizer get(Ops tf, Object optimizerFunction) { } /** - * Get an Initializer + * Get an Optimizer * - * @param si a lamda function + * @param func a lamda function that returns the Optimizer * @return the Intializer object */ public static Optimizer get(Ops tf, Function func) { @@ -75,10 +75,11 @@ public static Optimizer get(Ops tf, Function func) { } /** - * Get an Initializer + * Get an Optimizer * - * @param optimizerFunction - * @param custom_functions a map of Initializer lambdas that will be queried if the Optimizer is + * @param optimizerFunction either a String that identifies the Optimizer, an Optimizer class, or + * * an Optimizer object. + * @param custom_functions a map of Optimizer lambdas that will be queried if the Optimizer is * not found in the standard keys * @return the Optimizer object */ @@ -95,10 +96,10 @@ public static Optimizer get( } return function != null ? function.apply(tf) : null; } else if (optimizerFunction instanceof Class) { - Class c = (Class) optimizerFunction; // do this for Java 8 rather than Pattern Matching for - // instanceof + // do this for Java 8 rather than Pattern Matching for instanceof + Class c = (Class) optimizerFunction; try { - Constructor ctor = c.getConstructor(Ops.class); + Constructor ctor = c.getConstructor(Ops.class); return (Optimizer) ctor.newInstance(tf); } catch (NoSuchMethodException | InstantiationException diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/RMSProp.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/RMSProp.java similarity index 100% rename from tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/RMSProp.java rename to tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/RMSProp.java diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/SGD.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/SGD.java similarity index 96% rename from tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/SGD.java rename to tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/SGD.java index 2faf777b4ad..f89682f6820 100644 --- a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizer/SGD.java +++ b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/SGD.java @@ -16,7 +16,6 @@ import java.util.HashMap; import java.util.Map; -import static org.tensorflow.keras.optimizers.OptimizerInterface.NAME_KEY; import static org.tensorflow.keras.optimizers.OptimizerInterface.assertGraph; import org.tensorflow.op.Ops; @@ -103,7 +102,8 @@ public SGD(Ops tf, String name, float learningRate, float momentum) { */ public SGD(Ops tf, float learningRate, float momentum, boolean useNesterov) { super(assertGraph(tf), learningRate, momentum, useNesterov); - assert momentum >= 0.0F && momentum <= 1.0F : "\"momentum\" must be between [0, 1]."; + if(momentum < 0 || momentum > 1) + throw new IllegalArgumentException("\"momentum\" must be between [0, 1]."); initConfig(learningRate, momentum, useNesterov); } @@ -119,7 +119,8 @@ public SGD(Ops tf, float learningRate, float momentum, boolean useNesterov) { */ public SGD(Ops tf, String name, float learningRate, float momentum, boolean useNesterov) { super(assertGraph(tf), name, learningRate, momentum, useNesterov); - assert momentum >= 0.0F && momentum <= 1.0F : "\"momentum\" must be between [0, 1]."; + if(momentum < 0 || momentum > 1) + throw new IllegalArgumentException("\"momentum\" must be between [0, 1]."); initConfig(learningRate, momentum, useNesterov); } From d37298a6b9dcb206cdff985b96e340f7f93a075c Mon Sep 17 00:00:00 2001 From: Jim Clarke Date: Thu, 20 Aug 2020 13:06:58 -0400 Subject: [PATCH 14/33] Moved back to tests --- .../java/org/tensorflow/keras/utils/ND.java | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) rename tensorflow-keras/src/{main => test}/java/org/tensorflow/keras/utils/ND.java (95%) diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/ND.java b/tensorflow-keras/src/test/java/org/tensorflow/keras/utils/ND.java similarity index 95% rename from tensorflow-keras/src/main/java/org/tensorflow/keras/utils/ND.java rename to tensorflow-keras/src/test/java/org/tensorflow/keras/utils/ND.java index f04ed7bcd70..2855af5af25 100644 --- a/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/ND.java +++ b/tensorflow-keras/src/test/java/org/tensorflow/keras/utils/ND.java @@ -126,7 +126,8 @@ public static FloatNdArray square(FloatNdArray a) { * @return the resulting array from the add operation */ public static FloatNdArray add(FloatNdArray a, FloatNdArray b) { - assert (a.shape().size() == b.shape().size()); + if(a.shape().size() != b.shape().size()) + throw new IllegalArgumentException("a and b muse have the same number of dimensions"); FloatNdArray result = NdArrays.ofFloats(a.shape()); int nDims = a.shape().numDimensions(); a.elements(nDims - 1) @@ -175,7 +176,8 @@ public static FloatNdArray add(float scalar, FloatNdArray a) { * @return the resulting array from the subtraction operation */ public static FloatNdArray sub(FloatNdArray a, FloatNdArray b) { - assert (a.shape().size() == b.shape().size()); + if(a.shape().size() != b.shape().size()) + throw new IllegalArgumentException("a and b muse have the same number of dimensions"); FloatNdArray result = NdArrays.ofFloats(a.shape()); int nDims = a.shape().numDimensions(); a.elements(nDims - 1) @@ -230,9 +232,9 @@ public static FloatNdArray sub(float scalar, FloatNdArray a) { * @return the resulting array from the muliply operation */ public static FloatNdArray mul(FloatNdArray a, FloatNdArray b) { - assert a.shape().equals(b.shape()) - : String.format( - "ValueError: operands do not have same shapes %s %s ", a.shape(), b.shape()); + if(!a.shape().equals(b.shape())) + throw new IllegalArgumentException(String.format( + "ValueError: operands do not have same shapes %s %s ", a.shape(), b.shape())); boolean sameSize = a.shape().size() == b.shape().size(); FloatNdArray result = NdArrays.ofFloats(a.shape()); int nDims = a.shape().numDimensions(); @@ -287,7 +289,8 @@ public static FloatNdArray mul(float scalar, FloatNdArray a) { * @return the resulting array from the Divide operation */ public static FloatNdArray div(FloatNdArray a, FloatNdArray b) { - assert (a.shape().size() == b.shape().size()); + if(a.shape().size() != b.shape().size()) + throw new IllegalArgumentException("a and b muse have the same number of dimensions"); FloatNdArray result = NdArrays.ofFloats(a.shape()); int nDims = a.shape().numDimensions(); a.elements(nDims - 1) @@ -306,7 +309,8 @@ public static FloatNdArray div(FloatNdArray a, FloatNdArray b) { * @return the resulting array from the Divide operation */ public static FloatNdArray div(FloatNdArray a, float scalar) { - assert (scalar != 0); + if(scalar == 0) + throw new IllegalArgumentException("Cannot divide by zero"); FloatNdArray result = NdArrays.ofFloats(a.shape()); int nDims = a.shape().numDimensions(); a.elements(nDims - 1) @@ -344,7 +348,8 @@ public static FloatNdArray div(float scalar, FloatNdArray a) { * @return the array result of the power operation */ public static FloatNdArray pow(FloatNdArray a, FloatNdArray b) { - assert (a.shape().size() == b.shape().size()); + if(a.shape().size() != b.shape().size()) + throw new IllegalArgumentException("a and b muse have the same number of dimensions"); FloatNdArray result = NdArrays.ofFloats(a.shape()); int nDims = a.shape().numDimensions(); a.elements(nDims - 1) @@ -363,7 +368,6 @@ public static FloatNdArray pow(FloatNdArray a, FloatNdArray b) { * @return the array result of the power operation */ public static FloatNdArray pow(FloatNdArray a, float scalar) { - assert (scalar != 0); FloatNdArray result = NdArrays.ofFloats(a.shape()); int nDims = a.shape().numDimensions(); a.elements(nDims - 1) @@ -382,7 +386,6 @@ public static FloatNdArray pow(FloatNdArray a, float scalar) { * @return the array result of the power operation */ public static FloatNdArray pow(float scalar, FloatNdArray a) { - assert (scalar != 0); FloatNdArray result = NdArrays.ofFloats(a.shape()); int nDims = a.shape().numDimensions(); a.elements(nDims - 1) @@ -444,7 +447,8 @@ public static float min(FloatNdArray a) { * @throws java.lang.AssertionError if the two arrays are not the same size. */ public static FloatNdArray max(FloatNdArray a, FloatNdArray b) { - assert (a.shape().size() == b.shape().size()); + if(a.shape().size() != b.shape().size()) + throw new IllegalArgumentException("a and b muse have the same number of dimensions"); FloatNdArray result = NdArrays.ofFloats(a.shape()); int nDims = a.shape().numDimensions(); a.elements(nDims - 1) @@ -495,7 +499,8 @@ public static FloatNdArray max(float scalar, FloatNdArray a) { * @throws java.lang.AssertionError if the two arrays are not the same size. */ public static FloatNdArray min(FloatNdArray a, FloatNdArray b) { - assert (a.shape().size() == b.shape().size()); + if(a.shape().size() != b.shape().size()) + throw new IllegalArgumentException("a and b muse have the same number of dimensions"); FloatNdArray result = NdArrays.ofFloats(a.shape()); int nDims = a.shape().numDimensions(); a.elements(nDims - 1) From c68812cc9c8815b0ea186f273748078c4907fbaa Mon Sep 17 00:00:00 2001 From: Jim Clarke Date: Thu, 20 Aug 2020 13:08:44 -0400 Subject: [PATCH 15/33] Moved SoftmaxCrossEntropyWithLogits.java and SparseSoftmaxCrossEntropyWithLogits.java to nn.raw, added new versions of these to NnOps --- .../annotations/org/tensorflow/op/NnOps.java | 139 ++++++++++++++---- 1 file changed, 108 insertions(+), 31 deletions(-) diff --git a/tensorflow-core/tensorflow-core-api/src/gen/annotations/org/tensorflow/op/NnOps.java b/tensorflow-core/tensorflow-core-api/src/gen/annotations/org/tensorflow/op/NnOps.java index 0c76b961cf4..a0910d4be33 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/annotations/org/tensorflow/op/NnOps.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/annotations/org/tensorflow/op/NnOps.java @@ -20,6 +20,7 @@ import java.util.List; import org.tensorflow.DataType; import org.tensorflow.Operand; +import org.tensorflow.op.core.NN; import org.tensorflow.op.nn.AvgPool; import org.tensorflow.op.nn.AvgPool3d; import org.tensorflow.op.nn.AvgPool3dGrad; @@ -84,11 +85,9 @@ import org.tensorflow.op.nn.Relu6; import org.tensorflow.op.nn.Selu; import org.tensorflow.op.nn.Softmax; -import org.tensorflow.op.nn.SoftmaxCrossEntropyWithLogits; import org.tensorflow.op.nn.Softsign; import org.tensorflow.op.nn.SpaceToBatch; import org.tensorflow.op.nn.SpaceToDepth; -import org.tensorflow.op.nn.SparseSoftmaxCrossEntropyWithLogits; import org.tensorflow.op.nn.TopK; import org.tensorflow.types.TFloat32; import org.tensorflow.types.TInt32; @@ -102,10 +101,16 @@ * @see {@link Ops} */ public final class NnOps { + public final NnRawOps raw; + + public final NnInternalOps internal; + private final Scope scope; NnOps(Scope scope) { this.scope = scope; + raw = new NnRawOps(scope); + internal = new NnInternalOps(scope); } /** @@ -1753,6 +1758,52 @@ public Selu selu(Operand features) { return Selu.create(scope, features); } + /** + * Computes sigmoid cross entropy given `logits`. + * + *

Measures the probability error in discrete classification tasks in which each class is + * independent and not mutually exclusive. For instance, one could perform multilabel + * classification where a picture can contain both an elephant and a dog at the same time. + * + *

For brevity, let `x = logits`, `z = labels`. The logistic loss is + * + *

+   *      z * -log(sigmoid(x)) + (1 - z) * -log(1 - sigmoid(x))
+   *      = z * -log(1 / (1 + exp(-x))) + (1 - z) * -log(exp(-x) / (1 + exp(-x)))
+   *      = z * log(1 + exp(-x)) + (1 - z) * (-log(exp(-x)) + log(1 + exp(-x)))
+   *      = z * log(1 + exp(-x)) + (1 - z) * (x + log(1 + exp(-x))
+   *      = (1 - z) * x + log(1 + exp(-x))
+   *      = x - x * z + log(1 + exp(-x))
+   *  
+ * + *

For x < 0, to avoid overflow in exp(-x), we reformulate the above + * + *

+   *       x - x * z + log(1 + exp(-x))
+   *       = log(exp(x)) - x * z + log(1 + exp(-x))
+   *       = - x * z + log(1 + exp(x))
+   *  
+ * + *

Hence, to ensure stability and avoid overflow, the implementation uses this equivalent + * formulation + * + *

+   *      max(x, 0) - x * z + log(1 + exp(-abs(x)))
+   *  
+ * + *

`logits` and `labels` must have the same type and shape. + * + * @param scope The TensorFlow scope + * @param labels the labels + * @param logits the logits of type float32 or float64 + * @param the type of labels and logits + * @return the component-wise logistic losses. + */ + public Operand sigmoidCrossEntropyWithLogits(Operand labels, + Operand logits) { + return NN.sigmoidCrossEntropyWithLogits(scope, labels, logits); + } + /** * Computes softmax activations. *

@@ -1769,20 +1820,48 @@ public Softmax softmax(Operand logits) { } /** - * Computes softmax cross entropy cost and gradients to backpropagate. - *

- * Inputs are the logits, not probabilities. + * Computes softmax cross entropy between `logits` and `labels`. * - * @param data type for {@code loss()} output - * @param features batch_size x num_classes matrix - * @param labels batch_size x num_classes matrix - * The caller must ensure that each batch of labels represents a valid - * probability distribution. - * @return a new instance of SoftmaxCrossEntropyWithLogits + *

Measures the probability error in discrete classification tasks in which the classes are + * mutually exclusive (each entry is in exactly one class). For example, each CIFAR-10 image is + * labeled with one and only one label: an image can be a dog or a truck, but not both. + * + *

**NOTE:** While the classes are mutually exclusive, their probabilities need not be. All + * that is required is that each row of `labels` is a valid probability distribution. If they are + * not, the computation of the gradient will be incorrect. + * + *

If using exclusive `labels` (wherein one and only one class is true at a time), see + * `sparse_softmax_cross_entropy_with_logits`. + * + *

Usage: + * + *

+   *    >>> logits = [[4.0, 2.0, 1.0], [0.0, 5.0, 1.0]]
+   *    >>> labels = [[1.0, 0.0, 0.0], [0.0, 0.8, 0.2]]
+   *    >>> tf.nn.softmax_cross_entropy_with_logits(labels=labels, logits=logits)
+   *    
+   *  
+ * + *

Backpropagation will happen into both `logits` and `labels`. To disallow backpropagation + * into `labels`, pass label tensors through `tf.stop_gradient` before feeding it to this + * function. + * + * @param scope current scope + * @param labels Each vector along the class dimension should hold a valid probability + * distribution e.g. for the case in which labels are of shape `[batch_size, num_classes]`, + * each row of `labels[i]` must be a valid probability distribution. + * @param logits Per-label activations, typically a linear output. These activation energies are + * interpreted as unnormalized log probabilities. + * @param axis The class dimension. -1 is the last dimension. + * @param the data type of the logits + * @param the number type of the operands + * @return the softmax cross entropy loss. Its type is the same as `logits` and its shape is the + * same as `labels` except that it does not have the last dimension of `labels`. */ - public SoftmaxCrossEntropyWithLogits softmaxCrossEntropyWithLogits( - Operand features, Operand labels) { - return SoftmaxCrossEntropyWithLogits.create(scope, features, labels); + public Operand softmaxCrossEntropyWithLogits( + Operand labels, Operand logits, int axis) { + return NN.softmaxCrossEntropyWithLogits(scope, labels, logits, axis); } /** @@ -1974,24 +2053,22 @@ public SpaceToDepth spaceToDepth(Operand input, Long blo } /** - * Computes softmax cross entropy cost and gradients to backpropagate. - *

- * Unlike `SoftmaxCrossEntropyWithLogits`, this operation does not accept - * a matrix of label probabilities, but rather a single label per row - * of features. This label is considered to have probability 1.0 for the - * given row. - *

- * Inputs are the logits, not probabilities. + * Computes sparse softmax cross entropy between `logits` and `labels`. * - * @param data type for {@code loss()} output - * @param features batch_size x num_classes matrix - * @param labels batch_size vector with values in [0, num_classes). - * This is the label for the given minibatch entry. - * @return a new instance of SparseSoftmaxCrossEntropyWithLogits - */ - public SparseSoftmaxCrossEntropyWithLogits sparseSoftmaxCrossEntropyWithLogits( - Operand features, Operand labels) { - return SparseSoftmaxCrossEntropyWithLogits.create(scope, features, labels); + * @param scope current scope + * @param labels `Tensor` of shape `[d_0, d_1, ..., d_{r-1}]` (where `r` is rank of `labels` and + * result) and dtype `int32` or `int64`. Each entry in `labels` must be an index in `[0, + * num_classes)`. Other values will raise an exception when this op is run on CPU, and return + * `NaN` for corresponding loss and gradient rows on GPU. + * @param logits Per-label activations (typically a linear output) of shape `[d_0, d_1, ..., + * d_{r-1}, num_classes]` and dtype `float16`, `float32`, or `float64`. These activation + * energies are interpreted as unnormalized log probabilities. + * @return A `Tensor` of the same shape as `labels` and of the same type as `logits` with the + * softmax cross entropy loss. + */ + public Operand sparseSoftmaxCrossEntropyWithLogits( + Operand labels, Operand logits) { + return NN.sparseSoftmaxCrossEntropyWithLogits(scope, labels, logits); } /** From 6b8eb26edafc54a70d6c5a1bd9e21cacf3ac04e7 Mon Sep 17 00:00:00 2001 From: Jim Clarke Date: Thu, 20 Aug 2020 13:50:01 -0400 Subject: [PATCH 16/33] Deleted files that are not necessary yet --- .../op/nn/SoftmaxCrossEntropyWithLogits.java | 83 -- .../SparseSoftmaxCrossEntropyWithLogits.java | 87 --- .../java/org/tensorflow/keras/backend/K.java | 713 ------------------ .../keras/backend/tf/ConfusionMatrix.java | 193 ----- .../keras/backend/tf/ControlDependencies.java | 84 --- .../org/tensorflow/keras/backend/tf/NN.java | 134 ---- .../keras/backend/tf/SparseTensor.java | 64 -- .../tensorflow/keras/backend/tf/Tuple.java | 109 --- .../keras/backend/tf/WeightsBroadcastOps.java | 158 ---- .../keras/utils/PlaceholderStringFormat.java | 81 -- .../tensorflow/keras/utils/PrintUtils.java | 152 ---- .../tensorflow/keras/utils/ProgressBar.java | 311 -------- .../tensorflow/keras/utils/ShapeUtils.java | 110 --- .../org/tensorflow/keras/utils/SmartCond.java | 107 --- .../tensorflow/keras/utils/SymbolicShape.java | 92 --- .../keras/utils/SymbolicShapeDict.java | 58 -- .../org/tensorflow/keras/utils/TypeUtils.java | 98 --- .../tensorflow/keras/utils/SmartCondTest.java | 247 ------ .../tensorflow/keras/utils/TypeUtilTest.java | 234 ------ 19 files changed, 3115 deletions(-) delete mode 100644 tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/SoftmaxCrossEntropyWithLogits.java delete mode 100644 tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/SparseSoftmaxCrossEntropyWithLogits.java delete mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/backend/K.java delete mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/ConfusionMatrix.java delete mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/ControlDependencies.java delete mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/NN.java delete mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/SparseTensor.java delete mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/Tuple.java delete mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/WeightsBroadcastOps.java delete mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/utils/PlaceholderStringFormat.java delete mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/utils/PrintUtils.java delete mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/utils/ProgressBar.java delete mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/utils/ShapeUtils.java delete mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/utils/SmartCond.java delete mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/utils/SymbolicShape.java delete mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/utils/SymbolicShapeDict.java delete mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/utils/TypeUtils.java delete mode 100644 tensorflow-keras/src/test/java/org/tensorflow/keras/utils/SmartCondTest.java delete mode 100644 tensorflow-keras/src/test/java/org/tensorflow/keras/utils/TypeUtilTest.java diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/SoftmaxCrossEntropyWithLogits.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/SoftmaxCrossEntropyWithLogits.java deleted file mode 100644 index 41281b996ff..00000000000 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/SoftmaxCrossEntropyWithLogits.java +++ /dev/null @@ -1,83 +0,0 @@ -/* Copyright 2018 The TensorFlow Authors. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -=======================================================================*/ - -// This class has been generated, DO NOT EDIT! - -package org.tensorflow.op.nn; - -import org.tensorflow.Operand; -import org.tensorflow.Operation; -import org.tensorflow.OperationBuilder; -import org.tensorflow.Output; -import org.tensorflow.op.RawOp; -import org.tensorflow.op.Scope; -import org.tensorflow.op.annotation.Endpoint; -import org.tensorflow.op.annotation.Operator; -import org.tensorflow.types.family.TNumber; -import org.tensorflow.types.family.TType; - -/** - * Computes softmax cross entropy cost and gradients to backpropagate. - *

- * Inputs are the logits, not probabilities. - * - * @param data type for {@code loss()} output - */ -@Operator(group = "nn") -public final class SoftmaxCrossEntropyWithLogits extends RawOp { - - /** - * Factory method to create a class wrapping a new SoftmaxCrossEntropyWithLogits operation. - * - * @param scope current scope - * @param features batch_size x num_classes matrix - * @param labels batch_size x num_classes matrix - * The caller must ensure that each batch of labels represents a valid - * probability distribution. - * @return a new instance of SoftmaxCrossEntropyWithLogits - */ - @Endpoint(describeByClass = true) - public static SoftmaxCrossEntropyWithLogits create(Scope scope, Operand features, Operand labels) { - OperationBuilder opBuilder = scope.env().opBuilder("SoftmaxCrossEntropyWithLogits", scope.makeOpName("SoftmaxCrossEntropyWithLogits")); - opBuilder.addInput(features.asOutput()); - opBuilder.addInput(labels.asOutput()); - opBuilder = scope.applyControlDependencies(opBuilder); - return new SoftmaxCrossEntropyWithLogits(opBuilder.build()); - } - - /** - * Per example loss (batch_size vector). - */ - public Output loss() { - return loss; - } - - /** - * backpropagated gradients (batch_size x num_classes matrix). - */ - public Output backprop() { - return backprop; - } - - private Output loss; - private Output backprop; - - private SoftmaxCrossEntropyWithLogits(Operation operation) { - super(operation); - int outputIdx = 0; - loss = operation.output(outputIdx++); - backprop = operation.output(outputIdx++); - } -} diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/SparseSoftmaxCrossEntropyWithLogits.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/SparseSoftmaxCrossEntropyWithLogits.java deleted file mode 100644 index f2434cd4eb8..00000000000 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/nn/SparseSoftmaxCrossEntropyWithLogits.java +++ /dev/null @@ -1,87 +0,0 @@ -/* Copyright 2018 The TensorFlow Authors. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -=======================================================================*/ - -// This class has been generated, DO NOT EDIT! - -package org.tensorflow.op.nn; - -import org.tensorflow.Operand; -import org.tensorflow.Operation; -import org.tensorflow.OperationBuilder; -import org.tensorflow.Output; -import org.tensorflow.op.RawOp; -import org.tensorflow.op.Scope; -import org.tensorflow.op.annotation.Endpoint; -import org.tensorflow.op.annotation.Operator; -import org.tensorflow.types.family.TNumber; -import org.tensorflow.types.family.TType; - -/** - * Computes softmax cross entropy cost and gradients to backpropagate. - *

- * Unlike `SoftmaxCrossEntropyWithLogits`, this operation does not accept - * a matrix of label probabilities, but rather a single label per row - * of features. This label is considered to have probability 1.0 for the - * given row. - *

- * Inputs are the logits, not probabilities. - * - * @param data type for {@code loss()} output - */ -@Operator(group = "nn") -public final class SparseSoftmaxCrossEntropyWithLogits extends RawOp { - - /** - * Factory method to create a class wrapping a new SparseSoftmaxCrossEntropyWithLogits operation. - * - * @param scope current scope - * @param features batch_size x num_classes matrix - * @param labels batch_size vector with values in [0, num_classes). - * This is the label for the given minibatch entry. - * @return a new instance of SparseSoftmaxCrossEntropyWithLogits - */ - @Endpoint(describeByClass = true) - public static SparseSoftmaxCrossEntropyWithLogits create(Scope scope, Operand features, Operand labels) { - OperationBuilder opBuilder = scope.env().opBuilder("SparseSoftmaxCrossEntropyWithLogits", scope.makeOpName("SparseSoftmaxCrossEntropyWithLogits")); - opBuilder.addInput(features.asOutput()); - opBuilder.addInput(labels.asOutput()); - opBuilder = scope.applyControlDependencies(opBuilder); - return new SparseSoftmaxCrossEntropyWithLogits(opBuilder.build()); - } - - /** - * Per example loss (batch_size vector). - */ - public Output loss() { - return loss; - } - - /** - * backpropagated gradients (batch_size x num_classes matrix). - */ - public Output backprop() { - return backprop; - } - - private Output loss; - private Output backprop; - - private SparseSoftmaxCrossEntropyWithLogits(Operation operation) { - super(operation); - int outputIdx = 0; - loss = operation.output(outputIdx++); - backprop = operation.output(outputIdx++); - } -} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/K.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/K.java deleted file mode 100644 index 51a5fdaa5ff..00000000000 --- a/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/K.java +++ /dev/null @@ -1,713 +0,0 @@ -/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -=======================================================================*/ -package org.tensorflow.keras.backend; - -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.function.Function; -import org.tensorflow.DataType; -import org.tensorflow.EagerSession; -import org.tensorflow.ExecutionEnvironment; -import org.tensorflow.Graph; -import org.tensorflow.Operand; -import org.tensorflow.Session; -import org.tensorflow.Tensor; -import org.tensorflow.keras.backend.tf.ConfusionMatrix; -import org.tensorflow.keras.backend.tf.NN; -import org.tensorflow.keras.backend.tf.Tuple; -import org.tensorflow.ndarray.NdArraySequence; -import org.tensorflow.ndarray.Shape; -import org.tensorflow.op.Ops; -import org.tensorflow.op.core.ReduceSum; -import org.tensorflow.op.core.Squeeze; -import org.tensorflow.op.core.Variable; -import org.tensorflow.op.math.Mean; -import org.tensorflow.op.nn.SoftmaxCrossEntropyWithLogits; -import org.tensorflow.types.TBfloat16; -import org.tensorflow.types.TBool; -import org.tensorflow.types.TFloat16; -import org.tensorflow.types.TFloat32; -import org.tensorflow.types.TFloat64; -import org.tensorflow.types.TInt32; -import org.tensorflow.types.TInt64; -import org.tensorflow.types.TUint8; -import org.tensorflow.types.family.TNumber; -import org.tensorflow.types.family.TType; - -/** Keras backend methods */ -public class K { - - public static final double Epsilon = 1e-7; - public static final float EpsilonF = 1e-7F; - - public static final double epsilon() { - return Epsilon; - } - - public static final Operand epsilonConstant(Ops tf) { - return tf.constant(Epsilon); - } - - public static final Operand epsilonConstant(Ops tf, DataType dtype) { - return tf.dtypes.cast(tf.constant(Epsilon), dtype); - } - - public static final Operand one(Ops tf) { - return tf.constant(1); - } - - public static final Operand one(Ops tf, DataType dtype) { - return tf.dtypes.cast(tf.constant(1), dtype); - } - - public static final Operand minusOne(Ops tf) { - return tf.constant(-1); - } - - public static final Operand minusOne(Ops tf, DataType dtype) { - return tf.dtypes.cast(tf.constant(-1), dtype); - } - - public static final Operand zero(Ops tf) { - return tf.constant(0); - } - - public static final Operand zero(Ops tf, DataType dtype) { - return tf.dtypes.cast(tf.constant(0), dtype); - } - - public static final Operand constant(Ops tf, double number, DataType dtype) { - return tf.dtypes.cast(tf.constant(number), dtype); - } - - public static Operand clip(Ops tf, Operand x, double minValue, double maxValue) { - assert x != null : "Operand x must not be null"; - DataType dtype = x.asOutput().dataType(); - if (maxValue < minValue) { - double tmp = maxValue; - maxValue = minValue; - minValue = tmp; - } - Operand minValueConstant = tf.dtypes.cast(tf.constant(minValue), dtype); - Operand maxValueConstant = tf.dtypes.cast(tf.constant(maxValue), dtype); - return tf.clipByValue(x, minValueConstant, maxValueConstant); - } - - public static Operand mean(Ops tf, Operand x) { - return mean(tf, x, null, false); - } - - public static Operand mean(Ops tf, Operand x, Operand axis) { - return mean(tf, x, axis, false); - } - - public static Operand mean(Ops tf, Operand x, boolean keepDims) { - return mean(tf, x, null, keepDims); - } - - public static Operand mean(Ops tf, Operand x, Operand axis, boolean keepDims) { - if (x.asOutput().dataType() == TBool.DTYPE) { - x = tf.dtypes.cast(x, TFloat32.DTYPE); - } - if (axis == null) { - axis = allAxis(tf, x); - } - return tf.math.mean(x, axis, Mean.keepDims(keepDims)); - } - - // alias for mean - public static Operand reduceMean(Ops tf, Operand x, Operand axis, boolean keepDims) { - return mean(tf, x, axis, keepDims); - } - - public static Operand maximum(Ops tf, Operand x, Operand y) { - y = tf.dtypes.cast(y, x.asOutput().dataType()); - return tf.math.maximum(x, y); - } - - public static Operand sqrt(Ops tf, Operand x) { - DataType dType = x.asOutput().dataType(); - Operand zero = tf.dtypes.cast(tf.constant(0), dType); - Operand inf = tf.dtypes.cast(tf.constant(Float.POSITIVE_INFINITY), dType); - x = tf.clipByValue(x, zero, inf); - return tf.math.sqrt(x); - } - - public static Shape merge(Shape a, Shape b) { - assert a.numDimensions() == b.numDimensions() - : String.format("Shapes %s and %s are incompatible", a, b); - long[] array = new long[a.numDimensions()]; - for (int i = 0; i < a.numDimensions(); i++) { - if (a.size(i) != Shape.UNKNOWN_SIZE) { - if (b.size(i) != Shape.UNKNOWN_SIZE) { - assert a.size(i) == b.size(i) : String.format("Shapes %s and %s are incompatible", a, b); - } - array[i] = a.size(i); - } else { - array[i] = b.size(i); - } - } - return Shape.of(array); - } - - // this is from nn in Python, I could not find it in the Java frameworks. - public static Operand sigmoidCrossEntropyWithLogits(Ops tf, Operand labels, Operand logits) { - Shape lablesShape = labels.asOutput().shape(); - Shape logitsShape = logits.asOutput().shape(); - Shape newShape = merge(lablesShape, logitsShape); - - Operand zeros = tf.dtypes.cast(tf.zerosLike(logits), logits.asOutput().dataType()); - Operand cond = tf.math.greaterEqual(logits, zeros); - - Operand relu_logits = tf.select(cond, logits, zeros); - Operand neg_abs_logits = tf.select(cond, tf.math.neg(logits), logits); - return tf.math.add( - tf.math.sub(relu_logits, tf.math.mul(logits, labels)), - tf.math.log1p(tf.math.exp(neg_abs_logits))); - } - - // TODO need to walk back identity until it hits something else - // not sure how to get the input nodes for the Operand. - private static Operand backtrackIdentity(Operand output) { - // while(!output.op().type().equals("Identity")) - // output = output.op().output(0); - return output; - } - - public static Operand binary_crossentropy( - Ops tf, Operand target, Operand output, boolean fromLogits) { - if (fromLogits) { - return sigmoidCrossEntropyWithLogits(tf, target, output); - } - - if (!(output instanceof Variable) && (!tf.scope().env().isEager())) { - // output = backtrackIdentity(output); // TODO - this does not work, goes infinite loop - if (output.op().type().equals("Sigmoid")) { - assert output.op().numOutputs() == 1; - output = output.op().output(0); - return sigmoidCrossEntropyWithLogits(tf, target, output); - } - } - DataType dtype = output.asOutput().dataType(); - Operand one = one(tf, dtype); - Operand epsilonConst = K.epsilonConstant(tf, dtype); - Operand oneMinusEpsilonConst = tf.math.sub(one, epsilonConst); - output = tf.clipByValue(output, epsilonConst, oneMinusEpsilonConst); - - // Compute cross entropy from probabilities. - Operand bce = tf.math.mul(target, tf.math.log(tf.math.add(output, epsilonConst))); - bce = - tf.math.add( - bce, - tf.math.mul( - tf.math.sub(one, target), - tf.math.log(tf.math.add(tf.math.sub(one, output), epsilonConst)))); - Operand result = tf.math.neg(bce); - return result; - } - - public static Operand categorical_crossentropy( - Ops tf, Operand target, Operand output, boolean fromLogits) { - return categorical_crossentropy(tf, target, output, fromLogits, -1); - } - - public static Operand categorical_crossentropy( - Ops tf, Operand target, Operand output, boolean fromLogits, int axis) { - - if (fromLogits) { - return softmax_cross_entropy_with_logits(tf, target, output); - } - if (!(output instanceof Variable) && (!tf.scope().env().isEager())) { - // TODO output = backtrackIdentity(output); doesn't seem to work with Java version. - if (output.op().type().equals("Softmax")) { - assert output.op().numOutputs() == 1; - output = output.op().output(0); - Operand op = softmax_cross_entropy_with_logits(tf, target, output); - return op; - } - } - DataType dtype = output.asOutput().dataType(); - Operand one = one(tf, dtype); - Operand epsilonConst = K.epsilonConstant(tf, dtype); - Operand oneMinusepsilonConst = tf.math.sub(one, epsilonConst); - output = - tf.math.div( - output, tf.reduceSum(output, tf.constant(axis), ReduceSum.keepDims(Boolean.TRUE))); - output = tf.clipByValue(output, epsilonConst, oneMinusepsilonConst); - - // Compute cross entropy from probabilities. - Operand cce = - tf.reduceSum( - tf.math.mul(target, tf.math.log(output)), - tf.constant(axis), - ReduceSum.keepDims(Boolean.FALSE)); - return tf.math.neg(cce); - } - - public static Operand flatten(Ops tf, Operand t) { - Shape shape = Shape.of(1L); - return tf.reshape(t, tf.constant(shape)); - } - - public static Operand sparse_categorical_crossentropy( - Ops tf, Operand target, Operand output, boolean fromLogits, int axis) { - DataType dType = output.asOutput().dataType(); - if (!(output instanceof Variable) && (!tf.scope().env().isEager())) { - // TODO output = backtrackIdentity(output); doesn't seem to work with Java version. - if (output.op().type().equals("Softmax")) { - // assert output.op().numOutputs() == 1; - // When softmax activation function is used for output operation, we - // use logits from the softmax function directly to compute loss in order - // to prevent collapsing zero when training. - // TODO assert len(output.op.inputs) == 1 - // TODO output = output.op.inputs[0] - fromLogits = true; - } - } - if (!fromLogits) { - Operand epsilonConst = epsilonConstant(tf, dType); - Operand one = one(tf, dType); - Operand oneMinusEpsilonConst = tf.math.sub(one, epsilonConst); - output = tf.clipByValue(output, epsilonConst, oneMinusEpsilonConst); - output = tf.math.log(output); - } - Shape outputShape = output.asOutput().shape(); - int outputRank = outputShape.numDimensions(); - axis %= outputRank; - if (axis < 0) { - axis += outputRank; - } - if (axis != outputRank - 1) { - int[] axisNew = moveAxisToEnd(axis, outputRank); - output = tf.linalg.transpose(output, tf.constant(axisNew)); - } - - target = tf.dtypes.cast(target, TInt64.DTYPE); - // TODO Try to adjust the shape so that rank of labels = rank of logits - 1. - outputShape = output.asOutput().shape(); - Shape targetShape = target.asOutput().shape(); - int targetRank = targetShape.numDimensions(); - - boolean updateShape = targetRank != outputRank - 1; - if (updateShape) { // TODO check to see if this is right - target = tf.reshape(target, tf.constant(-1L)); // flatten - output = - tf.reshape( - output, - tf.constant(new long[] {-1L, outputShape.size(outputShape.numDimensions() - 1)})); - } - - // call nn.nn.sparse_softmax_cross_entropy_with_logits_v2 - Operand loss = NN.sparse_softmax_cross_entropy_with_logits(tf, target, output); - if (updateShape && outputRank >= 3) { - long[] dims = outputShape.asArray(); - long[] newDims = new long[dims.length - 1]; - System.arraycopy(dims, 0, newDims, 0, newDims.length); - loss = tf.reshape(loss, tf.constant(newDims)); - } - return loss; - } - - private static int[] allAxis(Operand op) { - int rank = op.asOutput().shape().numDimensions(); - int[] ranks = new int[rank]; - for (int i = 0; i < rank; i++) { - ranks[i] = i; - } - return ranks; - } - - public static Operand allAxis(Ops tf, Operand op) { - int[] ranks = allAxis(op); - return tf.constant(ranks); - } - - // TODO shouldn't these be in tensorflow itself under nn? - private static Operand moveDimToEnd( - Ops tf, Operand tensor, int dim_index, Operand rank) { - Operand one = one(tf, TInt32.DTYPE); - List> concatList = - Arrays.asList( - tf.range(tf.constant(dim_index), one, one), - tf.range(tf.constant(dim_index + 1), rank, one)); - return tf.linalg.transpose( - tensor, - (Operand) tf.concat((Iterable>) concatList, (Operand) tf.constant(0))); - } - - private static Operand flattenOuterDims( - Ops tf, Operand logits) { - Operand zero = zero(tf, TInt64.DTYPE); - Operand one = one(tf, TInt64.DTYPE); - Operand minusOne = tf.constant(-1); - - // Shape logitsShape = logits.asOutput().shape(); - // long lastDimSize = logitsShape.size(logitsShape.numDimensions()-1); - // if(!tf.scope().env().isEager()) { - Shape shape = logits.asOutput().shape(); - int ndims = shape.numDimensions(); - if (!shape.hasUnknownDimension()) { - long product = 1L; - boolean productValid = true; - for (int i = ndims - 2; i >= 0; i--) { - long d = shape.size(i); - if (d == Shape.UNKNOWN_SIZE) { - productValid = false; - break; - } - product *= d; - } - if (productValid) { - Shape outputShape = Shape.of(product, shape.size(ndims - 1)); - return tf.reshape(logits, tf.constant(outputShape.asArray())); - } - } - // } - - Operand rank = tf.dtypes.cast(tf.rank(logits), TInt64.DTYPE); - Operand rankMinusOne = tf.math.sub(rank, one); - - Operand last_dim_size = tf.slice(tf.shape(logits), rankMinusOne, tf.constant(1)); - Operand concat = - tf.concat(Arrays.asList(tf.constant(new int[] {-1}), last_dim_size), tf.constant(0)); - return tf.reshape(zero, concat); - } - - private static int[] moveAxisToEnd(int axis, int outputRank) { - int[] axisNew = new int[outputRank]; - for (int i = 0; i < axis; i++) { - axisNew[i] = i; - } - for (int i = axis + 1; i < outputRank; i++) { - axisNew[i - 1] = i; - } - axisNew[outputRank - 1] = axis; - return axisNew; - } - - // TODO, maybe part of Shape ?? - private static boolean shapeIsCompatible(Shape a, Shape b) { - if (a.numDimensions() != b.numDimensions()) { - return false; - } - for (int i = 0; i < a.numDimensions(); i++) { - long aSize = a.size(i); - long bSize = b.size(i); - if (aSize != Shape.UNKNOWN_SIZE && bSize != Shape.UNKNOWN_SIZE && aSize != bSize) { - return false; - } - } - return true; - } - - // TODO these are "nn" ops - public static Operand softmax_cross_entropy_with_logits(Ops tf, Operand labels, Operand logits) { - return softmax_cross_entropy_with_logits(tf, labels, logits, -1); - } - - public static Operand softmax_cross_entropy_with_logits( - Ops tf, Operand labels, Operand logits, int axis) { - axis = axis % logits.asOutput().shape().numDimensions(); - if (axis < 0) { - axis += logits.asOutput().shape().numDimensions(); - } - - Operand minusOne = tf.constant(-1); - Operand precise_logits = logits; - Operand one = tf.constant(1L); - - boolean convertToFloat32 = - logits.asOutput().dataType() == TFloat16.DTYPE - || logits.asOutput().dataType() == TBfloat16.DTYPE; - if (convertToFloat32) { - precise_logits = tf.dtypes.cast(logits, TFloat32.DTYPE); - } - DataType dtype = precise_logits.asOutput().dataType(); - labels = tf.dtypes.cast(labels, dtype); - Operand inputRank = tf.dtypes.cast(tf.rank(precise_logits), TInt64.DTYPE); - Operand inputRankMinusOne = tf.dtypes.cast(tf.math.sub(inputRank, one), TInt64.DTYPE); - Shape shape = logits.asOutput().shape(); - - // Move the dim to the end if dim is not the last dimension. - if (axis != -1 && axis != precise_logits.asOutput().shape().numDimensions() - 1) { - precise_logits = moveDimToEnd(tf, precise_logits, axis, inputRank); - labels = moveDimToEnd(tf, labels, axis, inputRank); - } - - Shape inputShape = precise_logits.asOutput().shape(); - precise_logits = flattenOuterDims(tf, precise_logits); - labels = flattenOuterDims(tf, labels); - SoftmaxCrossEntropyWithLogits smax = - tf.nn.softmaxCrossEntropyWithLogits(precise_logits, labels); - Operand cost = smax.loss(); - Operand outputShape = - tf.slice( - tf.constant(inputShape.asArray()), - tf.constant(new long[] {0}), - tf.constant(new long[] {inputShape.numDimensions() - 1})); - cost = tf.reshape(cost, outputShape); - if (tf.scope().env().isGraph() && !shape.hasUnknownDimension()) { - long[] array = shape.asArray(); - long[] newArray = new long[array.length - 1]; - if (axis < 0) { - axis = shape.numDimensions() + axis; - } - for (int i = 0; i < axis; i++) { - newArray[i] = shape.size(i); - } - for (int i = axis + 1; i < shape.numDimensions(); i++) { - newArray[i - 1] = shape.size(i); - } - Shape newShape = Shape.of(newArray); - cost = tf.reshape(cost, tf.constant(newShape.asArray())); - } - - if (convertToFloat32) { - cost = tf.dtypes.cast(cost, logits.asOutput().dataType()); - } - return cost; - } - - public static Operand map( - Operand input, Function, Operand> mapFunc) { - return null; - } - - public static long[] concatenate(long first, long... remaining) { - long[] dims = new long[remaining.length + 1]; - System.arraycopy(remaining, 0, dims, 1, remaining.length); - dims[0] = first; - return dims; - } - - private static Map> uidMap = new HashMap<>(); - - /** - * Associates a string prefix with an integer counter in a TensorFlow graph. - * - *

Example: - * - *

-   * get_uid('dense')
-   * 1
-   * get_uid('dense')
-   * 2
-   * 
- * - * @param tf the TensorFlow Ops - * @param prefix String prefix to index. - * @return Unique integer ID. - */ - public static int getUid(Ops tf, String prefix) { - ExecutionEnvironment env = tf.scope().env(); - Map uids = uidMap.get(env); - if (uids == null) { - uids = new HashMap<>(); - uidMap.put(env, uids); - } - Integer id = uids.get(prefix); - if (id == null) { - id = 0; - } else { - id++; - } - - uids.put(prefix, id); - return id; - } - - /** - * returns the larger DataType between the two. - * - * @param a the first DataType to compare - * @param b the second DataType to compare - * @return the wider DataType - */ - public DataType wider(DataType a, DataType b) { - return a.byteSize() < b.byteSize() ? b : a; - } - - /** - * returns the smaller DataType between the two. - * - * @param a the first DataType to compare - * @param b the second DataType to compare - * @return the smaller DataType - */ - public DataType narrower(DataType a, DataType b) { - return a.byteSize() > b.byteSize() ? b : a; - } - - public NdArraySequence getTensorValue(Ops tf, Operand operand) { - DataType dtype = operand.asOutput().dataType(); - if (tf.scope().env().isGraph()) { - try (Session session = new Session((Graph) tf.scope().env())) { - if (dtype.equals(TInt32.DTYPE)) { - try (Tensor result = - session.runner().fetch(operand).run().get(0).expect(TInt32.DTYPE)) { - return result.data().scalars(); - } - } else if (dtype.equals(TInt64.DTYPE)) { - try (Tensor result = - session.runner().fetch(operand).run().get(0).expect(TInt64.DTYPE)) { - return result.data().scalars(); - } - } else if (dtype.equals(TUint8.DTYPE)) { - try (Tensor result = - session.runner().fetch(operand).run().get(0).expect(TUint8.DTYPE)) { - return result.data().scalars(); - } - } else if (dtype.equals(TBfloat16.DTYPE)) { - try (Tensor result = - session.runner().fetch(operand).run().get(0).expect(TBfloat16.DTYPE)) { - return result.data().scalars(); - } - } else if (dtype.equals(TFloat16.DTYPE)) { - try (Tensor result = - session.runner().fetch(operand).run().get(0).expect(TFloat16.DTYPE)) { - return result.data().scalars(); - } - } else if (dtype.equals(TFloat32.DTYPE)) { - try (Tensor result = - session.runner().fetch(operand).run().get(0).expect(TFloat32.DTYPE)) { - return result.data().scalars(); - } - } else if (dtype.equals(TFloat64.DTYPE)) { - try (Tensor result = - session.runner().fetch(operand).run().get(0).expect(TFloat64.DTYPE)) { - return result.data().scalars(); - } - } else { - return null; - } - } - } else { - try (EagerSession session = EagerSession.create()) { - if (dtype.equals(TInt32.DTYPE)) { - return ((Operand) operand).data().scalars(); - } else if (dtype.equals(TInt64.DTYPE)) { - return ((Operand) operand).data().scalars(); - } else if (dtype.equals(TUint8.DTYPE)) { - return ((Operand) operand).data().scalars(); - } else if (dtype.equals(TBfloat16.DTYPE)) { - return ((Operand) operand).data().scalars(); - } else if (dtype.equals(TFloat16.DTYPE)) { - return ((Operand) operand).data().scalars(); - } else if (dtype.equals(TFloat32.DTYPE)) { - return ((Operand) operand).data().scalars(); - } else if (dtype.equals(TFloat64.DTYPE)) { - return ((Operand) operand).data().scalars(); - } else { - return null; - } - } - } - } - - /** - * Squeeze or expand last dimension if needed. 1. Squeezes last dim of `y_pred` or `y_true` if - * their rank differs by 1 (using `confusion_matrix.remove_squeezable_dimensions`). 2. Squeezes or - * expands last dim of `sample_weight` if its rank differs by 1 from the new rank of `y_pred`. If - * `sample_weight` is scalar, it is kept scalar. - * - * @param tf the TensorVlow Ops - * @param yPred Predicted values, a `Tensor` of arbitrary dimensions. - * @param yTrue Optional label `Tensor` whose dimensions match `y_pred`. - * @return Tuple of `y_pred`, `y_true` and `sample_weight`. Each of them possibly has the last - * dimension squeezed, `sample_weight` could be extended by one dimension. If `sample_weight` - * is null, (y_pred, y_true) is returned. - */ - public static Tuple squeezeOrExpandDimensions(Ops tf, Operand yTrue, Operand yPred) { - return squeezeOrExpandDimensions(tf, yTrue, yPred, null); - } - - /** - * Squeeze or expand last dimension if needed. 1. Squeezes last dim of `y_pred` or `y_true` if - * their rank differs by 1 (using `confusion_matrix.remove_squeezable_dimensions`). 2. Squeezes or - * expands last dim of `sample_weight` if its rank differs by 1 from the new rank of `y_pred`. If - * `sample_weight` is scalar, it is kept scalar. - * - * @param tf the TensorVlow Ops - * @param yPred Predicted values, a `Tensor` of arbitrary dimensions. - * @param yTrue Optional label `Tensor` whose dimensions match `y_pred`. - * @param sampleWeight Optional weight scalar or `Tensor` whose dimensions match `y_pred`. - * @return Tuple of `y_pred`, `y_true` and `sample_weight`. Each of them possibly has the last - * dimension squeezed, `sample_weight` could be extended by one dimension. If `sample_weight` - * is null, (y_pred, y_true) is returned. - */ - public static Tuple squeezeOrExpandDimensions( - Ops tf, Operand yTrue, Operand yPred, Operand sampleWeight) { - Tuple tuple = new Tuple(yTrue, yPred); - Shape ypredShape = yPred.asOutput().shape(); - long ypredRank = ypredShape.numDimensions(); - - if (yTrue != null) { - Shape ytrueShape = yTrue.asOutput().shape(); - long ytrueRank = ytrueShape.numDimensions(); - if (ytrueRank != Shape.UNKNOWN_SIZE && ypredRank != Shape.UNKNOWN_SIZE) { - // Use static rank for `y_true` and `y_pred`. - if (ypredRank - ytrueRank != 1 || ypredShape.size(-1) == 1) { - // y_true, y_pred = confusion_matrix.remove_squeezable_dimensions(y_true, y_pred) - tuple = ConfusionMatrix.removeSqueezableDimensions(tf, yTrue, yPred); - } - } else { // use dynamic rank - tuple = ConfusionMatrix.removeSqueezableDimensions(tf, yTrue, yPred); - } - } - if (sampleWeight == null) { - return tuple; - } - Shape weightsShape = sampleWeight.asOutput().shape(); - long weightsRank = weightsShape.numDimensions(); - if (weightsRank == 0) { // scalar - return new Tuple(yTrue, yPred, sampleWeight); - } - - if (ypredRank != Shape.UNKNOWN_SIZE && weightsRank != Shape.UNKNOWN_SIZE) { - - if (weightsRank - ypredRank == 1) { - sampleWeight = tf.squeeze(sampleWeight); - } else if (ypredRank - weightsRank == 1) { - sampleWeight = tf.expandDims(sampleWeight, tf.constant(-1L)); - } - return new Tuple(yTrue, yPred, sampleWeight); - } - // Use dynamic rank. - Operand weightsRankTensor = tf.rank(sampleWeight); - Operand rankDiff = tf.math.sub(weightsRankTensor, tf.rank(yPred)); - sampleWeight = - tf.select( - tf.math.equal(weightsRankTensor, tf.constant(0)), - sampleWeight, - maybeAdjustWeights(tf, sampleWeight, rankDiff)); - return new Tuple(yTrue, yPred, sampleWeight); - } - - private static Operand maybeAdjustWeights(Ops tf, Operand sampleWeight, Operand rankDiff) { - return tf.select( - tf.math.equal(rankDiff, tf.constant(1)), - tf.squeeze(sampleWeight, Squeeze.axis(Arrays.asList(-1L))), - maybeExpandWeights(tf, sampleWeight, rankDiff)); - } - - private static Operand maybeExpandWeights(Ops tf, Operand sampleWeight, Operand rankDiff) { - return tf.select( - tf.math.equal(rankDiff, tf.constant(-1)), - tf.expandDims(sampleWeight, tf.constant(-1)), - sampleWeight); - } -} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/ConfusionMatrix.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/ConfusionMatrix.java deleted file mode 100644 index 2860adb9d8b..00000000000 --- a/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/ConfusionMatrix.java +++ /dev/null @@ -1,193 +0,0 @@ -/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -=======================================================================*/ -package org.tensorflow.keras.backend.tf; - -import org.tensorflow.keras.backend.*; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import org.tensorflow.DataType; -import org.tensorflow.Operand; -import org.tensorflow.keras.utils.ShapeUtils; -import org.tensorflow.ndarray.Shape; -import org.tensorflow.op.Op; -import org.tensorflow.op.Ops; -import org.tensorflow.op.core.Squeeze; -import org.tensorflow.op.core.Stack; -import org.tensorflow.types.TInt64; -import org.tensorflow.types.family.TNumber; -import org.tensorflow.types.family.TType; - -/** ConfusionMatrix operations */ -public class ConfusionMatrix { - - /** - * Squeeze last dim if ranks differ from expected by exactly 1. - * - * @param tf the TensorFlowOps - * @param labels Label values, a `Tensor` whose dimensions match `predictions`. - * @param predictions Predicted values, a `Tensor` of arbitrary dimensions. - * @return `labels` and `predictions`, possibly with last dim squeezed. - */ - public static Tuple removeSqueezableDimensions(Ops tf, Operand labels, Operand predictions) { - return removeSqueezableDimensions(tf, labels, predictions, 0); - } - - /** - * Squeeze last dim if ranks differ from expected by exactly 1. - * - * @param tf the TensorFlowOps - * @param labels Label values, a `Tensor` whose dimensions match `predictions`. - * @param predictions Predicted values, a `Tensor` of arbitrary dimensions. - * @param expectedRankDiff Expected result of `rank(predictions) - rank(labels)`. - * @return `labels` and `predictions`, possibly with last dim squeezed. - */ - public static Tuple removeSqueezableDimensions( - Ops tf, Operand labels, Operand predictions, int expectedRankDiff) { - - tf = tf.withSubScope("removeSqueezableDimensions"); - Shape predictionsShape = predictions.asOutput().shape(); - int predictionsRank = predictionsShape.numDimensions(); - Shape labelsShape = labels.asOutput().shape(); - int labelsRank = labelsShape.numDimensions(); - - if (predictionsRank != Shape.UNKNOWN_SIZE && labelsRank != Shape.UNKNOWN_SIZE) { - // Use static rank. - int rankDiff = predictionsRank - labelsRank; - if (rankDiff == expectedRankDiff + 1 - && ShapeUtils.isCompatible(predictionsShape.size(-1), 1)) { - predictions = tf.squeeze(predictions); - } else if (rankDiff == expectedRankDiff - 1 - && ShapeUtils.isCompatible(labelsShape.size(-1), 1)) { - labels = tf.squeeze(labels); - } - return new Tuple(labels, predictions); - } - // Use dynamic rank. - Operand rankDiff = tf.math.sub(tf.rank(predictions), tf.rank(labels)); - if (predictionsRank == Shape.UNKNOWN_SIZE - && ShapeUtils.isCompatible(predictionsShape.size(-1), 1)) { - /** - * TODO, if we ever get a select that does lazy evaluation, but for now do the tf.squeeze - * predictions = tf.select( tf.math.equal(tf.constant(expectedRankDiff+1),rankDiff ), - * tf.squeeze(predictions, Squeeze.axis(Arrays.asList(-1L))), predictions ); * - */ - predictions = tf.squeeze(predictions, Squeeze.axis(Arrays.asList(-1L))); - } - if (labelsRank == Shape.UNKNOWN_SIZE && ShapeUtils.isCompatible(labelsShape.size(-1), 1)) { - /** - * TODO, if we ever get a select that does lazy evaluation labels = tf.select( - * tf.math.equal(tf.constant(expectedRankDiff+1),rankDiff ), tf.squeeze(labels, - * Squeeze.axis(Arrays.asList(-1L))), predictions ); * - */ - labels = tf.squeeze(labels, Squeeze.axis(Arrays.asList(-1L))); - } - return new Tuple(labels, predictions); - } - - /** - * Computes the confusion matrix from predictions and labels. - * - * @param tf the TensorFlow Ops - * @param labels 1-D `Tensor` of real labels for the classification task. - * @param predictions 1-D `Tensor` of predictions for a given classification. - * @param numClasses The possible number of labels the classification task can have. - * @param weights optional weights to be applied to the confusion matris - * @param dtype Data type of the confusion matrix. - * @param the type of Operands - * @param the data type. - * @return A `Tensor` of type `dtype` with shape `[n, n]` representing the confusion matrix, where - * `n` is the number of possible labels in the classification task. - * @throws IllegalArgumentException If both predictions and labels are not 1-D vectors and have - * mismatched shapes, or if `weights` is not `None` and its shape doesn't match `predictions`. - */ - public static Operand confusionMatrix( - Ops tf, - Operand labels, - Operand predictions, - Operand numClasses, - Operand weights, - DataType dtype) { - tf = tf.withSubScope("confusion_matrix"); - Tuple ops = K.squeezeOrExpandDimensions(tf, predictions, labels, null); - predictions = tf.dtypes.cast(ops.getPredictions(), TInt64.DTYPE); - labels = tf.dtypes.cast(ops.getLabels(), TInt64.DTYPE); - - List labelControls = new ArrayList<>(); - List predictionControls = new ArrayList<>(); - - labelControls.add( - tf.assertThat( - tf.reduceAny( - tf.math.greaterEqual((Operand) labels, tf.constant(0L)), - K.allAxis(tf, labels)), - Arrays.asList(tf.constant("`labels` contains negative values")))); - - predictionControls.add( - tf.assertThat( - tf.reduceAny( - tf.math.greaterEqual((Operand) predictions, tf.constant(0L)), - K.allAxis(tf, labels)), - Arrays.asList(tf.constant("`predictions` contains negative values")))); - if (numClasses == null) { - numClasses = - tf.math.maximum( - tf.reduceMax(predictions, K.allAxis(tf, predictions)), - tf.reduceMax(labels, K.allAxis(tf, labels))); - } else { - labelControls.add( - tf.assertThat( - tf.reduceAny( - tf.math.less((Operand) labels, numClasses), K.allAxis(tf, labels)), - Arrays.asList(tf.constant("``labels` out of bound")))); - predictionControls.add( - tf.assertThat( - tf.reduceAny( - tf.math.less((Operand) predictions, numClasses), - K.allAxis(tf, predictions)), - Arrays.asList(tf.constant("``predictions` out of bound")))); - } - - if (weights != null) { - if (!ShapeUtils.isCompatibleWith( - predictions.asOutput().shape(), weights.asOutput().shape())) { - throw new IllegalArgumentException( - String.format( - "Prediction shape %s is not compatible with weights shaope %s", - predictions.asOutput().shape(), weights.asOutput().shape())); - } - } - final Operand labelsFinal = labels; - labels = - ControlDependencies.addControlDependencies( - tf, tfc -> tfc.identity(labelsFinal), "confusionMatrix", labelControls); - final Operand predictionsFinal = predictions; - predictions = - ControlDependencies.addControlDependencies( - tf, tfc -> tfc.identity(predictionsFinal), "confusionMatrix", labelControls); - - Operand shape = tf.stack(Arrays.asList(numClasses, numClasses)); - Operand indices = tf.stack(Arrays.asList(labels, predictions), Stack.axis(1L)); - Operand values = - weights == null - ? tf.dtypes.cast(tf.onesLike(predictions), dtype) - : tf.dtypes.cast(weights, dtype); - SparseTensor cmSparse = new SparseTensor(indices, values, shape); - Operand zeroMatrix = tf.zeros(shape, dtype); - - return tf.sparse.sparseTensorDenseAdd( - cmSparse.getIndices(), cmSparse.getValues(), cmSparse.getDenseShape(), zeroMatrix); - } -} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/ControlDependencies.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/ControlDependencies.java deleted file mode 100644 index 5b323a79ea9..00000000000 --- a/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/ControlDependencies.java +++ /dev/null @@ -1,84 +0,0 @@ -/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -=======================================================================*/ -package org.tensorflow.keras.backend.tf; - -import org.tensorflow.keras.backend.*; -import java.util.Arrays; -import java.util.List; -import java.util.function.Function; -import org.tensorflow.Operand; -import org.tensorflow.op.Op; -import org.tensorflow.op.Ops; -import org.tensorflow.types.family.TType; - -/** Container for ControlDepencies, so that the primary Operand is remembered. */ -public class ControlDependencies { - - /** - * Create a control dependency for the operand; - * - * @param tf the TensorFlow Ops - * @param createOperand a function that creates an operand with the control dependency context - * @param name the scope name to use - * @param dependencies a list of control ops. - * @param the type of Operand - * @return the Operand with control dependency scope - */ - public static Operand addControlDependencies( - Ops tf, Function> createOperand, String name, Op... dependencies) { - return addControlDependencies(tf, createOperand, name, Arrays.asList(dependencies)); - } - - /** - * Create a control dependency for an operand. - * - * @param tf the TensorFlow Ops - * @param createOperand function that creates an operand with the control dependency context - * @param name the scope name to use - * @param dependencies a list of control ops. - * @param the type of Operand - * @return the Operand with control dependency scope - */ - public static Operand addControlDependencies( - Ops tf, Function> createOperand, String name, List dependencies) { - tf = tf.withSubScope(name).withControlDependencies(dependencies); - return createOperand.apply(tf); - } - - /** - * Create a control dependency as a NoOp - * - * @param tf the TensorFlow Ops - * @param name the scope name to use - * @param dependencies a list of control ops. - * @return NoOp with control dependency scope - */ - public static Op addControlDependencies(Ops tf, String name, Op... dependencies) { - return addControlDependencies(tf, name, Arrays.asList(dependencies)); - } - - /** - * Create a control dependency as a NoOp - * - * @param tf the TensorFlow Ops - * @param name the scope name to use - * @param dependencies a list of control ops. - * @return NoOp with control dependency scope - */ - public static Op addControlDependencies(Ops tf, String name, List dependencies) { - tf = tf.withSubScope(name).withControlDependencies(dependencies); - return tf.noOp(); - } -} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/NN.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/NN.java deleted file mode 100644 index e49fed5ba95..00000000000 --- a/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/NN.java +++ /dev/null @@ -1,134 +0,0 @@ -/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -=======================================================================*/ -package org.tensorflow.keras.backend.tf; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import org.tensorflow.Operand; -import org.tensorflow.ndarray.Shape; -import org.tensorflow.op.Op; -import org.tensorflow.op.Ops; -import org.tensorflow.op.nn.SparseSoftmaxCrossEntropyWithLogits; -import org.tensorflow.types.TBfloat16; -import org.tensorflow.types.TFloat16; -import org.tensorflow.types.TFloat32; - -/** NN Operations */ -public class NN { - - /** - * Computes sparse softmax cross entropy between `logits` and `labels`. - * - * @param tf - * @param labels `Tensor` of shape `[d_0, d_1, ..., d_{r-1}]` (where `r` is rank of `labels` and - * result) and dtype `int32` or `int64`. Each entry in `labels` must be an index in `[0, - * num_classes)`. Other values will raise an exception when this op is run on CPU, and return - * `NaN` for corresponding loss and gradient rows on GPU. - * @param logits Per-label activations (typically a linear output) of shape `[d_0, d_1, ..., - * d_{r-1}, num_classes]` and dtype `float16`, `float32`, or `float64`. These activation - * energies are interpreted as unnormalized log probabilities. - * @return A `Tensor` of the same shape as `labels` and of the same type as `logits` with the - * softmax cross entropy loss. - */ - public static Operand sparse_softmax_cross_entropy_with_logits( - Ops tf, Operand labels, Operand logits) { - // assert shapeIsCompatible(labels.asOutput().shape(), logits.asOutput().shape()): - // String.format("Shapes %s and %s are incompatible", - // labels.asOutput().shape(), logits.asOutput().shape()); - tf = tf.withSubScope("SparseSoftmaxCrossEntropyWithLogits"); - Operand precise_logits = logits; - boolean convertToFloat32 = - logits.asOutput().dataType() == TFloat16.DTYPE - || logits.asOutput().dataType() == TBfloat16.DTYPE; - if (convertToFloat32) { - precise_logits = tf.dtypes.cast(logits, TFloat32.DTYPE); - } - Shape labelsStaticShape = labels.asOutput().shape(); - org.tensorflow.op.core.Shape labelsShape = tf.shape(labels); - Shape logitsShape = logits.asOutput().shape(); - Operand labels_shape = tf.shape(labels); - Shape logitsShortened = logitsShape.take(logitsShape.numDimensions() - 1); - - boolean staticShapesFullyDefined = - !labelsStaticShape.hasUnknownDimension() && !logitsShortened.hasUnknownDimension(); - if (logitsShape.numDimensions() == 0) { - throw new IllegalArgumentException( - String.format("Logits cannot be scalars - received shape %s.", logitsShape)); - } - if (!logitsShape.hasUnknownDimension() - && !labelsStaticShape.hasUnknownDimension() - && labelsStaticShape.numDimensions() != logitsShape.numDimensions() - 1) { - throw new IllegalArgumentException( - String.format( - "Rank mismatch: Rank of labels (received %s) should equal rank of logits minus 1 (received %s).", - labelsStaticShape.toString(), logitsShape.toString())); - } - - if (staticShapesFullyDefined && !labelsStaticShape.equals(logitsShortened)) { - throw new IllegalArgumentException( - String.format( - "Shape mismatch: The shape of labels (received %s) " - + "should equal the shape of logits except for the last " - + "dimension (received %s).", - labelsStaticShape.toString(), logitsShape.toString())); - } - // Check if no reshapes are required. - if (logitsShape.numDimensions() == 2) { - SparseSoftmaxCrossEntropyWithLogits smax = - tf.nn.sparseSoftmaxCrossEntropyWithLogits(precise_logits, labels); - Operand loss = smax.loss(); - if (logits.asOutput().dataType() == TFloat16.DTYPE) { - loss = tf.dtypes.cast(loss, TFloat16.DTYPE); - } - return loss; - } - - List shapeChecks = new ArrayList<>(); - - if (!staticShapesFullyDefined) { - shapeChecks.add( - tf.assertThat( - tf.math.equal(tf.shape(labels), tf.shape.take(tf.shape(logits), tf.constant(-1))), - Arrays.asList( - tf.constant( - "Shape mismatch: The shape of labels " - + "should equal the shape of logits except for the last " - + "dimension ")))); - } - - // Reshape logits to 2 dim, labels to 1 dim. - long numClassses = logitsShape.size(logitsShape.numDimensions() - 1); - - precise_logits = tf.reshape(precise_logits, tf.constant(new long[] {-1, numClassses})); - labels = tf.reshape(labels, tf.constant(-1)); - SparseSoftmaxCrossEntropyWithLogits smax = - tf.nn.sparseSoftmaxCrossEntropyWithLogits(precise_logits, labels); - - return ControlDependencies.addControlDependencies( - tf, - tfc -> { - Operand cost = smax.loss(); - - cost = tfc.reshape(cost, labels_shape); - if (logits.asOutput().dataType() == TFloat16.DTYPE) { - cost = tfc.dtypes.cast(cost, TFloat16.DTYPE); - } - return cost; - }, - "sparse_softmax_cross_entropy_with_logits", - shapeChecks); - } -} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/SparseTensor.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/SparseTensor.java deleted file mode 100644 index 45d9ec5b071..00000000000 --- a/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/SparseTensor.java +++ /dev/null @@ -1,64 +0,0 @@ -/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -=======================================================================*/ -package org.tensorflow.keras.backend.tf; - -import org.tensorflow.Operand; -import org.tensorflow.types.TInt64; -import org.tensorflow.types.family.TType; - -/** - * Represents a sparse tensor. - * - * @param the type of the SparseTensor - */ -public class SparseTensor { - - private final Operand indices; - private final Operand values; - private final Operand denseShape; - - /** - * Create a SparseTensor - * - * @param indices A 2-D int64 tensor of shape `[N, ndims]`, which specifies the indices of the - * elements in the sparse tensor that contain nonzero values - * @param values A 1-D tensor of any type and shape `[N]`, which supplies the values for each - * element in `indices`. - * @param denseShape A 1-D int64 tensor of shape `[ndims]`, which specifies the dense_shape of the - * sparse tensor - * @throws IllegalArgumentException When building an eager SparseTensor if `dense_shape` is - * unknown or contains unknown elements (None or -1). - */ - public SparseTensor(Operand indices, Operand values, Operand denseShape) { - this.indices = indices; - this.values = values; - this.denseShape = denseShape; - } - - /** @return the indices */ - public Operand getIndices() { - return indices; - } - - /** @return the values */ - public Operand getValues() { - return values; - } - - /** @return the denseShape */ - public Operand getDenseShape() { - return denseShape; - } -} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/Tuple.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/Tuple.java deleted file mode 100644 index 9f2f11285b4..00000000000 --- a/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/Tuple.java +++ /dev/null @@ -1,109 +0,0 @@ -/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -=======================================================================*/ -package org.tensorflow.keras.backend.tf; - -import org.tensorflow.Operand; -import org.tensorflow.types.family.TType; - -/** - * Returns labels, losses or predictions and sample weights as a Tuple - * - * @param the type of Operand - */ -public class Tuple { - - private final Operand labels; - private final Operand lossesOrPredictions; - private final Operand sampleWeights; - - /** - * Creates a Tuple of Operands for labels, predictions, and sampleWeights - * - * @param labels the labels - * @param lossesOrPredictions the losses or predictions - */ - public Tuple(Operand labels, Operand lossesOrPredictions) { - this(labels, lossesOrPredictions, null); - } - - /** - * Creates a Tuple of Operands for labels, predictions, and sampleWeights - * - * @param labels the labels - * @param lossesOrPredictions the losses or predictions - * @param sampleWeights the sample weights - */ - public Tuple(Operand labels, Operand lossesOrPredictions, Operand sampleWeights) { - this.labels = labels; - this.lossesOrPredictions = lossesOrPredictions; - this.sampleWeights = sampleWeights; - } - - /** - * Indicates whether this Tuple contains Labels - * - * @return true is this Tuple contains Labels - */ - public boolean containsLabels() { - return this.labels != null; - } - - /** - * Indicates whether this Tuple contains Labels - * - * @return true is this Tuple contains Labels - */ - public boolean containsPredictions() { - return this.lossesOrPredictions != null; - } - - /** - * Indicates whether this Tuple contains Labels - * - * @return true is this Tuple contains Labels - */ - public boolean containsLosses() { - return this.lossesOrPredictions != null; - } - - /** - * Indicates whether this Tuple contains Labels - * - * @return true is this Tuple contains Labels - */ - public boolean containsSampleWeights() { - return this.sampleWeights != null; - } - - /** @return the labels */ - public Operand getLabels() { - return labels; - } - - /** @return the predictions */ - public Operand getPredictions() { - return lossesOrPredictions; - } - - /** @return the predictions */ - public Operand getLosses() { - return lossesOrPredictions; - } - - /** @return the sampleWeights */ - public Operand getSampleWeights() { - return sampleWeights; - } -} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/WeightsBroadcastOps.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/WeightsBroadcastOps.java deleted file mode 100644 index 391436ff8bd..00000000000 --- a/tensorflow-keras/src/main/java/org/tensorflow/keras/backend/tf/WeightsBroadcastOps.java +++ /dev/null @@ -1,158 +0,0 @@ -/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -=======================================================================*/ - -package org.tensorflow.keras.backend.tf; - -import java.util.Arrays; -import java.util.List; -import org.tensorflow.Operand; -import org.tensorflow.keras.utils.ShapeUtils; -import org.tensorflow.ndarray.Shape; -import org.tensorflow.op.Op; -import org.tensorflow.op.Ops; -import org.tensorflow.types.TBool; -import org.tensorflow.types.family.TNumber; -import org.tensorflow.types.family.TType; - - -/** Weights Broadcast Ops */ -public class WeightsBroadcastOps { - - private static final String ASSERT_BROADCASTABLE_ERROR_PREFIX = - "weights can not be broadcast to values."; - - /** - * Asserts `weights` can be broadcast to `values` - * - * @param - * @param tf the TensorFlow Ops - * @param weights `Tensor` of weights. - * @param values `Tensor` of values to which weights are applied. - * @return `Operation` raising `InvalidArgumentError` if `weights` has incorrect shape. `no_op` if - * static checks determine `weights` has correct shape. - * @param the type of Operand - * @throws IllegalArgumentException If static checks determine `weights` has incorrect shape. - */ - public static Op assertBroadcastable( - Ops tf, Operand weights, Operand values) { - Operand weightsShape = tf.shape(weights); - Operand weightsRank = tf.rank(weights); - Shape weightsShapeStatic = weights.asOutput().shape(); - int weightsRankStatic = weightsShapeStatic.numDimensions(); - - Operand valuesShape = tf.shape(values); - Operand valuesRank = tf.rank(values); - Shape valuesShapeStatic = values.asOutput().shape(); - int valuesRankStatic = valuesShapeStatic.numDimensions(); - - if (weightsRankStatic != -1 && valuesRankStatic != -1) { - if (weightsRankStatic == 0) { - return ControlDependencies.addControlDependencies(tf, "static_scalar_check_success"); - } - if (weightsRankStatic != valuesRankStatic) { - throw new IllegalArgumentException( - String.format( - "", - "%s values.rank=%d. weights.rank=%d. values.shape=%s. weights.shape=%s.", - ASSERT_BROADCASTABLE_ERROR_PREFIX, - valuesRankStatic, - weightsRankStatic, - valuesShapeStatic.toString(), - weightsShapeStatic.toString())); - } - - for (int i = 0; i < valuesRankStatic; i++) { - if (valuesShapeStatic.size(i) != weightsShapeStatic.size(i)) { - throw new IllegalArgumentException( - String.format( - "", - "%s Mismatch at dim %s. values.shape=%s weights.shape=%s.", - ASSERT_BROADCASTABLE_ERROR_PREFIX, - i, - valuesShapeStatic.toString(), - weightsShapeStatic.toString())); - } - } - return ControlDependencies.addControlDependencies(tf, "static_dims_check_success"); - } - // Dynamic checks. - Operand is_scalar = tf.math.equal(weightsRank, tf.constant(0)); - List> data = - Arrays.asList( - tf.constant(ASSERT_BROADCASTABLE_ERROR_PREFIX), - tf.constant("weights.shape="), - weightsShape, - tf.constant("values.shape="), - valuesShape, - tf.constant("is_scalar="), - is_scalar); - - Operand isValidShape = - tf.select( - is_scalar, - is_scalar, - hasValidNonscalarShape(tf, weightsRank, weightsShape, valuesRank, valuesShape)); - - return tf.assertThat(isValidShape, data); - } - - private static Operand hasValidNonscalarShape( - Ops tf, - Operand weightsRank, - Operand weightsShape, - Operand valuesRank, - Operand valuesShape) { - tf = tf.withSubScope("has_valid_nonscalar_shape"); - Operand isSameRank = tf.math.equal(valuesRank, weightsRank); - return tf.select(isSameRank, hasValidDims(tf, weightsShape, valuesShape), isSameRank); - } - - private static Operand hasValidDims( - Ops tf, Operand weightsShape, Operand valuesShape) { - tf = tf.withSubScope("has_invalid_dims"); - Operand diff = tf.reduceSum(tf.math.sub(weightsShape, valuesShape), tf.constant(0)); - return tf.math.equal(tf.constant(0), diff); - } - - /** - * Broadcast `weights` to the same shape as `values`. - * - * @param tf the TensorFlow ops - * @param weights `Tensor` whose shape is broadcastable to `values` - * @param values Tensor` of any shape - * @param the type of Operand - * @return `weights` broadcast to `values` shape - */ - public static Operand broadcastWeights( - Ops tf, Operand weights, Operand values) { - tf = tf.withSubScope("broadcast_weights"); - values = tf.dtypes.cast(values, weights.asOutput().dataType()); - - Shape weightsShape = weights.asOutput().shape(); - Shape valuesShape = values.asOutput().shape(); - - if (!weightsShape.hasUnknownDimension() - && !valuesShape.hasUnknownDimension() - && ShapeUtils.isCompatibleWith(weightsShape, valuesShape)) { - return weights; - } - - weights = tf.math.mul(weights, tf.onesLike(values)); - Op dependencies = assertBroadcastable(tf, weights, values); - final Operand weightsFinal = weights; - return ControlDependencies.addControlDependencies( - tf, tfc -> tfc.identity(weightsFinal), "assertBroadcastable", dependencies); - } -} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/PlaceholderStringFormat.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/PlaceholderStringFormat.java deleted file mode 100644 index ef2f20e648a..00000000000 --- a/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/PlaceholderStringFormat.java +++ /dev/null @@ -1,81 +0,0 @@ -/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -=======================================================================*/ -package org.tensorflow.keras.utils; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** Utility that handles Python style placholder formats, used in Callbacks */ -public class PlaceholderStringFormat { - private static final Pattern PYTHON_MATCH = Pattern.compile("\\{(\\w+):([\\w\\.]+)\\}"); - - /** - * Convert a Python style placeholder file path format to file path - * - * @param filename the placeholder file path format - * @param epoch the epoch number to place into the filename format - * @param logs a Dictionary of log values that are replaced into the filename format - * @return the resulting filename after applying all placeholders. - */ - public static String convertFilePath(String filename, int epoch, Map logs) { - List vars = new ArrayList<>(); - Map valMap = new HashMap<>(); - String format = getFilePath(filename, vars); - List objects = new ArrayList<>(); - vars.forEach( - key -> { - if (key.equals("epoch")) objects.add(epoch); - else objects.add((Number) logs.get(key)); - }); - return String.format(format, objects.toArray(new Number[objects.size()])); - } - - /** - * Get the variable identifiers from the placeholder filename string - * - * @param filename the filename name in Placeholder format. - * @param vars the list of variables from the caller, with added variables parsed from the - * filename - * @return a string in String.format style - */ - private static String getFilePath(String filename, List vars) { - Matcher m = PYTHON_MATCH.matcher(filename); - StringBuilder sb = new StringBuilder(); - int beginIndex = 0; - Map indexMap = new HashMap<>(); - int lastIndex = 1; - while (m.find()) { - int start = m.start(0); - int end = m.end(0); - String variable = m.group(1); - vars.add(variable); - String format = m.group(2); - Integer index = indexMap.get(variable); - if (index == null) { - indexMap.put(variable, lastIndex); - index = lastIndex++; - } - sb.append(filename.substring(beginIndex, start)); - sb.append('%').append(index).append('$').append(format); - beginIndex = end; - } - sb.append(filename.substring(beginIndex)); - return sb.toString(); - } -} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/PrintUtils.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/PrintUtils.java deleted file mode 100644 index 9a21c50893f..00000000000 --- a/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/PrintUtils.java +++ /dev/null @@ -1,152 +0,0 @@ -/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -=======================================================================*/ -package org.tensorflow.keras.utils; - -import org.tensorflow.DataType; -import org.tensorflow.Tensor; -import org.tensorflow.types.TFloat16; -import org.tensorflow.types.TFloat32; -import org.tensorflow.types.TFloat64; -import org.tensorflow.types.TInt32; -import org.tensorflow.types.TInt64; -import org.tensorflow.types.TUint8; -import org.tensorflow.types.TBfloat16; -import org.tensorflow.types.TBool; -import org.tensorflow.types.TString; - -/** - * Utility to print Tensor values - */ -public class PrintUtils { - - /** - * Print a tensor's values - * @param tensor the tensor to print - */ - public static void print(Tensor tensor) { - switch(tensor.dataType().name()) { - case "BFLOAT16": - printTBfloat16(tensor); - break; - case "FLOAT16": - printTFloat16(tensor); - break; - case "FLOAT": - printTFloat32(tensor); - break; - case "DOUBLE": - printTFloat64(tensor); - break; - case "INT32": - printTInt32(tensor); - break; - case "INT64": - printTInt64(tensor); - break; - case "UINT8": - printTUint8(tensor); - break; - case "BOOL": - printTBool(tensor); - break; - case "STRING": - printTString(tensor); - break; - default: - break; - } - - } - - /** - * Print a boolean Tensot - * @param t the tensor to print - */ - public static void printTBool(Tensor t) { - t.data().scalars().forEach(s -> System.out.print(s.getBoolean() + ", ")); - System.out.println(); - } - - /** - * Print a String Tensot - * @param t the tensor to print - */ - public static void printTString(Tensor t) { - t.data().scalars().forEach(s -> System.out.print("\"" + s.getObject() + "\", ")); - System.out.println(); - } - - /** - * Print a TBfloat16 Tensor - * @param t the tensor to print - */ - public static void printTBfloat16(Tensor t) { - t.data().scalars().forEach(s -> System.out.print(s.getFloat() + ", ")); - System.out.println(); - } - - /** - * Print a uint8 Tensor - * @param t the tensor to print - */ - public static void printTUint8(Tensor t) { - t.data().scalars().forEach(s -> System.out.print(String.format("0x%x",s.getByte()) + ", ")); - System.out.println(); - } - - /** - * Print an int32 Tensor - * @param t the tensor to print - */ - public static void printTInt32(Tensor t) { - t.data().scalars().forEach(s -> System.out.print(s.getInt() + ", ")); - System.out.println(); - } - - /** - * Print an int64 Tensor - * @param t the tensor to print - */ - public static void printTInt64(Tensor t) { - t.data().scalars().forEach(s -> System.out.print(s.getLong() + ", ")); - System.out.println(); - } - - /** - * Print a Float16 tensor. - * @param t the tensor to print - */ - public static void printTFloat16(Tensor t) { - t.data().scalars().forEach(s -> System.out.print(s.getFloat() + "F, ")); - System.out.println(); - } - - /** - * Print a Float32 tensor. - * @param t the tensor to print - */ - public static void printTFloat32(Tensor t) { - t.data().scalars().forEach(s -> System.out.print(s.getFloat() + "F, ")); - System.out.println(); - } - /** - * Print a Float64 tensor. - * @param t the tensor to print - */ - public static void printTFloat64(Tensor t) { - t.data().scalars().forEach(s -> System.out.print(s.getDouble() + ", ")); - System.out.println(); - } -} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/ProgressBar.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/ProgressBar.java deleted file mode 100644 index 9dd3de4e1a2..00000000000 --- a/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/ProgressBar.java +++ /dev/null @@ -1,311 +0,0 @@ -/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -=======================================================================*/ -package org.tensorflow.keras.utils; - -import java.io.Console; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -/** - * Display a progess bar either to the Console or System.out. - * - * @author jbclarke - */ -public class ProgressBar { - private final static double MICRO_SECONDS = 1E-3; - private final static long MILLI_SECOND = 1l; - private final static long SECOND = 1000L; - private final static long MINUTE = 60L * SECOND; - private final static long HOUR = 60L * MINUTE; - - private Integer target; - private int width; - private boolean verbose; - private long interval; - private List statefulMetrics; - private String unit; - - private int totalWidth; - private int seenSoFar; - private final Map values = new HashMap<>(); - private final List valuesOrder = new ArrayList<>(); - - private final long start = System.currentTimeMillis(); - private long lastUpdate = 0; - - // will be null if console is not present - private final Console console = System.console(); - - /** - * Create a ProgressBar - */ - public ProgressBar() { - this(null, 30, true, 50, "step", null ); - - } - - /** - * Create a ProgressBar - * - * @param target Total number of steps expected, null if unknown. - */ - public ProgressBar(Integer target) { - this(target, 30, true, 50, "step", null ); - - } - - /** - * Create a ProgressBar - * - * @param target Total number of steps expected, null if unknown. - * @param verbose Verbosity mode - * @param unit Display name for step counts (usually "step" or "sample"). - * @param statefulMetrics - */ - public ProgressBar(Integer target, boolean verbose, String unit, List statefulMetrics) { - this(target, 30, verbose, 50, unit, statefulMetrics ); - - } - - - - /** - * Create a ProgressBar - * - * @param target Total number of steps expected, null if unknown. - * @param width Progress bar width on screen. - * @param verbose Verbosity mode - * @param interval Minimum visual progress update interval (in milliseconds). - * @param unit Display name for step counts (usually "step" or "sample"). - * @param statefulMetrics - */ - public ProgressBar(Integer target, int width, boolean verbose, long interval, String unit, List statefulMetrics) { - this.target = target; - this.width = width; - this.verbose = verbose; - this.interval = interval; - this.unit = unit; - this.statefulMetrics = statefulMetrics == null ? Collections.EMPTY_LIST : statefulMetrics; - } - - /** - * Updates the progress bar. - * - * @param current Index of current step. - * @param values List of Pairs: `(name, value_for_last_step)`. If `name` is in - * `statefulMetrics`, `value_for_last_step` will be displayed as-is. - * Else, an average of the metric over time will be displayed. - */ - public void update(Integer current, List> values) { - update(current, values, null); - } - - /** - * Updates the progress bar. - * - * @param current Index of current step. - * @param values List of Entry: `(name, value_for_last_step)`. If `name` is in - * `statefulMetrics`, `value_for_last_step` will be displayed as-is. - * Else, an average of the metric over time will be displayed. - * @param finalize Whether this is the last update for the progress bar. If - * `None`, defaults to `current >= self.target`. - */ - public void update(Integer current, List> values, Boolean finalize) { - if(finalize == null) { - if(this.getTarget() == null) { - finalize = false; - }else { - finalize = current >= this.getTarget(); - } - } - values = values == null ? Collections.EMPTY_LIST : values; - - values.forEach(e -> { - if(!this.valuesOrder.contains(e.getKey())) { - this.valuesOrder.add(e.getKey()); - } - if(!this.statefulMetrics.contains(e.getKey())) { - int valueBase = Math.max(current - this.seenSoFar, 1); - if(!this.values.containsKey(e.getKey())) { - this.values.put(e.getKey(), new Number[] { e.getValue().doubleValue() * valueBase, valueBase}); - }else { - Number[] n = this.values.get(e.getKey()); - n[0] = n[0].doubleValue() + e.getValue().doubleValue() * valueBase; - n[1] = n[1].doubleValue() + valueBase; - } - }else { - this.values.put(e.getKey(),new Number[] { e.getValue().doubleValue(), 1}); - } - - }); - - this.seenSoFar = current; - long now = System.currentTimeMillis(); - - StringBuilder info = new StringBuilder(String.format(" - %.0fs", (double)(now - this.start)/(double)SECOND)); - - if(this.verbose) { - if(now - this.lastUpdate < this.interval && !finalize) { - return; - } - } - int prevTotalWidth = this.totalWidth; - if (this.console != null) { - for(int i = 0; i < prevTotalWidth; i++) { - this.console.printf("\b"); - } - this.console.printf("\r"); - } else { - System.out.println(); - } - StringBuilder bar = new StringBuilder(); - if(this.getTarget() != null) { - int numDigits = (int)Math.log10(this.getTarget()) + 1; - bar.append(String.format("%" + numDigits + "d/%d [", current, this.getTarget())); - double prog = (double)current / this.getTarget(); - int progWidth = (int)(this.width * prog); - if(progWidth >= 0) { - for(int i = 0; i < progWidth-1; i++) - bar.append('='); - if(current < this.getTarget()) - bar.append('>'); - else - bar.append('='); - for(int i = 0; i < this.width - progWidth; i++) - bar.append('.'); - bar.append(']'); - } - }else { - bar.append(String.format("%7d/Unknown", current)); - } - this.totalWidth = bar.length(); - if(this.console != null) { - this.console.printf(bar.toString()); - }else { - System.out.print(bar.toString()); - } - // in millis - double timePerUnit = current != null ? (double)(now - this.start) / current: 0.0; - if(this.getTarget() == null || finalize) { - if(timePerUnit >= SECOND || timePerUnit == 0.0) { // seconds - info.append(String.format(" %.0fs/%s", timePerUnit/SECOND, this.unit)); - }else if(timePerUnit >= 1) { // milliseconds - info.append(String.format(" %.0fms/%s", timePerUnit, this.unit)); - }else { // microseconds - info.append(String.format(" %.0fus/%s", timePerUnit*SECOND, this.unit)); - } - }else { - double eta = timePerUnit * (this.getTarget() - current); - String etaFormat; - if(eta >= HOUR) { // greater than an hour - etaFormat = String.format("%d:%02d:%02d", // hh:mm:ss - (int) (eta / HOUR), - (int) (eta / HOUR / MINUTE), - (int) (eta % MINUTE)/SECOND); - }else if(eta >= MINUTE) { - etaFormat = String.format("%d:%02d", // mm:ss - (int) (eta / MINUTE), - (int) (eta % MINUTE)/SECOND); - }else { - etaFormat = String.format("%ds", (int)(eta/SECOND)); - } - info.append(" - ETA: ").append(etaFormat); - } - - this.valuesOrder.forEach(key -> { - info.append(String.format(" - %s:", key)); - Number[] val = this.values.get(key); - double avg = val[0].doubleValue() / Math.max(1.0, val[1].doubleValue()); - if(Math.abs(avg) > 1e-3) - info.append(String.format(" %.4f", avg)); - else - info.append(String.format(" %.4e", avg)); - }); - this.totalWidth += info.length(); - if(prevTotalWidth > this.totalWidth) - for(int i = 0; i < prevTotalWidth - this.totalWidth; i++) - info.append(' '); - if(finalize) { - info.append('\n'); - } - - if(this.console != null) { - console.printf(info.toString()); - console.flush(); - }else { - System.out.print(info.toString()); - System.out.flush(); - } - this.lastUpdate = now; - } - - /** - * updates the progress bar by one unit - */ - public void increment() { - add(1); - } - - /** - * updates the progress bar by one unit - * - * @param values List of Entry: `(name, value_for_last_step)`. If `name` is in - * `statefulMetrics`, `value_for_last_step` will be displayed as-is. - * Else, an average of the metric over time will be displayed. - */ - public void increment(List> values) { - add(1, values); - } - - /** - * update the progress bar - * - * @param n the number of units to add to the current number - */ - public void add(int n) { - add(n, null); - } - - /** - * update the progress bar - * - * @param n the number of units to add to the current number - * @param values List of Entry: `(name, value_for_last_step)`. If `name` is in - * `statefulMetrics`, `value_for_last_step` will be displayed as-is. - * Else, an average of the metric over time will be displayed. - */ - public void add(int n, List> values) { - this.update(this.seenSoFar + n, values); - } - - /** - * @return the target - */ - public Integer getTarget() { - return target; - } - - /** - * @param target the target to set - */ - public void setTarget(Integer target) { - this.target = target; - } -} - diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/ShapeUtils.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/ShapeUtils.java deleted file mode 100644 index 4fa69d0e537..00000000000 --- a/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/ShapeUtils.java +++ /dev/null @@ -1,110 +0,0 @@ -/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -=======================================================================*/ -package org.tensorflow.keras.utils; - -import java.util.ArrayList; -import java.util.List; -import org.tensorflow.Operand; -import org.tensorflow.Tensor; -import org.tensorflow.ndarray.NdArray; -import org.tensorflow.ndarray.Shape; -import org.tensorflow.types.TInt64; - -/** - * - * @author Jim Clarke - */ -public class ShapeUtils { - - /** - * Convert shape operand back to a Shape object - * - * @param dims the Operand containing the shape values - * @return - */ - public static Shape getShape(Operand dims) { - // TODO is there a better way? - final List dimList = new ArrayList<>(); - dims.data().scalars().forEach(s -> dimList.add(s.getLong())); - long[] longDims = new long[dimList.size()]; - for (int i = 0; i < dimList.size(); i++) { - longDims[i] = dimList.get(i); - } - return Shape.of(longDims); - } - - /** - * get the shape for the data within a Tensor - * - * @param tensor the tensor - * @return the Shape of the tensor's data; - */ - public static Shape getShape(Tensor tensor) { - NdArray data = (NdArray) tensor.data(); - return data.shape(); - - } - - public static boolean isCompatibleWith(Shape a, Shape b) { - if (!isUnknownShape(a) && !isUnknownShape(b)) { - if (a.numDimensions() != b.numDimensions()) { - return false; - } - for (int i = 0; i < a.numDimensions(); i++) { - if (a.size(i) != Shape.UNKNOWN_SIZE - && b.size(i) != Shape.UNKNOWN_SIZE - && b.size(i) != a.size(i)) { - return false; - } - } - } - return true; - } - - public static boolean isUnknownShape(Shape a) { - return a.size() == 0; - } - - /** - * Reshapes the shape by eliminating trailing Dimensions. - * - * @param oldShape - * @param axis - * @return the new shape - */ - public static Shape squeeze(Shape oldShape, int axis) { - axis %= oldShape.numDimensions(); - if (axis < 0) { - axis = oldShape.numDimensions() + axis; - } - long[] array = oldShape.asArray(); - long[] newArray = new long[axis]; - for (int i = 0; i < axis - 1; i++) { - newArray[i] = array[i]; - } - long sum = array[axis - 1]; - for (int i = axis; i < array.length; i++) { - sum *= array[i]; - } - newArray[axis - 1] = sum; - return Shape.of(newArray); - } - - public static boolean isCompatible(long dim, long otherDim) { - return dim == Shape.UNKNOWN_SIZE - || otherDim == Shape.UNKNOWN_SIZE - || dim == otherDim; - } -} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/SmartCond.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/SmartCond.java deleted file mode 100644 index 3dff11c513e..00000000000 --- a/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/SmartCond.java +++ /dev/null @@ -1,107 +0,0 @@ -/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -=======================================================================*/ -package org.tensorflow.keras.utils; - -import java.util.function.Supplier; -import org.tensorflow.Operand; -import org.tensorflow.op.Ops; -import org.tensorflow.types.TBool; - -/** Implements a select Operation using Lambdas */ -public class SmartCond { - - /** - * Creates a select operation - * - * @param pred the predicate (boolean) used to select - * @param then_fn the function to execute if the predicate is true - * @param else_fn the function to execute if the predicate is false - * @return the result of the select on the condition - */ - public static Operand select(Boolean pred, Supplier then_fn, Supplier else_fn) { - assert pred != null : "pred must not be null"; - assert then_fn != null : "then_fn must not be null"; - assert else_fn != null : "else_fn must not be null"; - return pred ? then_fn.get() : else_fn.get(); - } - - /** - * Creates a select operation - * - * @param pred the predicate ( true == 1) used to select - * @param then_fn the function to execute if the predicate is true - * @param else_fn the function to execute if the predicate is false - * @return the result of the select on the condition - */ - public static Operand select(Number pred, Supplier then_fn, Supplier else_fn) { - assert pred != null : "pred must not be null"; - assert then_fn != null : "then_fn must not be null"; - assert else_fn != null : "else_fn must not be null"; - return pred.intValue() == 1 ? then_fn.get() : else_fn.get(); - } - - /** - * Creates a select operation - * - * @param pred the predicate ( true if the string argument is not null and is equal, ignoring - * case, to the string "true") used to select - * @param then_fn the function to execute if the predicate is true - * @param else_fn the function to execute if the predicate is false - * @return the result of the select on the condition - */ - public static Operand select(String pred, Supplier then_fn, Supplier else_fn) { - assert pred != null : "pred must not be null"; - assert then_fn != null : "then_fn must not be null"; - assert else_fn != null : "else_fn must not be null"; - return Boolean.valueOf(pred) ? then_fn.get() : else_fn.get(); - } - - /** - * Create a Select operation - * - * @param tf the tensorFlow Ops - * @param pred the operand that evaluates to true or false - * @param then_fn the function to execute if the predicate is true - * @param else_fn the function to execute if the predicate is false - * @return a Select Operation if in graph mode, else return the result of the select - */ - public static Operand select( - Ops tf, Operand pred, Supplier then_fn, Supplier else_fn) { - assert pred != null : "pred must not be null"; - assert then_fn != null : "then_fn must not be null"; - assert else_fn != null : "else_fn must not be null"; - if (tf.scope().env().isEager()) { - return pred.asOutput().data().getBoolean() ? then_fn.get() : else_fn.get(); - } else { // TODO, maybe some day handle Supplier in the c interface - return tf.select(pred, then_fn.get(), else_fn.get()); - } - } - - /** - * Creates a slect operation - * - * @param tf the tensorFlow Ops - * @param pred the operand that evaluates to true or false - * @param then_fn the function to execute if the predicate is true - * @param else_fn the function to execute if the predicate is false - * @return the Select opertion - */ - public static Operand select(Ops tf, Operand pred, Operand true_op, Operand false_op) { - assert pred != null : "pred must not be null"; - assert true_op != null : "true_op must not be null"; - assert false_op != null : "false_op must not be null"; - return tf.select(pred, true_op, false_op); - } -} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/SymbolicShape.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/SymbolicShape.java deleted file mode 100644 index b2e63fe1cff..00000000000 --- a/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/SymbolicShape.java +++ /dev/null @@ -1,92 +0,0 @@ -/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -=======================================================================*/ -package org.tensorflow.keras.utils; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import org.tensorflow.Operand; - -/** - * Utility class that handles sybmolic shapes so that the shapes can be resolved during runtime and - * stay consistent across operands. - * - *

The same symbols accros variaous shapes should have the same dimension values. - * - *

shape1 = Shape("N","L") - * - *

shape2 = Shape("L", "T") - * - *

For exmple, for Symbol "L" - * shape1.size(2) == shape2.size(1) - * - *

Example: - * - *

- * List symbols = new ArrayList<>(); symbols.add(new SymbolicShape(yTrue, "N", "L"));
- * if (this.isMultiLabel()) { symbols.add(new SymbolicShape(this.truePositives, "T", "L"));
- * symbols.add(new SymbolicShape(this.falsePositives, "T", "L")); symbols.add(new
- * SymbolicShape(this.trueNegatives, "T", "L")); symbols.add(new SymbolicShape(this.falseNegatives,
- * "T", "L")); } if (this.getLabelWeights() != null) { symbols.add(new
- * SymbolicShape(this.getLabelWeights(), "L", "")); }
- * updateOperations.addAll(Metrics.assert_shapes(tf, symbols, "Number of labels is not
- * consistent."));
- * 
- */ -public class SymbolicShape { - - private Operand operand; - private List symbols = new ArrayList<>(); - - /** - * Create a SymbolicShape for an Operand. - * - * @param operand the Operand - * @param symbols the symbols - */ - public SymbolicShape(Operand operand, String... symbols) { - this.operand = operand; - this.symbols.addAll(Arrays.asList(symbols)); - } - - /** @return the operand */ - public Operand getOperand() { - return operand; - } - - /** @param operand the operand to set */ - public void setOperand(Operand operand) { - this.operand = operand; - } - - /** @return the symbols */ - public List getSymbols() { - return symbols; - } - - /** @param symbols the symbols to set */ - public void setSymbols(List symbols) { - this.symbols = symbols; - } - - /** - * Get the rank of the symbol list - * - * @return the rank of the symbol list - */ - public int rank() { - return this.symbols.size(); - } -} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/SymbolicShapeDict.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/SymbolicShapeDict.java deleted file mode 100644 index e7c9acf1c5e..00000000000 --- a/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/SymbolicShapeDict.java +++ /dev/null @@ -1,58 +0,0 @@ -/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -=======================================================================*/ -package org.tensorflow.keras.utils; - -import java.util.HashMap; -import java.util.Map; - -/** - * Utility class that contains a dictionary of Symbols. The map is updated with symbols and their - * dimension values. Used in creating matching shapes that depend on other shapes' dimensions. - */ -public class SymbolicShapeDict { - - /** Dictionary containing the sybmols and their associated dimensions sizes. */ - private final Map map = new HashMap<>(); - - /** - * Add a symbol with its associated dimensions size. - * - * @param symbol the symbol name - * @param size the shape dimension to associate with the symbol - */ - public void put(String symbol, Long size) { - this.map.put(symbol, size); - } - - /** - * Get the dimention size for a symbol - * - * @param symbol the symbol name - * @return the dimension size for the symbol or null if not found. - */ - public Long get(String symbol) { - return this.map.get(symbol); - } - - /** - * Determine if the symbol is contained in the dictionary. - * - * @param symbol the symbol name - * @return true, if the dictionary contains the symbol. - */ - public boolean contains(String symbol) { - return map.containsKey(symbol); - } -} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/TypeUtils.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/TypeUtils.java deleted file mode 100644 index a2629ef07b1..00000000000 --- a/tensorflow-keras/src/main/java/org/tensorflow/keras/utils/TypeUtils.java +++ /dev/null @@ -1,98 +0,0 @@ -/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -=======================================================================*/ -package org.tensorflow.keras.utils; - -import org.tensorflow.DataType; -import org.tensorflow.types.TBfloat16; -import org.tensorflow.types.TBool; -import org.tensorflow.types.TFloat16; -import org.tensorflow.types.TFloat32; -import org.tensorflow.types.TFloat64; -import org.tensorflow.types.TInt32; -import org.tensorflow.types.TInt64; -import org.tensorflow.types.TString; -import org.tensorflow.types.TUint8; - - -/** - * - * @author Jim Clarke - */ -public class TypeUtils { - - //TODO - public static boolean isComplex(DataType dtype) { - return false; - } - - public static boolean isFloating(DataType dtype) { - switch(dtype.name()) { - case "BFLOAT16": - case "FLOAT16": - case "FLOAT": - case "DOUBLE": - return true; - default: return false; - } - } - public static boolean isInteger(DataType dtype) { - switch(dtype.name()) { - case "INT32": - case "INT64": - case "UINT8": - return true; - default: return false; - } - } - - public static boolean isNumeric(DataType dtype) { - return isFloating(dtype) || isInteger(dtype); - } - - public static boolean isBoolean(DataType dtype) { - return dtype.name().equals("BOOL"); - } - - public static boolean isString(DataType dtype) { - return dtype.name().equals("STRING"); - } - - public static DataType of(String name) { - switch(name) { - case "BFLOAT16": - return TBfloat16.DTYPE; - case "FLOAT16": - return TFloat16.DTYPE; - case "FLOAT": - return TFloat32.DTYPE; - case "DOUBLE": - return TFloat64.DTYPE; - case "UINT8": - return TUint8.DTYPE; - case "INT32": - return TInt32.DTYPE; - case "INT64": - return TInt64.DTYPE; - case "BOOL": - return TBool.DTYPE; - case "STRING": - return TString.DTYPE; - default: - throw new IllegalArgumentException(String.format("%s is an unknown DataType", name)); - - } - } - -} diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/utils/SmartCondTest.java b/tensorflow-keras/src/test/java/org/tensorflow/keras/utils/SmartCondTest.java deleted file mode 100644 index 1aaa4aa7af4..00000000000 --- a/tensorflow-keras/src/test/java/org/tensorflow/keras/utils/SmartCondTest.java +++ /dev/null @@ -1,247 +0,0 @@ -/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -=======================================================================*/ -package org.tensorflow.keras.utils; - -import java.util.function.Supplier; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; -import org.tensorflow.Graph; -import org.tensorflow.Operand; -import org.tensorflow.Session; -import org.tensorflow.Tensor; -import org.tensorflow.op.Ops; -import org.tensorflow.op.core.Constant; -import org.tensorflow.types.TBool; - -/** - * - * @author Jim Clarke - */ -public class SmartCondTest { - - public SmartCondTest() { - } - - @BeforeAll - public static void setUpClass() { - } - - @AfterAll - public static void tearDownClass() { - } - - @BeforeEach - public void setUp() { - } - - @AfterEach - public void tearDown() { - } - - /** - * Test of cond method, of class SmartCond. - */ - @Test - public void testCondOp() { - try (Graph graph = new Graph(); Session sess = new Session(graph)) { - Ops tf = Ops.create(graph).withName("test"); - Constant pred = tf.constant(true); - sess.run(pred); - - Supplier true_fn = () -> tf.constant(true); - Supplier false_fn = () -> tf.constant(false); - boolean expResult = true; - Operand resultOp = SmartCond.select(tf, pred, true_fn, false_fn); - boolean actualResult; - try (Tensor result = sess.runner().fetch(resultOp).run().get(0).expect(TBool.DTYPE)) { - actualResult = result.data().getBoolean(); - assertEquals(expResult, actualResult); - } - - } - } - - @Test - public void testCondOp2() { - try (Graph graph = new Graph(); Session sess = new Session(graph)) { - Ops tf = Ops.create(graph).withName("test"); - Constant pred = tf.constant(true); - sess.run(pred); - - Supplier true_fn = () -> tf.constant(true); - Supplier false_fn = () -> tf.constant(false); - boolean expResult = true; - Operand resultOp = SmartCond.select(tf, pred, true_fn, false_fn); - boolean actualResult; - try (Tensor result = sess.runner().fetch(resultOp).run().get(0).expect(TBool.DTYPE)) { - actualResult = result.data().getBoolean(); - assertEquals(expResult, actualResult); - } - - } - } - - @Test - public void testCondOpPoint1() { - try (Graph graph = new Graph(); Session sess = new Session(graph)) { - Ops tf = Ops.create(graph).withName("test"); - Operand pred = tf.math.equal(tf.constant(0.1), tf.constant(1.0)); - sess.run(pred); - - Supplier true_fn = () -> tf.constant(true); - Supplier false_fn = () -> tf.constant(false); - boolean expResult = false; - Operand resultOp = SmartCond.select(tf, pred, true_fn, false_fn); - boolean actualResult; - try (Tensor result = sess.runner().fetch(resultOp).run().get(0).expect(TBool.DTYPE)) { - actualResult = result.data().getBoolean(); - assertEquals(expResult, actualResult); - } - } - } - - @Test - public void testCondOpString() { - try (Graph graph = new Graph(); Session sess = new Session(graph)) { - Ops tf = Ops.create(graph).withName("test"); - Operand pred = tf.math.equal(tf.constant("TRUE"), tf.constant("TRUE")); - - Supplier true_fn = () -> tf.constant(true); - Supplier false_fn = () -> tf.constant(false); - boolean expResult = true; - Operand resultOp = SmartCond.select(tf, pred, true_fn, false_fn); - boolean actualResult; - try (Tensor result = sess.runner().fetch(resultOp).run().get(0).expect(TBool.DTYPE)) { - actualResult = result.data().getBoolean(); - assertEquals(expResult, actualResult); - } - } - } - - /** - * Test of cond method, of class SmartCond. - */ - @Test - public void testCondBoolean() { - try (Graph graph = new Graph(); Session sess = new Session(graph)) { - Ops tf = Ops.create(graph).withName("test"); - boolean pred = false; - - Supplier true_fn = () -> tf.constant(true); - Supplier false_fn = () -> tf.constant(false); - boolean expResult = false; - Operand resultOp = SmartCond.select(pred, true_fn, false_fn); - boolean actualResult; - try (Tensor result = sess.runner().fetch(resultOp).run().get(0).expect(TBool.DTYPE)) { - actualResult = result.data().getBoolean(); - assertEquals(expResult, actualResult); - } - - } - } - - /** - * Test of cond method, of class SmartCond. - */ - @Test - public void testCondInt() { - try (Graph graph = new Graph(); Session sess = new Session(graph)) { - Ops tf = Ops.create(graph).withName("test"); - int pred = 1; - - Supplier true_fn = () -> tf.constant(true); - Supplier false_fn = () -> tf.constant(false); - boolean expResult = true; - Operand resultOp = SmartCond.select(pred, true_fn, false_fn); - boolean actualResult; - try (Tensor result = sess.runner().fetch(resultOp).run().get(0).expect(TBool.DTYPE)) { - actualResult = result.data().getBoolean(); - assertEquals(expResult, actualResult); - } - - } - } - - /** - * Test of cond method, of class SmartCond. - */ - @Test - public void testCondFloat1() { - try (Graph graph = new Graph(); Session sess = new Session(graph)) { - Ops tf = Ops.create(graph).withName("test"); - float pred = 1.0F; - - Supplier true_fn = () -> tf.constant(true); - Supplier false_fn = () -> tf.constant(false); - boolean expResult = true; - Operand resultOp = SmartCond.select(pred, true_fn, false_fn); - boolean actualResult; - try (Tensor result = sess.runner().fetch(resultOp).run().get(0).expect(TBool.DTYPE)) { - actualResult = result.data().getBoolean(); - assertEquals(expResult, actualResult); - } - - } - } - - /** - * Test of cond method, of class SmartCond. - */ - @Test - public void testCondFloat0_1() { - try (Graph graph = new Graph(); Session sess = new Session(graph)) { - Ops tf = Ops.create(graph).withName("test"); - float pred = 0.1F; - - Supplier true_fn = () -> tf.constant(true); - Supplier false_fn = () -> tf.constant(false); - boolean expResult = false; - Operand resultOp = SmartCond.select(pred, true_fn, false_fn); - boolean actualResult; - try (Tensor result = sess.runner().fetch(resultOp).run().get(0).expect(TBool.DTYPE)) { - actualResult = result.data().getBoolean(); - assertEquals(expResult, actualResult); - } - - } - } - - /** - * Test of cond method, of class SmartCond. - */ - @Test - public void testCondString() { - try (Graph graph = new Graph(); Session sess = new Session(graph)) { - Ops tf = Ops.create(graph).withName("test"); - String pred = "true"; - - Supplier true_fn = () -> tf.constant(true); - Supplier false_fn = () -> tf.constant(false); - boolean expResult = true; - Operand resultOp = SmartCond.select(pred, true_fn, false_fn); - boolean actualResult; - try (Tensor result = sess.runner().fetch(resultOp).run().get(0).expect(TBool.DTYPE)) { - actualResult = result.data().getBoolean(); - assertEquals(expResult, actualResult); - } - - } - } - -} diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/utils/TypeUtilTest.java b/tensorflow-keras/src/test/java/org/tensorflow/keras/utils/TypeUtilTest.java deleted file mode 100644 index 18442961ac5..00000000000 --- a/tensorflow-keras/src/test/java/org/tensorflow/keras/utils/TypeUtilTest.java +++ /dev/null @@ -1,234 +0,0 @@ -/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -=======================================================================*/ -package org.tensorflow.keras.utils; - -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; -import org.tensorflow.DataType; -import org.tensorflow.types.TBfloat16; -import org.tensorflow.types.TBool; -import org.tensorflow.types.TFloat16; -import org.tensorflow.types.TFloat32; -import org.tensorflow.types.TFloat64; -import org.tensorflow.types.TInt32; -import org.tensorflow.types.TInt64; -import org.tensorflow.types.TString; -import org.tensorflow.types.TUint8; - -/** - * - * @author Jim Clarke - */ -public class TypeUtilTest { - - public TypeUtilTest() { - } - - @BeforeAll - public static void setUpClass() { - } - - @AfterAll - public static void tearDownClass() { - } - - @BeforeEach - public void setUp() { - } - - @AfterEach - public void tearDown() { - } - - /** - * Test of isFloating method, of class TypeUtils. - */ - @Test - public void testIsFloating() { - DataType dtype = TFloat32.DTYPE; - boolean expResult = true; - boolean result = TypeUtils.isFloating(dtype); - assertEquals(expResult, result); - - dtype = TInt32.DTYPE; - expResult = false; - result = TypeUtils.isFloating(dtype); - assertEquals(expResult, result); - - dtype = TString.DTYPE; - expResult = false; - result = TypeUtils.isFloating(dtype); - assertEquals(expResult, result); - } - - /** - * Test of isInteger method, of class TypeUtils. - */ - @Test - public void testIsInteger() { - DataType dtype = TFloat32.DTYPE; - boolean expResult = false; - boolean result = TypeUtils.isInteger(dtype); - assertEquals(expResult, result); - - dtype = TInt32.DTYPE; - expResult = true; - result = TypeUtils.isInteger(dtype); - assertEquals(expResult, result); - - dtype = TString.DTYPE; - expResult = false; - result = TypeUtils.isInteger(dtype); - assertEquals(expResult, result); - } - - /** - * Test of isNumeric method, of class TypeUtils. - */ - @Test - public void testIsNumeric() { - DataType dtype = TFloat16.DTYPE; - boolean expResult = true; - boolean result = TypeUtils.isNumeric(dtype); - assertEquals(expResult, result); - - dtype = TInt64.DTYPE; - expResult = true; - result = TypeUtils.isNumeric(dtype); - assertEquals(expResult, result); - - dtype = TUint8.DTYPE; - expResult = true; - result = TypeUtils.isNumeric(dtype); - assertEquals(expResult, result); - - dtype = TBool.DTYPE; - expResult = false; - result = TypeUtils.isNumeric(dtype); - assertEquals(expResult, result); - - dtype = TString.DTYPE; - expResult = false; - result = TypeUtils.isNumeric(dtype); - assertEquals(expResult, result); - } - - /** - * Test of isBoolean method, of class TypeUtils. - */ - @Test - public void testIsBoolean() { - DataType dtype = TFloat16.DTYPE; - boolean expResult = false; - boolean result = TypeUtils.isBoolean(dtype); - assertEquals(expResult, result); - - dtype = TInt64.DTYPE; - expResult = false; - result = TypeUtils.isBoolean(dtype); - assertEquals(expResult, result); - - dtype = TBool.DTYPE; - expResult = true; - result = TypeUtils.isBoolean(dtype); - assertEquals(expResult, result); - } - - /** - * Test of isString method, of class TypeUtils. - */ - @Test - public void testIsString() { - DataType dtype = TFloat16.DTYPE; - boolean expResult = false; - boolean result = TypeUtils.isString(dtype); - assertEquals(expResult, result); - - dtype = TBool.DTYPE; - expResult = false; - result = TypeUtils.isString(dtype); - assertEquals(expResult, result); - - dtype = TString.DTYPE; - expResult = true; - result = TypeUtils.isString(dtype); - assertEquals(expResult, result); - } - - /** - * Test of of method, of class TypeUtils. - */ - @Test - public void testOf() { - String name = "BFLOAT16"; - DataType expResult = TBfloat16.DTYPE; - DataType result = TypeUtils.of(name); - assertEquals(expResult, result); - - name = "FLOAT16"; - expResult = TFloat16.DTYPE; - result = TypeUtils.of(name); - assertEquals(expResult, result); - - name = "FLOAT"; - expResult = TFloat32.DTYPE; - result = TypeUtils.of(name); - assertEquals(expResult, result); - - name = "DOUBLE"; - expResult = TFloat64.DTYPE; - result = TypeUtils.of(name); - assertEquals(expResult, result); - - name = "UINT8"; - expResult = TUint8.DTYPE; - result = TypeUtils.of(name); - assertEquals(expResult, result); - - name = "INT32"; - expResult = TInt32.DTYPE; - result = TypeUtils.of(name); - assertEquals(expResult, result); - - name = "INT64"; - expResult = TInt64.DTYPE; - result = TypeUtils.of(name); - assertEquals(expResult, result); - - name = "BOOL"; - expResult = TBool.DTYPE; - result = TypeUtils.of(name); - assertEquals(expResult, result); - - name = "STRING"; - expResult = TString.DTYPE; - result = TypeUtils.of(name); - assertEquals(expResult, result); - - name = "FOO"; - try { - TypeUtils.of(name); - fail("IllegalArgumentException not thrown."); - } catch (IllegalArgumentException expected) { - - } - - } - -} From 6515c248ddd8f6911f267bee0972d44ca20f0038 Mon Sep 17 00:00:00 2001 From: Jim Clarke Date: Thu, 20 Aug 2020 13:51:04 -0400 Subject: [PATCH 17/33] Added nn.raw group for softmaxCrossEntropyWithLogits() and sparseSoftmaxCrossEntropyWithLogits() --- .../org/tensorflow/op/NnRawOps.java | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 tensorflow-core/tensorflow-core-api/src/gen/annotations/org/tensorflow/op/NnRawOps.java diff --git a/tensorflow-core/tensorflow-core-api/src/gen/annotations/org/tensorflow/op/NnRawOps.java b/tensorflow-core/tensorflow-core-api/src/gen/annotations/org/tensorflow/op/NnRawOps.java new file mode 100644 index 00000000000..d9147af3934 --- /dev/null +++ b/tensorflow-core/tensorflow-core-api/src/gen/annotations/org/tensorflow/op/NnRawOps.java @@ -0,0 +1,74 @@ +// Copyright 2020 The TensorFlow Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ============================================================================== +// +// This class has been generated, DO NOT EDIT! +// +package org.tensorflow.op; + +import org.tensorflow.Operand; +import org.tensorflow.op.nn.raw.SoftmaxCrossEntropyWithLogits; +import org.tensorflow.op.nn.raw.SparseSoftmaxCrossEntropyWithLogits; +import org.tensorflow.types.family.TNumber; + +/** + * An API for building {@code nn.raw} operations as {@link Op Op}s + * + * @see {@link Ops} + */ +public final class NnRawOps { + private final Scope scope; + + NnRawOps(Scope scope) { + this.scope = scope; + } + + /** + * Computes softmax cross entropy cost and gradients to backpropagate. + *

+ * Inputs are the logits, not probabilities. + * + * @param data type for {@code loss()} output + * @param features batch_size x num_classes matrix + * @param labels batch_size x num_classes matrix + * The caller must ensure that each batch of labels represents a valid + * probability distribution. + * @return a new instance of SoftmaxCrossEntropyWithLogits + */ + public SoftmaxCrossEntropyWithLogits softmaxCrossEntropyWithLogits( + Operand features, Operand labels) { + return SoftmaxCrossEntropyWithLogits.create(scope, features, labels); + } + + /** + * Computes softmax cross entropy cost and gradients to backpropagate. + *

+ * Unlike `SoftmaxCrossEntropyWithLogits`, this operation does not accept + * a matrix of label probabilities, but rather a single label per row + * of features. This label is considered to have probability 1.0 for the + * given row. + *

+ * Inputs are the logits, not probabilities. + * + * @param data type for {@code loss()} output + * @param features batch_size x num_classes matrix + * @param labels batch_size vector with values in [0, num_classes). + * This is the label for the given minibatch entry. + * @return a new instance of SparseSoftmaxCrossEntropyWithLogits + */ + public SparseSoftmaxCrossEntropyWithLogits sparseSoftmaxCrossEntropyWithLogits( + Operand features, Operand labels) { + return SparseSoftmaxCrossEntropyWithLogits.create(scope, features, labels); + } +} From 76d0fe553559176a33040b4bdb8e07d8e033b08e Mon Sep 17 00:00:00 2001 From: Jim Clarke Date: Thu, 20 Aug 2020 14:30:16 -0400 Subject: [PATCH 18/33] Added nn.raw group for softmaxCrossEntropyWithLogits() and sparseSoftmaxCrossEntropyWithLogits() --- .../src/gen/annotations/org/tensorflow/op/NnOps.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/tensorflow-core/tensorflow-core-api/src/gen/annotations/org/tensorflow/op/NnOps.java b/tensorflow-core/tensorflow-core-api/src/gen/annotations/org/tensorflow/op/NnOps.java index a0910d4be33..aa34027cdc5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/annotations/org/tensorflow/op/NnOps.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/annotations/org/tensorflow/op/NnOps.java @@ -103,14 +103,11 @@ public final class NnOps { public final NnRawOps raw; - public final NnInternalOps internal; - private final Scope scope; NnOps(Scope scope) { this.scope = scope; raw = new NnRawOps(scope); - internal = new NnInternalOps(scope); } /** From ab379d1b49d90bb42c8654f2e0cf0c258e0d3406 Mon Sep 17 00:00:00 2001 From: Jim Clarke Date: Thu, 3 Sep 2020 10:21:27 -0400 Subject: [PATCH 19/33] Refactor NN into individual operations under org.tensorflow.op.nn. Fix JavaDoc. Change from snake case to camel case. --- .../op/nn/SigmoidCrossEntropyWithLogits.java | 83 +++++++ .../op/nn/SoftmaxCrossEntropyWithLogits.java | 215 ++++++++++++++++++ .../SparseSoftmaxCrossEntropyWithLogits.java | 161 +++++++++++++ 3 files changed, 459 insertions(+) create mode 100644 tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SigmoidCrossEntropyWithLogits.java create mode 100644 tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SoftmaxCrossEntropyWithLogits.java create mode 100644 tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SparseSoftmaxCrossEntropyWithLogits.java diff --git a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SigmoidCrossEntropyWithLogits.java b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SigmoidCrossEntropyWithLogits.java new file mode 100644 index 00000000000..1e8f3dd7907 --- /dev/null +++ b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SigmoidCrossEntropyWithLogits.java @@ -0,0 +1,83 @@ +package org.tensorflow.op.nn; + +import org.tensorflow.Operand; +import org.tensorflow.op.Scope; +import org.tensorflow.op.annotation.Endpoint; +import org.tensorflow.op.annotation.Operator; +import org.tensorflow.op.core.Select; +import org.tensorflow.op.core.ZerosLike; +import org.tensorflow.op.dtypes.Cast; +import org.tensorflow.op.math.*; +import org.tensorflow.types.TBool; +import org.tensorflow.types.family.TNumber; + +@Operator(group = "nn") +public class SigmoidCrossEntropyWithLogits { + + /** + * Computes sigmoid cross entropy given logits. + * + *

Measures the probability error in discrete classification tasks in which each class is + * independent and not mutually exclusive. For instance, one could perform multilabel + * classification where a picture can contain both an elephant and a dog at the same time. + * + *

For brevity, let x = logits, z = labels. The logistic loss in + * pseudo-code is + * + *

+   * z * -log(sigmoid(x)) + (1 - z) * -log(1 - sigmoid(x))
+   *  = z * -log(1 / (1 + exp(-x))) + (1 - z) * -log(exp(-x) / (1 + exp(-x)))
+   *  = z * log(1 + exp(-x)) + (1 - z) * (-log(exp(-x)) + log(1 + exp(-x)))
+   *  = z * log(1 + exp(-x)) + (1 - z) * (x + log(1 + exp(-x))
+   *  = (1 - z) * x + log(1 + exp(-x))
+   *  = x - x * z + log(1 + exp(-x))
+   * 
+ * + *

For x < 0, to avoid overflow in exp(-x), we reformulate the above + * + *

+   * x - x * z + log(1 + exp(-x))
+   *  = log(exp(x)) - x * z + log(1 + exp(-x))
+   *  = - x * z + log(1 + exp(x))
+   * 
+ * + *

Hence, to ensure stability and avoid overflow, the implementation uses this equivalent + * formulation + * + *

+   *   max(x, 0) - x * z + log(1 + exp(-abs(x)))
+   * 
+ * + *

logits and labels must have the same type and shape. + * + *

+ * + * @param scope The TensorFlow scope + * @param labels the labels + * @param logits the logits of type float32 or float64 + * @param the type of labels and logits + * @return the component-wise logistic losses. + * @throws IllegalArgumentException if logits' and labels' do not have the same shape + */ + @Endpoint(name = "sigmoidCrossEntropyWithLogits") + public static Operand sigmoidCrossEntropyWithLogits( + Scope scope, Operand labels, Operand logits) { + if (!labels.asOutput().shape().equals(logits.asOutput().shape())) { + throw new IllegalArgumentException( + String.format( + "logits and labels must have the same shape (%s vs %s)", + labels.asOutput().shape().toString(), logits.asOutput().shape())); + } + + Operand zeros = + Cast.create(scope, ZerosLike.create(scope, logits), logits.asOutput().dataType()); + Operand cond = GreaterEqual.create(scope, logits, zeros); + + Operand relu_logits = Select.create(scope, cond, logits, zeros); + Operand neg_abs_logits = Select.create(scope, cond, Neg.create(scope, logits), logits); + return Add.create( + scope, + Sub.create(scope, relu_logits, Mul.create(scope, logits, labels)), + Log1p.create(scope, Exp.create(scope, neg_abs_logits))); + } +} diff --git a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SoftmaxCrossEntropyWithLogits.java b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SoftmaxCrossEntropyWithLogits.java new file mode 100644 index 00000000000..6d8f5ef6f78 --- /dev/null +++ b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SoftmaxCrossEntropyWithLogits.java @@ -0,0 +1,215 @@ +package org.tensorflow.op.nn; + +import org.tensorflow.DataType; +import org.tensorflow.Operand; +import org.tensorflow.ndarray.Shape; +import org.tensorflow.op.Scope; +import org.tensorflow.op.annotation.Endpoint; +import org.tensorflow.op.annotation.Operator; +import org.tensorflow.op.core.*; +import org.tensorflow.op.dtypes.Cast; +import org.tensorflow.op.linalg.Transpose; +import org.tensorflow.op.math.Sub; +import org.tensorflow.types.TBfloat16; +import org.tensorflow.types.TFloat16; +import org.tensorflow.types.TFloat32; +import org.tensorflow.types.TInt64; +import org.tensorflow.types.family.TNumber; +import org.tensorflow.types.family.TType; + +import java.util.Arrays; +import java.util.List; + +@Operator(group = "nn") +public class SoftmaxCrossEntropyWithLogits { + + /** + * Computes softmax cross entropy between logits and labels. + * + *

Measures the probability error in discrete classification tasks in which the classes are + * mutually exclusive (each entry is in exactly one class). For example, each CIFAR-10 image is + * labeled with one and only one label: an image can be a dog or a truck, but not both. + * + *

NOTE: + * + *

While the classes are mutually exclusive, their probabilities need not be. All that is + * required is that each row of labels is a valid probability distribution. If they + * are not, the computation of the gradient will be incorrect. + * + *

If using exclusive labels (wherein one and only one class is true at a time), + * see {@link org.tensorflow.op.NnOps#sparseSoftmaxCrossEntropyWithLogits} + * + *

Usage: + * + *

+   *   Operand<TFloat32> logits =
+   *       tf.constant(new float[][] {{4.0F, 2.0F, 1.0F}, {0.0F, 5.0F, 1.0F}} );
+   *   Operand<TFloat32> labels =
+   *       tf.constant(new float[][] {{1.0F, 0.0F, 0.0F}, {0.0F, 0.8F, 0.2F}} );
+   *   Operand<TFloat32> output =
+   *       tf.nn.softmaxCrossEntropyWithLogits(labels, logits, -1);
+   *   // output Shape = [2]
+   *   // dataType = FLOAT (1)
+   *   // values { 0.169846, 0.824745 }
+   * 
+ * + *

Backpropagation will happen into both logits and labels. To + * disallow backpropagation into labels, pass label tensors through + * tf.stopGradient before feeding it to this function. + * + * @param scope current scope + * @param labels Each vector along the class dimension should hold a valid probability + * distribution e.g. for the case in which labels are of shape [batch_size, num_classes] + * , each row of labels[i] must be a valid probability distribution. + * @param logits Per-label activations, typically a linear output. These activation energies are + * interpreted as unnormalized log probabilities. + * @param axis The class dimension. -1 is the last dimension. + * @param the data type of the logits + * @param the number type of the operands + * @return the softmax cross entropy loss. Its type is the same as logits and its + * shape is the same as labels except that it does not have the last dimension of + * labels. + */ + @Endpoint(name = "softmaxCrossEntropyWithLogits") + public static Operand softmaxCrossEntropyWithLogits( + Scope scope, Operand labels, Operand logits, int axis) { + axis = axis % logits.asOutput().shape().numDimensions(); + if (axis < 0) { + axis += logits.asOutput().shape().numDimensions(); + } + + Operand preciseLogits = + (Operand) + logits; // cannot use generics cause logits of bool gets cast to TFloat32 + + boolean convertToFloat32 = + logits.asOutput().dataType() == TFloat16.DTYPE + || logits.asOutput().dataType() == TBfloat16.DTYPE; + if (convertToFloat32) { + preciseLogits = Cast.create(scope, logits, TFloat32.DTYPE); + } + /* cannot use generics on DataType because preciseLogits may have been cast. */ + DataType dtype = preciseLogits.asOutput().dataType(); + Operand castLabels = Cast.create(scope, labels, dtype); + Operand inputRank = Cast.create(scope, Rank.create(scope, preciseLogits), TInt64.DTYPE); + Shape shape = logits.asOutput().shape(); + + // Move the dim to the end if dim is not the last dimension. + if (axis != -1 && axis != preciseLogits.asOutput().shape().numDimensions() - 1) { + preciseLogits = moveDimToEnd(scope, preciseLogits, axis, inputRank); + castLabels = moveDimToEnd(scope, castLabels, axis, inputRank); + } + + Shape inputShape = preciseLogits.asOutput().shape(); + preciseLogits = flattenOuterDims(scope, preciseLogits); + castLabels = flattenOuterDims(scope, castLabels); + + org.tensorflow.op.nn.raw.SoftmaxCrossEntropyWithLogits smax = + org.tensorflow.op.nn.raw.SoftmaxCrossEntropyWithLogits.create( + scope, preciseLogits, castLabels); + /* cannot use generic on cost, because cost may be recast later. */ + Operand cost = smax.loss(); + Operand outputShape = + Slice.create( + scope, + Constant.vectorOf(scope, inputShape.asArray()), + Constant.vectorOf(scope, new long[] {0}), + Constant.vectorOf(scope, new long[] {inputShape.numDimensions() - 1})); + cost = Reshape.create(scope, cost, outputShape); + if (scope.env().isGraph() && !shape.hasUnknownDimension()) { + long[] array = shape.asArray(); + long[] newArray = new long[array.length - 1]; + if (axis < 0) { + axis = shape.numDimensions() + axis; + } + for (int i = 0; i < axis; i++) { + newArray[i] = shape.size(i); + } + for (int i = axis + 1; i < shape.numDimensions(); i++) { + newArray[i - 1] = shape.size(i); + } + Shape newShape = Shape.of(newArray); + cost = Reshape.create(scope, cost, Constant.vectorOf(scope, newShape.asArray())); + } + + if (convertToFloat32) { + cost = Cast.create(scope, cost, logits.asOutput().dataType()); + } + return cost; + } + + /** + * Flattens logits' outer dimensions and keep its last dimension. + * + * @param scope the TensorFlow scope + * @param logits the logits + * @param the type of logits + * @return the flattened logits + */ + private static Operand flattenOuterDims(Scope scope, Operand logits) { + Operand one = Constant.scalarOf(scope, 1L); + + org.tensorflow.ndarray.Shape shape = logits.asOutput().shape(); + int ndims = shape.numDimensions(); + if (!shape.hasUnknownDimension()) { + long product = 1L; + boolean productValid = true; + for (int i = ndims - 2; i >= 0; i--) { + long d = shape.size(i); + if (d == org.tensorflow.ndarray.Shape.UNKNOWN_SIZE) { + productValid = false; + break; + } + product *= d; + } + if (productValid) { + return Reshape.create( + scope, logits, Constant.vectorOf(scope, new long[] {product, shape.size(-1)})); + } + } + + Operand rank = Cast.create(scope, Rank.create(scope, logits), TInt64.DTYPE); + Operand rankMinusOne = Sub.create(scope, rank, one); + + Operand lastDimSize = + Slice.create( + scope, + org.tensorflow.op.core.Shape.create(scope, logits, TInt64.DTYPE), + rankMinusOne, + one); + Operand concat = + Concat.create( + scope, + Arrays.asList(Constant.arrayOf(scope, -1L), lastDimSize), + Constant.scalarOf(scope, 0)); + return Reshape.create(scope, logits, concat); + } + + /** + * Move the dim to the end if dimIndex is not the last dimension. + * + * @param scope The TensorFlow Scope + * @param input the input to reshape + * @param dimIndex the index to move + * @param rank the number of Dimensions in the tensor + * @param the data type of the tensor. + * @param the data type of the rank + * @return the reshaped input + */ + private static Operand moveDimToEnd( + Scope scope, Operand input, int dimIndex, Operand rank) { + DataType rankDType = rank.asOutput().dataType(); + Operand one = Cast.create(scope, Constant.scalarOf(scope, 1), rankDType); + List> concatList = + Arrays.asList( + Range.create( + scope, Cast.create(scope, Constant.scalarOf(scope, dimIndex), rankDType), one, one), + Range.create( + scope, + Cast.create(scope, Constant.scalarOf(scope, dimIndex + 1), rankDType), + one, + one)); + return Transpose.create( + scope, input, Concat.create(scope, concatList, Constant.scalarOf(scope, 0))); + } +} diff --git a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SparseSoftmaxCrossEntropyWithLogits.java b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SparseSoftmaxCrossEntropyWithLogits.java new file mode 100644 index 00000000000..8d125235719 --- /dev/null +++ b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SparseSoftmaxCrossEntropyWithLogits.java @@ -0,0 +1,161 @@ +package org.tensorflow.op.nn; + +import org.tensorflow.Operand; +import org.tensorflow.ndarray.Shape; +import org.tensorflow.op.Op; +import org.tensorflow.op.Scope; +import org.tensorflow.op.annotation.Endpoint; +import org.tensorflow.op.annotation.Operator; +import org.tensorflow.op.core.AssertThat; +import org.tensorflow.op.core.Constant; +import org.tensorflow.op.core.Reshape; +import org.tensorflow.op.core.Shapes; +import org.tensorflow.op.dtypes.Cast; +import org.tensorflow.op.math.Equal; +import org.tensorflow.types.TBfloat16; +import org.tensorflow.types.TFloat16; +import org.tensorflow.types.TFloat32; +import org.tensorflow.types.TInt32; +import org.tensorflow.types.family.TNumber; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +@Operator(group = "nn") +public class SparseSoftmaxCrossEntropyWithLogits { + + /** + * Computes sparse softmax cross entropy between logits and labels. + * + *

Measures the probability error in discrete classification tasks in which the classes are + * mutually exclusive (each entry is in exactly one class). For example, each CIFAR-10 image is + * labeled with one and only one label: an image can be a dog or a truck, but not both. + * + *

NOTE: + * + *

For this operation, the probability of a given label is considered exclusive. That is, soft + * classes are not allowed, and the labels vector must provide a single specific + * index for the true class for each row of logits (each minibatch entry). For soft + * softmax classification with a probability distribution for each entry, {@link + * org.tensorflow.op.NnOps#softmaxCrossEntropyWithLogits}. + * + *

WARNING: + * + *

This op expects unscaled logits, since it performs a softmax on logits + * internally for efficiency. Do not call this op with the output of softmax, + * as it will produce incorrect results. + * + *

A common use case is to have logits of shape [batchSize, numClasses] and have + * labels of shape [batchSize], but higher dimensions are supported, in which case + * the dim-th dimension is assumed to be of size numClasses. + * logits must have the dataType of TFloat16, TFloat32 + * , or TFloat64, and labels must have the dtype of TInt32 + * or TInt64. + * + * @param scope current scope + * @param labels Tensor of shape [d_0, d_1, ..., d_{r-1}] (where r + * is rank of labels and result) and the dataType is TInt32 + * or TInt64. Each entry in labels must be an index in [0, + * numClasses). Other values will raise an exception when this op is run on CPU, and + * return NaN for corresponding loss and gradient rows on GPU. + * @param logits Per-label activations (typically a linear output) of shape [d_0, d_1, ..., + * d_{r-1}, numClasses] and dataType of TFloat16, TFloat32, + * or TFloat64. These activation energies are interpreted as unnormalized log + * probabilities. + * @return A Tensor of the same shape as labels and of the same type as + * logits with the softmax cross entropy loss. + */ + @Endpoint(name = "sparseSoftmaxCrossEntropyWithLogits") + public static Operand sparseSoftmaxCrossEntropyWithLogits( + Scope scope, Operand labels, Operand logits) { + scope = scope.withSubScope("SparseSoftmaxCrossEntropyWithLogits"); + /** cannot use generics on preciseLogits as it may be recast later */ + Operand preciseLogits = logits; + boolean convertToFloat32 = + logits.asOutput().dataType() == TFloat16.DTYPE + || logits.asOutput().dataType() == TBfloat16.DTYPE; + if (convertToFloat32) { + preciseLogits = Cast.create(scope, logits, TFloat32.DTYPE); + } + Shape labelsStaticShape = labels.asOutput().shape(); + org.tensorflow.op.core.Shape labelsShape = + org.tensorflow.op.core.Shape.create(scope, labels); + Shape logitsShape = logits.asOutput().shape(); + Shape logitsShortened = logitsShape.take(logitsShape.numDimensions() - 1); + + boolean staticShapesFullyDefined = + !labelsStaticShape.hasUnknownDimension() && !logitsShortened.hasUnknownDimension(); + if (logitsShape.numDimensions() == 0) { + throw new IllegalArgumentException( + String.format("Logits cannot be scalars - received shape %s.", logitsShape)); + } + if (!logitsShape.hasUnknownDimension() + && !labelsStaticShape.hasUnknownDimension() + && labelsStaticShape.numDimensions() != logitsShape.numDimensions() - 1) { + throw new IllegalArgumentException( + String.format( + "Rank mismatch: Rank of labels (received %s) should equal rank of logits minus 1 (received %s).", + labelsStaticShape.toString(), logitsShape.toString())); + } + + if (staticShapesFullyDefined && !labelsStaticShape.equals(logitsShortened)) { + throw new IllegalArgumentException( + String.format( + "Shape mismatch: The shape of labels (received %s) " + + "should equal the shape of logits except for the last " + + "dimension (received %s).", + labelsStaticShape.toString(), logitsShape.toString())); + } + // Check if no reshapes are required. + if (logitsShape.numDimensions() == 2) { + org.tensorflow.op.nn.raw.SparseSoftmaxCrossEntropyWithLogits smax = + org.tensorflow.op.nn.raw.SparseSoftmaxCrossEntropyWithLogits.create( + scope, preciseLogits, labels); + Operand loss = smax.loss(); + if (logits.asOutput().dataType() == TFloat16.DTYPE) { + loss = Cast.create(scope, loss, TFloat16.DTYPE); + } + return loss; + } + + List shapeChecks = new ArrayList<>(); + + if (!staticShapesFullyDefined) { + shapeChecks.add( + AssertThat.create( + scope, + Equal.create( + scope, + org.tensorflow.op.core.Shape.create(scope, labels), + Shapes.take( + scope, + org.tensorflow.op.core.Shape.create(scope, logits), + Constant.scalarOf(scope, -1))), + Collections.singletonList( + Constant.scalarOf( + scope, + "Shape mismatch: The shape of labels " + + "should equal the shape of logits except for the last " + + "dimension ")))); + } + + // Reshape logits to 2 dim, labels to 1 dim. + long numClassses = logitsShape.size(logitsShape.numDimensions() - 1); + + preciseLogits = + Reshape.create( + scope, preciseLogits, Constant.vectorOf(scope, new long[] {-1, numClassses})); + labels = Reshape.create(scope, labels, Constant.scalarOf(scope, -1)); + scope.withControlDependencies(shapeChecks); + org.tensorflow.op.nn.raw.SparseSoftmaxCrossEntropyWithLogits smax = + org.tensorflow.op.nn.raw.SparseSoftmaxCrossEntropyWithLogits.create( + scope, preciseLogits, labels); + Operand cost = smax.loss(); + cost = Reshape.create(scope, cost, labelsShape); + if (logits.asOutput().dataType() == TFloat16.DTYPE) { + cost = Cast.create(scope, cost, TFloat16.DTYPE); + } + return cost; + } +} From 889d67e11ec7154605a0cb235097e30c53a5704a Mon Sep 17 00:00:00 2001 From: Jim Clarke Date: Thu, 3 Sep 2020 10:21:33 -0400 Subject: [PATCH 20/33] Refactor NN into individual operations under org.tensorflow.op.nn. Fix JavaDoc. Change from snake case to camel case. --- .../main/java/org/tensorflow/op/core/NN.java | 379 ------------------ 1 file changed, 379 deletions(-) delete mode 100644 tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/core/NN.java diff --git a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/core/NN.java b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/core/NN.java deleted file mode 100644 index b4fa7bd01de..00000000000 --- a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/core/NN.java +++ /dev/null @@ -1,379 +0,0 @@ -package org.tensorflow.op.core; - -import org.tensorflow.DataType; -import org.tensorflow.Operand; -import org.tensorflow.ndarray.Shape; -import org.tensorflow.op.Op; -import org.tensorflow.op.Scope; -import org.tensorflow.op.annotation.Endpoint; -import org.tensorflow.op.annotation.Operator; -import org.tensorflow.op.math.*; -import org.tensorflow.op.nn.raw.SoftmaxCrossEntropyWithLogits; -import org.tensorflow.op.nn.raw.SparseSoftmaxCrossEntropyWithLogits; -import org.tensorflow.types.*; -import org.tensorflow.types.family.TNumber; -import org.tensorflow.op.dtypes.Cast; -import org.tensorflow.types.family.TType; -import org.tensorflow.op.linalg.Transpose; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -@Operator(group = "nn") -public abstract class NN { - - /** - * Computes softmax cross entropy between `logits` and `labels`. - * - *

Measures the probability error in discrete classification tasks in which the classes are - * mutually exclusive (each entry is in exactly one class). For example, each CIFAR-10 image is - * labeled with one and only one label: an image can be a dog or a truck, but not both. - * - *

**NOTE:** While the classes are mutually exclusive, their probabilities need not be. All - * that is required is that each row of `labels` is a valid probability distribution. If they are - * not, the computation of the gradient will be incorrect. - * - *

If using exclusive `labels` (wherein one and only one class is true at a time), see - * `sparse_softmax_cross_entropy_with_logits`. - * - *

Usage: - * - *

-   *   >>> logits = [[4.0, 2.0, 1.0], [0.0, 5.0, 1.0]]
-   *   >>> labels = [[1.0, 0.0, 0.0], [0.0, 0.8, 0.2]]
-   *   >>> tf.nn.softmax_cross_entropy_with_logits(labels=labels, logits=logits)
-   *   
-   * 
- * - *

Backpropagation will happen into both `logits` and `labels`. To disallow backpropagation - * into `labels`, pass label tensors through `tf.stop_gradient` before feeding it to this - * function. - * - * @param scope current scope - * @param labels Each vector along the class dimension should hold a valid probability - * distribution e.g. for the case in which labels are of shape `[batch_size, num_classes]`, - * each row of `labels[i]` must be a valid probability distribution. - * @param logits Per-label activations, typically a linear output. These activation energies are - * interpreted as unnormalized log probabilities. - * @param axis The class dimension. -1 is the last dimension. - * @param the data type of the logits - * @param the number type of the operands - * @return the softmax cross entropy loss. Its type is the same as `logits` and its shape is the - * same as `labels` except that it does not have the last dimension of `labels`. - */ - @Endpoint(name = "softmaxCrossEntropyWithLogits") - public static Operand softmaxCrossEntropyWithLogits( - Scope scope, Operand labels, Operand logits, int axis) { - axis = axis % logits.asOutput().shape().numDimensions(); - if (axis < 0) { - axis += logits.asOutput().shape().numDimensions(); - } - - Operand precise_logits = - logits; // cannot use generics cause logits of bool gets cast to TFloat32 - - boolean convertToFloat32 = - logits.asOutput().dataType() == TFloat16.DTYPE - || logits.asOutput().dataType() == TBfloat16.DTYPE; - if (convertToFloat32) { - precise_logits = Cast.create(scope, logits, TFloat32.DTYPE); - } - /* cannot use generics on DataType because precis_logits may have been cast. */ - DataType dtype = precise_logits.asOutput().dataType(); - labels = Cast.create(scope, labels, dtype); - Operand inputRank = - Cast.create(scope, Rank.create(scope, precise_logits), TInt64.DTYPE); - Shape shape = logits.asOutput().shape(); - - // Move the dim to the end if dim is not the last dimension. - if (axis != -1 && axis != precise_logits.asOutput().shape().numDimensions() - 1) { - precise_logits = moveDimToEnd(scope, precise_logits, axis, inputRank); - labels = moveDimToEnd(scope, labels, axis, inputRank); - } - - Shape inputShape = precise_logits.asOutput().shape(); - precise_logits = flattenOuterDims(scope, precise_logits); - labels = flattenOuterDims(scope, labels); - SoftmaxCrossEntropyWithLogits smax = - SoftmaxCrossEntropyWithLogits.create(scope, precise_logits, labels); - /* cannot use generic on cost, because cost may be recast later. */ - Operand cost = smax.loss(); - Operand outputShape = - Slice.create( - scope, - Constant.vectorOf(scope, inputShape.asArray()), - Constant.vectorOf(scope, new long[] {0}), - Constant.vectorOf(scope, new long[] {inputShape.numDimensions() - 1})); - cost = Reshape.create(scope, cost, outputShape); - if (scope.env().isGraph() && !shape.hasUnknownDimension()) { - long[] array = shape.asArray(); - long[] newArray = new long[array.length - 1]; - if (axis < 0) { - axis = shape.numDimensions() + axis; - } - for (int i = 0; i < axis; i++) { - newArray[i] = shape.size(i); - } - for (int i = axis + 1; i < shape.numDimensions(); i++) { - newArray[i - 1] = shape.size(i); - } - Shape newShape = Shape.of(newArray); - cost = Reshape.create(scope, cost, Constant.vectorOf(scope, newShape.asArray())); - } - - if (convertToFloat32) { - cost = Cast.create(scope, cost, logits.asOutput().dataType()); - } - return cost; - } - - /** - * Computes sparse softmax cross entropy between `logits` and `labels`. - * - * @param scope current scope - * @param labels `Tensor` of shape `[d_0, d_1, ..., d_{r-1}]` (where `r` is rank of `labels` and - * result) and dtype `int32` or `int64`. Each entry in `labels` must be an index in `[0, - * num_classes)`. Other values will raise an exception when this op is run on CPU, and return - * `NaN` for corresponding loss and gradient rows on GPU. - * @param logits Per-label activations (typically a linear output) of shape `[d_0, d_1, ..., - * d_{r-1}, num_classes]` and dtype `float16`, `float32`, or `float64`. These activation - * energies are interpreted as unnormalized log probabilities. - * @return A `Tensor` of the same shape as `labels` and of the same type as `logits` with the - * softmax cross entropy loss. - */ - @Endpoint(name = "sparseSoftmaxCrossEntropyWithLogits") - public static Operand sparseSoftmaxCrossEntropyWithLogits( - Scope scope, Operand labels, Operand logits) { - // assert shapeIsCompatible(labels.asOutput().shape(), logits.asOutput().shape()): - // String.format("Shapes %s and %s are incompatible", - // labels.asOutput().shape(), logits.asOutput().shape()); - scope = scope.withSubScope("SparseSoftmaxCrossEntropyWithLogits"); - /** cannot use generics on precise_logits as it may be recast later */ - Operand precise_logits = logits; - boolean convertToFloat32 = - logits.asOutput().dataType() == TFloat16.DTYPE - || logits.asOutput().dataType() == TBfloat16.DTYPE; - if (convertToFloat32) { - precise_logits = Cast.create(scope, logits, TFloat32.DTYPE); - } - Shape labelsStaticShape = labels.asOutput().shape(); - org.tensorflow.op.core.Shape labelsShape = - org.tensorflow.op.core.Shape.create(scope, labels); - Shape logitsShape = logits.asOutput().shape(); - Shape logitsShortened = logitsShape.take(logitsShape.numDimensions() - 1); - - boolean staticShapesFullyDefined = - !labelsStaticShape.hasUnknownDimension() && !logitsShortened.hasUnknownDimension(); - if (logitsShape.numDimensions() == 0) { - throw new IllegalArgumentException( - String.format("Logits cannot be scalars - received shape %s.", logitsShape)); - } - if (!logitsShape.hasUnknownDimension() - && !labelsStaticShape.hasUnknownDimension() - && labelsStaticShape.numDimensions() != logitsShape.numDimensions() - 1) { - throw new IllegalArgumentException( - String.format( - "Rank mismatch: Rank of labels (received %s) should equal rank of logits minus 1 (received %s).", - labelsStaticShape.toString(), logitsShape.toString())); - } - - if (staticShapesFullyDefined && !labelsStaticShape.equals(logitsShortened)) { - throw new IllegalArgumentException( - String.format( - "Shape mismatch: The shape of labels (received %s) " - + "should equal the shape of logits except for the last " - + "dimension (received %s).", - labelsStaticShape.toString(), logitsShape.toString())); - } - // Check if no reshapes are required. - if (logitsShape.numDimensions() == 2) { - SparseSoftmaxCrossEntropyWithLogits smax = - SparseSoftmaxCrossEntropyWithLogits.create(scope, precise_logits, labels); - Operand loss = smax.loss(); - if (logits.asOutput().dataType() == TFloat16.DTYPE) { - loss = Cast.create(scope, loss, TFloat16.DTYPE); - } - return loss; - } - - List shapeChecks = new ArrayList<>(); - - if (!staticShapesFullyDefined) { - shapeChecks.add( - AssertThat.create( - scope, - Equal.create( - scope, - org.tensorflow.op.core.Shape.create(scope, labels), - Shapes.take( - scope, - org.tensorflow.op.core.Shape.create(scope, logits), - Constant.scalarOf(scope, -1))), - Collections.singletonList( - Constant.scalarOf( - scope, - "Shape mismatch: The shape of labels " - + "should equal the shape of logits except for the last " - + "dimension ")))); - } - - // Reshape logits to 2 dim, labels to 1 dim. - long numClassses = logitsShape.size(logitsShape.numDimensions() - 1); - - precise_logits = - Reshape.create( - scope, precise_logits, Constant.vectorOf(scope, new long[] {-1, numClassses})); - labels = Reshape.create(scope, labels, Constant.scalarOf(scope, -1)); - scope.withControlDependencies(shapeChecks); - SparseSoftmaxCrossEntropyWithLogits smax = - SparseSoftmaxCrossEntropyWithLogits.create(scope, precise_logits, labels); - Operand cost = smax.loss(); - cost = Reshape.create(scope, cost, labelsShape); - if (logits.asOutput().dataType() == TFloat16.DTYPE) { - cost = Cast.create(scope, cost, TFloat16.DTYPE); - } - return cost; - } - - /** - * Computes sigmoid cross entropy given `logits`. - * - *

Measures the probability error in discrete classification tasks in which each class is - * independent and not mutually exclusive. For instance, one could perform multilabel - * classification where a picture can contain both an elephant and a dog at the same time. - * - *

For brevity, let `x = logits`, `z = labels`. The logistic loss is - * - *

-   *     z * -log(sigmoid(x)) + (1 - z) * -log(1 - sigmoid(x))
-   *     = z * -log(1 / (1 + exp(-x))) + (1 - z) * -log(exp(-x) / (1 + exp(-x)))
-   *     = z * log(1 + exp(-x)) + (1 - z) * (-log(exp(-x)) + log(1 + exp(-x)))
-   *     = z * log(1 + exp(-x)) + (1 - z) * (x + log(1 + exp(-x))
-   *     = (1 - z) * x + log(1 + exp(-x))
-   *     = x - x * z + log(1 + exp(-x))
-   * 
- * - *

For x < 0, to avoid overflow in exp(-x), we reformulate the above - * - *

-   *      x - x * z + log(1 + exp(-x))
-   *      = log(exp(x)) - x * z + log(1 + exp(-x))
-   *      = - x * z + log(1 + exp(x))
-   * 
- * - *

Hence, to ensure stability and avoid overflow, the implementation uses this equivalent - * formulation - * - *

-   *     max(x, 0) - x * z + log(1 + exp(-abs(x)))
-   * 
- * - *

`logits` and `labels` must have the same type and shape. - * - * @param scope The TensorFlow scope - * @param labels the labels - * @param logits the logits of type float32 or float64 - * @param the type of labels and logits - * @return the component-wise logistic losses. - */ - @Endpoint(name = "sigmoidCrossEntropyWithLogits") - public static Operand sigmoidCrossEntropyWithLogits( - Scope scope, Operand labels, Operand logits) { - if (labels.asOutput().shape().numDimensions() != logits.asOutput().shape().numDimensions()) - throw new IllegalArgumentException( - String.format( - "logits and labels must have the same shape (%s vs %s)", - labels.asOutput().shape().toString(), logits.asOutput().shape())); - Operand zeros = - Cast.create(scope, ZerosLike.create(scope, logits), logits.asOutput().dataType()); - Operand cond = GreaterEqual.create(scope, logits, zeros); - - Operand relu_logits = Select.create(scope, cond, logits, zeros); - Operand neg_abs_logits = Select.create(scope, cond, Neg.create(scope, logits), logits); - return Add.create( - scope, - Sub.create(scope, relu_logits, Mul.create(scope, logits, labels)), - Log1p.create(scope, Exp.create(scope, neg_abs_logits))); - } - - /** - * Flattens logits' outer dimensions and keep its last dimension. - * - * @param scope the TensorFlow scope - * @param logits the logits - * @param the type of logits - * @return the flattened logits - */ - private static Operand flattenOuterDims(Scope scope, Operand logits) { - Operand one = Constant.scalarOf(scope, 1L); - - org.tensorflow.ndarray.Shape shape = logits.asOutput().shape(); - int ndims = shape.numDimensions(); - if (!shape.hasUnknownDimension()) { - long product = 1L; - boolean productValid = true; - for (int i = ndims - 2; i >= 0; i--) { - long d = shape.size(i); - if (d == org.tensorflow.ndarray.Shape.UNKNOWN_SIZE) { - productValid = false; - break; - } - product *= d; - } - if (productValid) { - org.tensorflow.ndarray.Shape outputShape = Shape.of(product, shape.size(ndims - 1)); - return Reshape.create(scope, logits, Constant.vectorOf(scope, outputShape.asArray())); - } - } - - Operand rank = Cast.create(scope, Rank.create(scope, logits), TInt64.DTYPE); - Operand rankMinusOne = Sub.create(scope, rank, one); - - Operand last_dim_size = - Slice.create( - scope, - org.tensorflow.op.core.Shape.create(scope, logits, TInt64.DTYPE), - rankMinusOne, - one); - Operand concat = - Concat.create( - scope, - Arrays.asList(Constant.vectorOf(scope, new long[] {-1}), last_dim_size), - Constant.scalarOf(scope, 0)); - return Reshape.create(scope, logits, concat); - } - - /** - * Move the dim to the end if dim is not the last dimension. - * - * @param scope The TensorFlow Scope - * @param input the input to reshape - * @param dim_index the index to move - * @param rank the number of Dimensions in the tensor - * @param the data type of the tensor. - * @param the data type of the rank - * @return the reshaped input - */ - private static Operand moveDimToEnd( - Scope scope, Operand input, int dim_index, Operand rank) { - DataType rankDType = rank.asOutput().dataType(); - Operand one = Cast.create(scope, Constant.scalarOf(scope, 1), rankDType); - List> concatList = - Arrays.asList( - Range.create( - scope, - Cast.create(scope, Constant.scalarOf(scope, dim_index), rankDType), - one, - one), - Range.create( - scope, - Cast.create(scope, Constant.scalarOf(scope, (dim_index + 1)), rankDType), - rank, - one)); - return Transpose.create( - scope, input, Concat.create(scope, concatList, Constant.scalarOf(scope, 0))); - } -} From 515b799bf793fbb38a47b5aa92d948dad052187b Mon Sep 17 00:00:00 2001 From: Jim Clarke Date: Thu, 3 Sep 2020 10:34:57 -0400 Subject: [PATCH 21/33] Reformatted code --- .../src/main/java/org/tensorflow/types/TBool.java | 9 +++++---- .../src/main/java/org/tensorflow/types/TString.java | 11 ++++++----- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TBool.java b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TBool.java index bac5fb96f87..3cc72101893 100644 --- a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TBool.java +++ b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TBool.java @@ -17,21 +17,22 @@ package org.tensorflow.types; -import java.util.function.Consumer; import org.tensorflow.DataType; import org.tensorflow.Tensor; import org.tensorflow.exceptions.TensorFlowException; import org.tensorflow.internal.buffer.TensorBuffers; import org.tensorflow.internal.c_api.TF_Tensor; -import org.tensorflow.ndarray.buffer.layout.DataLayouts; -import org.tensorflow.ndarray.Shape; -import org.tensorflow.ndarray.buffer.BooleanDataBuffer; import org.tensorflow.ndarray.BooleanNdArray; import org.tensorflow.ndarray.NdArray; +import org.tensorflow.ndarray.Shape; import org.tensorflow.ndarray.StdArrays; +import org.tensorflow.ndarray.buffer.BooleanDataBuffer; +import org.tensorflow.ndarray.buffer.layout.DataLayouts; import org.tensorflow.ndarray.impl.dense.BooleanDenseNdArray; import org.tensorflow.types.family.TType; +import java.util.function.Consumer; + /** * Boolean tensor type. * diff --git a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TString.java b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TString.java index 0f097a16ddb..6e2e7a7ba56 100644 --- a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TString.java +++ b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TString.java @@ -17,23 +17,24 @@ package org.tensorflow.types; -import java.nio.charset.Charset; -import java.nio.charset.StandardCharsets; -import java.util.function.Function; import org.tensorflow.DataType; import org.tensorflow.Tensor; import org.tensorflow.internal.buffer.StringTensorBuffer; import org.tensorflow.internal.buffer.TensorBuffers; import org.tensorflow.internal.c_api.TF_Tensor; +import org.tensorflow.ndarray.NdArray; +import org.tensorflow.ndarray.NdArrays; import org.tensorflow.ndarray.Shape; import org.tensorflow.ndarray.buffer.DataBuffer; import org.tensorflow.ndarray.buffer.layout.DataLayout; import org.tensorflow.ndarray.buffer.layout.DataLayouts; -import org.tensorflow.ndarray.NdArray; -import org.tensorflow.ndarray.NdArrays; import org.tensorflow.ndarray.impl.dense.DenseNdArray; import org.tensorflow.types.family.TType; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; +import java.util.function.Function; + /** * String type. * From 5a9fe3747b730cbfb28b544bcac3aeb2077499a2 Mon Sep 17 00:00:00 2001 From: Jim Clarke Date: Thu, 3 Sep 2020 10:35:19 -0400 Subject: [PATCH 22/33] Added sub scope --- .../java/org/tensorflow/op/nn/SigmoidCrossEntropyWithLogits.java | 1 + .../java/org/tensorflow/op/nn/SoftmaxCrossEntropyWithLogits.java | 1 + 2 files changed, 2 insertions(+) diff --git a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SigmoidCrossEntropyWithLogits.java b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SigmoidCrossEntropyWithLogits.java index 1e8f3dd7907..1918e55a2f7 100644 --- a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SigmoidCrossEntropyWithLogits.java +++ b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SigmoidCrossEntropyWithLogits.java @@ -68,6 +68,7 @@ public static Operand sigmoidCrossEntropyWithLogits( "logits and labels must have the same shape (%s vs %s)", labels.asOutput().shape().toString(), logits.asOutput().shape())); } + scope = scope.withSubScope("SigmoidCrossEntropyWithLogits"); Operand zeros = Cast.create(scope, ZerosLike.create(scope, logits), logits.asOutput().dataType()); diff --git a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SoftmaxCrossEntropyWithLogits.java b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SoftmaxCrossEntropyWithLogits.java index 6d8f5ef6f78..124b520aac8 100644 --- a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SoftmaxCrossEntropyWithLogits.java +++ b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SoftmaxCrossEntropyWithLogits.java @@ -73,6 +73,7 @@ public class SoftmaxCrossEntropyWithLogits { @Endpoint(name = "softmaxCrossEntropyWithLogits") public static Operand softmaxCrossEntropyWithLogits( Scope scope, Operand labels, Operand logits, int axis) { + scope = scope.withSubScope("SoftmaxCrossEntropyWithLogits"); axis = axis % logits.asOutput().shape().numDimensions(); if (axis < 0) { axis += logits.asOutput().shape().numDimensions(); From 8d21dd7266e48a4df36813ed3fb9dc1adee58915 Mon Sep 17 00:00:00 2001 From: Jim Clarke Date: Thu, 3 Sep 2020 12:30:10 -0400 Subject: [PATCH 23/33] Miscellaneous fixes based on review comments. --- .../op/nn/SigmoidCrossEntropyWithLogits.java | 34 ++++++++++++++++--- .../op/nn/SoftmaxCrossEntropyWithLogits.java | 14 ++++---- .../SparseSoftmaxCrossEntropyWithLogits.java | 10 +++--- 3 files changed, 40 insertions(+), 18 deletions(-) diff --git a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SigmoidCrossEntropyWithLogits.java b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SigmoidCrossEntropyWithLogits.java index 1918e55a2f7..4f3e9569103 100644 --- a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SigmoidCrossEntropyWithLogits.java +++ b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SigmoidCrossEntropyWithLogits.java @@ -1,6 +1,7 @@ package org.tensorflow.op.nn; import org.tensorflow.Operand; +import org.tensorflow.ndarray.Shape; import org.tensorflow.op.Scope; import org.tensorflow.op.annotation.Endpoint; import org.tensorflow.op.annotation.Operator; @@ -62,7 +63,7 @@ public class SigmoidCrossEntropyWithLogits { @Endpoint(name = "sigmoidCrossEntropyWithLogits") public static Operand sigmoidCrossEntropyWithLogits( Scope scope, Operand labels, Operand logits) { - if (!labels.asOutput().shape().equals(logits.asOutput().shape())) { + if (!isCompatible(labels.asOutput().shape(), logits.asOutput().shape())) { throw new IllegalArgumentException( String.format( "logits and labels must have the same shape (%s vs %s)", @@ -74,11 +75,34 @@ public static Operand sigmoidCrossEntropyWithLogits( Cast.create(scope, ZerosLike.create(scope, logits), logits.asOutput().dataType()); Operand cond = GreaterEqual.create(scope, logits, zeros); - Operand relu_logits = Select.create(scope, cond, logits, zeros); - Operand neg_abs_logits = Select.create(scope, cond, Neg.create(scope, logits), logits); + Operand reluLogits = Select.create(scope, cond, logits, zeros); + Operand negAbsLogits = Select.create(scope, cond, Neg.create(scope, logits), logits); return Add.create( scope, - Sub.create(scope, relu_logits, Mul.create(scope, logits, labels)), - Log1p.create(scope, Exp.create(scope, neg_abs_logits))); + Sub.create(scope, reluLogits, Mul.create(scope, logits, labels)), + Log1p.create(scope, Exp.create(scope, negAbsLogits))); + } + /** + * Determine if 2 shapes are compatible + * + *

2 shapes are compatible if they have the same number of dimensions, and if the corresponding + * dimensions are equal, or at least one of the corresponding dimensions is unknown. + * + * @param shape the first shape + * @param other the second shape + * @return true, if the shapes are compatible. + */ + private static boolean isCompatible(Shape shape, Shape other) { + if (shape.numDimensions() != other.numDimensions()) return false; + for (int i = 0; i < shape.numDimensions(); i++) { + long aShapeDim = shape.size(i); + long bShapeDim = other.size(i); + if (aShapeDim == bShapeDim + || (aShapeDim == Shape.UNKNOWN_SIZE || bShapeDim == Shape.UNKNOWN_SIZE)) { + continue; + } + return false; + } + return true; } } diff --git a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SoftmaxCrossEntropyWithLogits.java b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SoftmaxCrossEntropyWithLogits.java index 124b520aac8..f3caa0c4926 100644 --- a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SoftmaxCrossEntropyWithLogits.java +++ b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SoftmaxCrossEntropyWithLogits.java @@ -113,9 +113,9 @@ public static Operand softmaxCrossEntrop Operand outputShape = Slice.create( scope, - Constant.vectorOf(scope, inputShape.asArray()), - Constant.vectorOf(scope, new long[] {0}), - Constant.vectorOf(scope, new long[] {inputShape.numDimensions() - 1})); + Constant.tensorOf(scope, inputShape), + Constant.arrayOf(scope, 0L), + Constant.arrayOf(scope, inputShape.numDimensions() - 1L)); cost = Reshape.create(scope, cost, outputShape); if (scope.env().isGraph() && !shape.hasUnknownDimension()) { long[] array = shape.asArray(); @@ -129,8 +129,7 @@ public static Operand softmaxCrossEntrop for (int i = axis + 1; i < shape.numDimensions(); i++) { newArray[i - 1] = shape.size(i); } - Shape newShape = Shape.of(newArray); - cost = Reshape.create(scope, cost, Constant.vectorOf(scope, newShape.asArray())); + cost = Reshape.create(scope, cost, Constant.vectorOf(scope, newArray)); } if (convertToFloat32) { @@ -150,7 +149,7 @@ public static Operand softmaxCrossEntrop private static Operand flattenOuterDims(Scope scope, Operand logits) { Operand one = Constant.scalarOf(scope, 1L); - org.tensorflow.ndarray.Shape shape = logits.asOutput().shape(); + Shape shape = logits.asOutput().shape(); int ndims = shape.numDimensions(); if (!shape.hasUnknownDimension()) { long product = 1L; @@ -164,8 +163,7 @@ private static Operand flattenOuterDims(Scope scope, Oper product *= d; } if (productValid) { - return Reshape.create( - scope, logits, Constant.vectorOf(scope, new long[] {product, shape.size(-1)})); + return Reshape.create(scope, logits, Constant.arrayOf(scope, product, shape.size(-1))); } } diff --git a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SparseSoftmaxCrossEntropyWithLogits.java b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SparseSoftmaxCrossEntropyWithLogits.java index 8d125235719..ebd6f74e7d8 100644 --- a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SparseSoftmaxCrossEntropyWithLogits.java +++ b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SparseSoftmaxCrossEntropyWithLogits.java @@ -65,6 +65,8 @@ public class SparseSoftmaxCrossEntropyWithLogits { * probabilities. * @return A Tensor of the same shape as labels and of the same type as * logits with the softmax cross entropy loss. + * @throws IllegalArgumentException If logits are scalars (need to have rank >= 1) or if the rank + * of the labels is not equal to the rank of the logits minus one. */ @Endpoint(name = "sparseSoftmaxCrossEntropyWithLogits") public static Operand sparseSoftmaxCrossEntropyWithLogits( @@ -140,12 +142,10 @@ public static Operand sparseSoftmaxCrossE + "dimension ")))); } - // Reshape logits to 2 dim, labels to 1 dim. - long numClassses = logitsShape.size(logitsShape.numDimensions() - 1); + // Reshape logits to 2 dims, labels to 1 dim. + long numClassses = logitsShape.size(-1); - preciseLogits = - Reshape.create( - scope, preciseLogits, Constant.vectorOf(scope, new long[] {-1, numClassses})); + preciseLogits = Reshape.create(scope, preciseLogits, Constant.arrayOf(scope, -1L, numClassses)); labels = Reshape.create(scope, labels, Constant.scalarOf(scope, -1)); scope.withControlDependencies(shapeChecks); org.tensorflow.op.nn.raw.SparseSoftmaxCrossEntropyWithLogits smax = From 4c3cc78a999505240be35040b8865d86b955e1af Mon Sep 17 00:00:00 2001 From: Jim Clarke Date: Thu, 3 Sep 2020 18:52:11 -0400 Subject: [PATCH 24/33] Fixed op_generator.cc to remove a spurious new line in the generated Java files for some Ops. This also resulted in new generated source that are also committed. --- .../src/bazel/op_generator/op_generator.cc | 10 +++++++--- .../src/gen/java/org/tensorflow/op/core/Abort.java | 1 - .../gen/java/org/tensorflow/op/core/AssertThat.java | 1 - .../org/tensorflow/op/core/AssignAddVariableOp.java | 1 - .../org/tensorflow/op/core/AssignSubVariableOp.java | 1 - .../java/org/tensorflow/op/core/AssignVariableOp.java | 1 - .../gen/java/org/tensorflow/op/core/BarrierClose.java | 1 - .../java/org/tensorflow/op/core/BarrierInsertMany.java | 1 - .../java/org/tensorflow/op/core/ConsumeMutexLock.java | 1 - .../java/org/tensorflow/op/core/ControlTrigger.java | 1 - .../org/tensorflow/op/core/DeleteSessionTensor.java | 1 - .../java/org/tensorflow/op/core/DestroyResourceOp.java | 1 - .../gen/java/org/tensorflow/op/core/DeviceIndex.java | 3 +++ .../java/org/tensorflow/op/core/InitializeTable.java | 1 - .../op/core/InitializeTableFromTextFile.java | 1 - .../java/org/tensorflow/op/core/LookupTableImport.java | 1 - .../java/org/tensorflow/op/core/LookupTableInsert.java | 1 - .../java/org/tensorflow/op/core/LookupTableRemove.java | 1 - .../src/gen/java/org/tensorflow/op/core/MapClear.java | 1 - .../src/gen/java/org/tensorflow/op/core/MapStage.java | 1 - .../src/gen/java/org/tensorflow/op/core/NoOp.java | 1 - .../java/org/tensorflow/op/core/OrderedMapClear.java | 1 - .../java/org/tensorflow/op/core/OrderedMapStage.java | 1 - .../src/gen/java/org/tensorflow/op/core/Print.java | 1 - .../org/tensorflow/op/core/ResourceScatterAdd.java | 1 - .../org/tensorflow/op/core/ResourceScatterDiv.java | 1 - .../org/tensorflow/op/core/ResourceScatterMax.java | 1 - .../org/tensorflow/op/core/ResourceScatterMin.java | 1 - .../org/tensorflow/op/core/ResourceScatterMul.java | 1 - .../org/tensorflow/op/core/ResourceScatterNdAdd.java | 1 - .../org/tensorflow/op/core/ResourceScatterNdMax.java | 2 ++ .../org/tensorflow/op/core/ResourceScatterNdMin.java | 2 ++ .../org/tensorflow/op/core/ResourceScatterNdSub.java | 1 - .../tensorflow/op/core/ResourceScatterNdUpdate.java | 1 - .../org/tensorflow/op/core/ResourceScatterSub.java | 1 - .../org/tensorflow/op/core/ResourceScatterUpdate.java | 1 - .../tensorflow/op/core/ResourceStridedSliceAssign.java | 1 - .../gen/java/org/tensorflow/op/core/ScatterNdMax.java | 3 +++ .../gen/java/org/tensorflow/op/core/ScatterNdMin.java | 3 +++ .../src/gen/java/org/tensorflow/op/core/Send.java | 1 - .../src/gen/java/org/tensorflow/op/core/Stage.java | 1 - .../gen/java/org/tensorflow/op/core/StageClear.java | 1 - .../java/org/tensorflow/op/core/TensorArrayClose.java | 1 - .../op/core/TensorForestCreateTreeVariable.java | 1 - .../op/core/TensorForestTreeDeserialize.java | 1 - .../org/tensorflow/op/core/TensorScatterNdMax.java | 3 +++ .../org/tensorflow/op/core/TensorScatterNdMin.java | 3 +++ .../tensorflow/op/core/XlaSpmdFullToShardShape.java | 3 +++ .../tensorflow/op/core/XlaSpmdShardToFullShape.java | 3 +++ .../java/org/tensorflow/op/data/DatasetToTfRecord.java | 1 - .../java/org/tensorflow/op/data/DeleteIterator.java | 1 - .../java/org/tensorflow/op/data/DeleteMemoryCache.java | 1 - .../tensorflow/op/data/DeleteMultiDeviceIterator.java | 1 - .../org/tensorflow/op/data/DeserializeIterator.java | 1 - .../tensorflow/op/data/InitializeTableFromDataset.java | 2 ++ .../gen/java/org/tensorflow/op/data/MakeIterator.java | 1 - .../java/org/tensorflow/op/data/RegisterDataset.java | 3 +++ .../tensorflow/op/data/ShuffleAndRepeatDataset.java | 2 +- .../java/org/tensorflow/op/data/ShuffleDataset.java | 2 +- .../op/data/experimental/CompressElement.java | 3 +++ .../op/data/experimental/DataServiceDataset.java | 3 +++ .../op/data/experimental/DatasetToTFRecord.java | 1 - .../op/data/experimental/DummyIterationCounter.java | 3 +++ .../experimental/StatsAggregatorSetSummaryWriter.java | 1 - .../op/data/experimental/UncompressElement.java | 3 +++ .../op/estimator/BoostedTreesCreateEnsemble.java | 1 - .../BoostedTreesCreateQuantileStreamResource.java | 1 - .../op/estimator/BoostedTreesDeserializeEnsemble.java | 1 - ...BoostedTreesQuantileStreamResourceAddSummaries.java | 1 - .../BoostedTreesQuantileStreamResourceDeserialize.java | 1 - .../BoostedTreesQuantileStreamResourceFlush.java | 1 - .../op/estimator/BoostedTreesUpdateEnsemble.java | 1 - .../op/estimator/BoostedTreesUpdateEnsembleV2.java | 1 - .../java/org/tensorflow/op/image/ExtractGlimpse.java | 2 +- .../src/gen/java/org/tensorflow/op/io/QueueClose.java | 1 - .../gen/java/org/tensorflow/op/io/QueueEnqueue.java | 1 - .../java/org/tensorflow/op/io/QueueEnqueueMany.java | 1 - .../src/gen/java/org/tensorflow/op/io/ReaderReset.java | 1 - .../java/org/tensorflow/op/io/ReaderRestoreState.java | 1 - .../src/gen/java/org/tensorflow/op/io/WriteFile.java | 1 - .../tensorflow/op/linalg/BandedTriangularSolve.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/BesselI0.java | 3 +++ .../src/gen/java/org/tensorflow/op/math/BesselI1.java | 3 +++ .../gen/java/org/tensorflow/op/math/DenseBincount.java | 3 +++ .../java/org/tensorflow/op/math/special/BesselJ0.java | 3 +++ .../java/org/tensorflow/op/math/special/BesselJ1.java | 3 +++ .../java/org/tensorflow/op/math/special/BesselK0.java | 3 +++ .../java/org/tensorflow/op/math/special/BesselK0e.java | 3 +++ .../java/org/tensorflow/op/math/special/BesselK1.java | 3 +++ .../java/org/tensorflow/op/math/special/BesselK1e.java | 3 +++ .../java/org/tensorflow/op/math/special/BesselY0.java | 3 +++ .../java/org/tensorflow/op/math/special/BesselY1.java | 3 +++ .../java/org/tensorflow/op/ragged/RaggedBincount.java | 3 +++ .../tensorflow/op/ragged/RaggedCountSparseOutput.java | 3 +++ .../gen/java/org/tensorflow/op/ragged/RaggedCross.java | 3 +++ .../tensorflow/op/random/AnonymousSeedGenerator.java | 3 +++ .../op/random/DeleteRandomSeedGenerator.java | 1 - .../org/tensorflow/op/random/DeleteSeedGenerator.java | 2 ++ .../src/gen/java/org/tensorflow/op/random/RngSkip.java | 1 - .../random/StatelessParameterizedTruncatedNormal.java | 3 +++ .../op/random/experimental/DummySeedGenerator.java | 3 +++ .../tensorflow/op/sparse/DenseCountSparseOutput.java | 3 +++ .../op/sparse/SparseAccumulatorApplyGradient.java | 1 - .../java/org/tensorflow/op/sparse/SparseBincount.java | 3 +++ .../tensorflow/op/sparse/SparseCountSparseOutput.java | 3 +++ .../gen/java/org/tensorflow/op/sparse/SparseCross.java | 2 +- .../org/tensorflow/op/sparse/SparseCrossHashed.java | 3 +++ .../org/tensorflow/op/summary/CloseSummaryWriter.java | 1 - .../tensorflow/op/summary/CreateSummaryDbWriter.java | 1 - .../tensorflow/op/summary/CreateSummaryFileWriter.java | 1 - .../org/tensorflow/op/summary/FlushSummaryWriter.java | 1 - .../java/org/tensorflow/op/summary/ImportEvent.java | 1 - .../org/tensorflow/op/summary/WriteAudioSummary.java | 1 - .../org/tensorflow/op/summary/WriteGraphSummary.java | 1 - .../tensorflow/op/summary/WriteHistogramSummary.java | 1 - .../org/tensorflow/op/summary/WriteImageSummary.java | 1 - .../tensorflow/op/summary/WriteRawProtoSummary.java | 1 - .../org/tensorflow/op/summary/WriteScalarSummary.java | 1 - .../java/org/tensorflow/op/summary/WriteSummary.java | 1 - .../org/tensorflow/op/tpu/ConfigureTPUEmbedding.java | 1 - .../op/tpu/EnqueueTPUEmbeddingIntegerBatch.java | 1 - .../op/tpu/EnqueueTPUEmbeddingRaggedTensorBatch.java | 2 ++ .../op/tpu/EnqueueTPUEmbeddingSparseBatch.java | 1 - .../op/tpu/EnqueueTPUEmbeddingSparseTensorBatch.java | 1 - .../gen/java/org/tensorflow/op/tpu/InfeedEnqueue.java | 1 - .../op/tpu/InfeedEnqueuePrelinearizedBuffer.java | 1 - .../java/org/tensorflow/op/tpu/InfeedEnqueueTuple.java | 1 - .../op/tpu/LoadTPUEmbeddingADAMParameters.java | 1 - .../LoadTPUEmbeddingADAMParametersGradAccumDebug.java | 1 - .../op/tpu/LoadTPUEmbeddingAdadeltaParameters.java | 1 - ...adTPUEmbeddingAdadeltaParametersGradAccumDebug.java | 1 - .../op/tpu/LoadTPUEmbeddingAdagradParameters.java | 1 - ...oadTPUEmbeddingAdagradParametersGradAccumDebug.java | 1 - .../tpu/LoadTPUEmbeddingCenteredRMSPropParameters.java | 1 - .../op/tpu/LoadTPUEmbeddingFTRLParameters.java | 1 - .../LoadTPUEmbeddingFTRLParametersGradAccumDebug.java | 1 - .../tpu/LoadTPUEmbeddingMDLAdagradLightParameters.java | 1 - .../op/tpu/LoadTPUEmbeddingMomentumParameters.java | 1 - ...adTPUEmbeddingMomentumParametersGradAccumDebug.java | 1 - .../tpu/LoadTPUEmbeddingProximalAdagradParameters.java | 1 - ...beddingProximalAdagradParametersGradAccumDebug.java | 1 - .../op/tpu/LoadTPUEmbeddingProximalYogiParameters.java | 2 ++ ...UEmbeddingProximalYogiParametersGradAccumDebug.java | 2 ++ .../op/tpu/LoadTPUEmbeddingRMSPropParameters.java | 1 - ...oadTPUEmbeddingRMSPropParametersGradAccumDebug.java | 1 - ...PUEmbeddingStochasticGradientDescentParameters.java | 1 - ...chasticGradientDescentParametersGradAccumDebug.java | 2 ++ .../gen/java/org/tensorflow/op/tpu/OutfeedEnqueue.java | 1 - .../org/tensorflow/op/tpu/OutfeedEnqueueTuple.java | 1 - .../RetrieveTPUEmbeddingProximalYogiParameters.java | 3 +++ ...UEmbeddingProximalYogiParametersGradAccumDebug.java | 3 +++ ...chasticGradientDescentParametersGradAccumDebug.java | 3 +++ .../tensorflow/op/tpu/SendTPUEmbeddingGradients.java | 1 - .../org/tensorflow/op/tpu/ShutdownDistributedTPU.java | 1 - .../org/tensorflow/op/tpu/TPUReplicateMetadata.java | 1 - .../tensorflow/op/train/AccumulatorApplyGradient.java | 1 - .../tensorflow/op/train/AccumulatorSetGlobalStep.java | 1 - .../org/tensorflow/op/train/MergeV2Checkpoints.java | 1 - .../src/gen/java/org/tensorflow/op/train/NegTrain.java | 1 - .../op/train/ResourceAccumulatorApplyGradient.java | 1 - .../op/train/ResourceAccumulatorSetGlobalStep.java | 1 - .../org/tensorflow/op/train/ResourceApplyAdaMax.java | 1 - .../org/tensorflow/op/train/ResourceApplyAdadelta.java | 1 - .../org/tensorflow/op/train/ResourceApplyAdagrad.java | 1 - .../tensorflow/op/train/ResourceApplyAdagradDa.java | 1 - .../org/tensorflow/op/train/ResourceApplyAdam.java | 1 - .../op/train/ResourceApplyAdamWithAmsgrad.java | 1 - .../org/tensorflow/op/train/ResourceApplyAddSign.java | 1 - .../op/train/ResourceApplyCenteredRmsProp.java | 1 - .../org/tensorflow/op/train/ResourceApplyFtrl.java | 8 +++----- .../op/train/ResourceApplyGradientDescent.java | 1 - .../op/train/ResourceApplyKerasMomentum.java | 1 - .../org/tensorflow/op/train/ResourceApplyMomentum.java | 1 - .../tensorflow/op/train/ResourceApplyPowerSign.java | 1 - .../op/train/ResourceApplyProximalAdagrad.java | 1 - .../op/train/ResourceApplyProximalGradientDescent.java | 1 - .../org/tensorflow/op/train/ResourceApplyRmsProp.java | 1 - .../op/train/ResourceSparseApplyAdadelta.java | 1 - .../op/train/ResourceSparseApplyAdagrad.java | 1 - .../op/train/ResourceSparseApplyAdagradDa.java | 1 - .../op/train/ResourceSparseApplyAdagradV2.java | 1 - .../op/train/ResourceSparseApplyCenteredRmsProp.java | 1 - .../tensorflow/op/train/ResourceSparseApplyFtrl.java | 7 ++----- .../op/train/ResourceSparseApplyKerasMomentum.java | 1 - .../op/train/ResourceSparseApplyMomentum.java | 1 - .../op/train/ResourceSparseApplyProximalAdagrad.java | 1 - .../ResourceSparseApplyProximalGradientDescent.java | 1 - .../op/train/ResourceSparseApplyRmsProp.java | 1 - .../src/gen/java/org/tensorflow/op/train/Save.java | 1 - .../gen/java/org/tensorflow/op/train/SaveSlices.java | 1 - .../gen/java/org/tensorflow/op/train/SdcaShrinkL1.java | 1 - .../src/gen/java/org/tensorflow/op/xla/Send.java | 1 - 192 files changed, 143 insertions(+), 157 deletions(-) diff --git a/tensorflow-core/tensorflow-core-api/src/bazel/op_generator/op_generator.cc b/tensorflow-core/tensorflow-core-api/src/bazel/op_generator/op_generator.cc index 03db4be125b..843f3bdb247 100644 --- a/tensorflow-core/tensorflow-core-api/src/bazel/op_generator/op_generator.cc +++ b/tensorflow-core/tensorflow-core-api/src/bazel/op_generator/op_generator.cc @@ -514,11 +514,15 @@ void GenerateOp(const OpSpec& op, const EndpointSpec& endpoint, Javadoc name_javadoc = Javadoc::Create("The name of this op, as known by TensorFlow core engine"); string quoted_string = "\"" + op.graph_op_name() + "\""; writer.WriteFieldWithInitializer(nameVariable, PUBLIC|STATIC|FINAL, &name_javadoc, quoted_string ); - writer.EndLine(); - for (const ArgumentSpec& output : op.outputs()) { - writer.WriteField(output.var(), PRIVATE); + + if(!op.outputs().empty()) { + writer.EndLine(); + for (const ArgumentSpec& output : op.outputs()) { + writer.WriteField(output.var(), PRIVATE); + } } + RenderConstructor(op, op_class, &writer); writer.EndType(); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Abort.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Abort.java index 53e9401dfa2..a84f2405b19 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Abort.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Abort.java @@ -104,7 +104,6 @@ public static Options exitWithoutError(Boolean exitWithoutError) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "Abort"; - private Abort(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssertThat.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssertThat.java index 950830b7462..dce70c04e5a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssertThat.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssertThat.java @@ -90,7 +90,6 @@ public static Options summarize(Long summarize) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "Assert"; - private AssertThat(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssignAddVariableOp.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssignAddVariableOp.java index 5adaccf15e0..53edc808882 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssignAddVariableOp.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssignAddVariableOp.java @@ -55,7 +55,6 @@ public static AssignAddVariableOp create(Scope scope, Operand< /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "AssignAddVariableOp"; - private AssignAddVariableOp(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssignSubVariableOp.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssignSubVariableOp.java index 4bb683c97d2..372a71b2168 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssignSubVariableOp.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssignSubVariableOp.java @@ -55,7 +55,6 @@ public static AssignSubVariableOp create(Scope scope, Operand< /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "AssignSubVariableOp"; - private AssignSubVariableOp(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssignVariableOp.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssignVariableOp.java index 90cabd12a24..ac08d62f9a8 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssignVariableOp.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/AssignVariableOp.java @@ -55,7 +55,6 @@ public static AssignVariableOp create(Scope scope, Operand /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "AssignVariableOp"; - private AssignVariableOp(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BarrierClose.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BarrierClose.java index a777d684ec1..514f4f50edf 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BarrierClose.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BarrierClose.java @@ -95,7 +95,6 @@ public static Options cancelPendingEnqueues(Boolean cancelPendingEnqueues) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "BarrierClose"; - private BarrierClose(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BarrierInsertMany.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BarrierInsertMany.java index 31488738838..b652c11a35c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BarrierInsertMany.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/BarrierInsertMany.java @@ -63,7 +63,6 @@ public static BarrierInsertMany create(Scope scope, Operand mutexLock) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ConsumeMutexLock"; - private ConsumeMutexLock(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ControlTrigger.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ControlTrigger.java index 721112b8204..e40715c9f2c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ControlTrigger.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ControlTrigger.java @@ -48,7 +48,6 @@ public static ControlTrigger create(Scope scope) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ControlTrigger"; - private ControlTrigger(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DeleteSessionTensor.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DeleteSessionTensor.java index 50c7615a0ff..5f92cc26ca2 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DeleteSessionTensor.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DeleteSessionTensor.java @@ -50,7 +50,6 @@ public static DeleteSessionTensor create(Scope scope, Operand handle) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "DeleteSessionTensor"; - private DeleteSessionTensor(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DestroyResourceOp.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DestroyResourceOp.java index e1958682ee1..8a427166874 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DestroyResourceOp.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DestroyResourceOp.java @@ -88,7 +88,6 @@ public static Options ignoreLookupError(Boolean ignoreLookupError) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "DestroyResourceOp"; - private DestroyResourceOp(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DeviceIndex.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DeviceIndex.java index 26f984e840d..f033d3fcc9d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DeviceIndex.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/DeviceIndex.java @@ -68,6 +68,9 @@ public Output asOutput() { return index; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DeviceIndex"; + private Output index; private DeviceIndex(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/InitializeTable.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/InitializeTable.java index 5de2ca6ff07..48662ed420d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/InitializeTable.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/InitializeTable.java @@ -54,7 +54,6 @@ public static InitializeTable create(Scope sc /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "InitializeTableV2"; - private InitializeTable(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/InitializeTableFromTextFile.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/InitializeTableFromTextFile.java index 0a88cea3ef2..2050c4d8628 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/InitializeTableFromTextFile.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/InitializeTableFromTextFile.java @@ -121,7 +121,6 @@ public static Options delimiter(String delimiter) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "InitializeTableFromTextFileV2"; - private InitializeTableFromTextFile(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableImport.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableImport.java index a94393a50f1..9884a40e3cb 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableImport.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableImport.java @@ -57,7 +57,6 @@ public static LookupTableImport create(Scope /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "LookupTableImportV2"; - private LookupTableImport(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableInsert.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableInsert.java index c31784ea942..0f09ae25d1b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableInsert.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableInsert.java @@ -57,7 +57,6 @@ public static LookupTableInsert create(Scope /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "LookupTableInsertV2"; - private LookupTableInsert(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableRemove.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableRemove.java index 584e7e1325c..41463ad7539 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableRemove.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/LookupTableRemove.java @@ -54,7 +54,6 @@ public static LookupTableRemove create(Scope scope, Operand /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "LookupTableRemoveV2"; - private LookupTableRemove(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapClear.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapClear.java index ea7581ef2c7..bad1e90554f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapClear.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapClear.java @@ -145,7 +145,6 @@ public static Options sharedName(String sharedName) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "MapClear"; - private MapClear(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapStage.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapStage.java index 5d72ce8f22f..9291b32d53b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapStage.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/MapStage.java @@ -160,7 +160,6 @@ public static Options sharedName(String sharedName) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "MapStage"; - private MapStage(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/NoOp.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/NoOp.java index 862aabcd795..922b5d55ce3 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/NoOp.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/NoOp.java @@ -46,7 +46,6 @@ public static NoOp create(Scope scope) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "NoOp"; - private NoOp(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapClear.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapClear.java index 29f4133ce09..05a1b7ab984 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapClear.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapClear.java @@ -145,7 +145,6 @@ public static Options sharedName(String sharedName) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "OrderedMapClear"; - private OrderedMapClear(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapStage.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapStage.java index b51f94c148a..7e02973e3c6 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapStage.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/OrderedMapStage.java @@ -162,7 +162,6 @@ public static Options sharedName(String sharedName) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "OrderedMapStage"; - private OrderedMapStage(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Print.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Print.java index 3e96c00d369..52b933329a0 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Print.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Print.java @@ -105,7 +105,6 @@ public static Options end(String end) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "PrintV2"; - private Print(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterAdd.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterAdd.java index 5383062823b..0966dd5fcc4 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterAdd.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterAdd.java @@ -75,7 +75,6 @@ public static ResourceScatterAdd create(Sco /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceScatterAdd"; - private ResourceScatterAdd(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterDiv.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterDiv.java index ed950863242..9560bddf284 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterDiv.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterDiv.java @@ -75,7 +75,6 @@ public static ResourceScatterDiv create(Sco /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceScatterDiv"; - private ResourceScatterDiv(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterMax.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterMax.java index 7553fab4812..ce952ee19ba 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterMax.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterMax.java @@ -75,7 +75,6 @@ public static ResourceScatterMax create(Sco /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceScatterMax"; - private ResourceScatterMax(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterMin.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterMin.java index 68518b4c640..51ec6b7637e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterMin.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterMin.java @@ -75,7 +75,6 @@ public static ResourceScatterMin create(Sco /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceScatterMin"; - private ResourceScatterMin(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterMul.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterMul.java index f52b338de57..2d5f71e006d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterMul.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterMul.java @@ -75,7 +75,6 @@ public static ResourceScatterMul create(Sco /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceScatterMul"; - private ResourceScatterMul(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterNdAdd.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterNdAdd.java index 5abfcbea5ee..11e45c33098 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterNdAdd.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterNdAdd.java @@ -125,7 +125,6 @@ public static Options useLocking(Boolean useLocking) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceScatterNdAdd"; - private ResourceScatterNdAdd(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterNdMax.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterNdMax.java index e24e3d68fef..82c1f766308 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterNdMax.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterNdMax.java @@ -91,6 +91,8 @@ public static Options useLocking(Boolean useLocking) { return new Options().useLocking(useLocking); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceScatterNdMax"; private ResourceScatterNdMax(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterNdMin.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterNdMin.java index 3ffc78afa87..88e107c65c7 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterNdMin.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterNdMin.java @@ -91,6 +91,8 @@ public static Options useLocking(Boolean useLocking) { return new Options().useLocking(useLocking); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceScatterNdMin"; private ResourceScatterNdMin(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterNdSub.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterNdSub.java index c4b6060d611..267099b7cfc 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterNdSub.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterNdSub.java @@ -125,7 +125,6 @@ public static Options useLocking(Boolean useLocking) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceScatterNdSub"; - private ResourceScatterNdSub(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterNdUpdate.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterNdUpdate.java index b47fb4a1367..4a1e875bc97 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterNdUpdate.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterNdUpdate.java @@ -127,7 +127,6 @@ public static Options useLocking(Boolean useLocking) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceScatterNdUpdate"; - private ResourceScatterNdUpdate(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterSub.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterSub.java index 2559ff21a93..7b772fab997 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterSub.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterSub.java @@ -75,7 +75,6 @@ public static ResourceScatterSub create(Sco /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceScatterSub"; - private ResourceScatterSub(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterUpdate.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterUpdate.java index eff04c6c08a..067ddf5f205 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterUpdate.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceScatterUpdate.java @@ -66,7 +66,6 @@ public static ResourceScatterUpdate create( /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceScatterUpdate"; - private ResourceScatterUpdate(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceStridedSliceAssign.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceStridedSliceAssign.java index 2002140573b..4deb4c55f64 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceStridedSliceAssign.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ResourceStridedSliceAssign.java @@ -176,7 +176,6 @@ public static Options shrinkAxisMask(Long shrinkAxisMask) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceStridedSliceAssign"; - private ResourceStridedSliceAssign(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterNdMax.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterNdMax.java index 851cbb16cf4..da94c783cae 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterNdMax.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterNdMax.java @@ -107,6 +107,9 @@ public Output asOutput() { return outputRef; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ScatterNdMax"; + private Output outputRef; private ScatterNdMax(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterNdMin.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterNdMin.java index a3e3d4c9790..5aea70bc929 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterNdMin.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/ScatterNdMin.java @@ -107,6 +107,9 @@ public Output asOutput() { return outputRef; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ScatterNdMin"; + private Output outputRef; private ScatterNdMin(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Send.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Send.java index bf3db1cd88a..d679b85319a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Send.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Send.java @@ -97,7 +97,6 @@ public static Options clientTerminated(Boolean clientTerminated) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "Send"; - private Send(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Stage.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Stage.java index 408b6eca252..526462b02f4 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Stage.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/Stage.java @@ -151,7 +151,6 @@ public static Options sharedName(String sharedName) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "Stage"; - private Stage(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/StageClear.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/StageClear.java index 755e7ab72d9..60e51559f74 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/StageClear.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/StageClear.java @@ -145,7 +145,6 @@ public static Options sharedName(String sharedName) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "StageClear"; - private StageClear(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayClose.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayClose.java index a16e856ae72..62180e8e5ff 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayClose.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorArrayClose.java @@ -52,7 +52,6 @@ public static TensorArrayClose create(Scope scope, Operand handle) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "TensorArrayCloseV3"; - private TensorArrayClose(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestCreateTreeVariable.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestCreateTreeVariable.java index e647f58b2f3..5ca6ffa1cd0 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestCreateTreeVariable.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestCreateTreeVariable.java @@ -51,7 +51,6 @@ public static TensorForestCreateTreeVariable create(Scope scope, Operand tree /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "TensorForestCreateTreeVariable"; - private TensorForestCreateTreeVariable(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestTreeDeserialize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestTreeDeserialize.java index 5fb704b2361..a5e1638035e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestTreeDeserialize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorForestTreeDeserialize.java @@ -51,7 +51,6 @@ public static TensorForestTreeDeserialize create(Scope scope, Operand treeHan /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "TensorForestTreeDeserialize"; - private TensorForestTreeDeserialize(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorScatterNdMax.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorScatterNdMax.java index d040cf0639a..a14b20195af 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorScatterNdMax.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorScatterNdMax.java @@ -65,6 +65,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorScatterMax"; + private Output output; private TensorScatterNdMax(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorScatterNdMin.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorScatterNdMin.java index 797878d9c76..b202b72eebd 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorScatterNdMin.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/TensorScatterNdMin.java @@ -65,6 +65,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "TensorScatterMin"; + private Output output; private TensorScatterNdMin(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/XlaSpmdFullToShardShape.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/XlaSpmdFullToShardShape.java index 51f2c2b5dde..6615d2ef9f6 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/XlaSpmdFullToShardShape.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/XlaSpmdFullToShardShape.java @@ -68,6 +68,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "XlaSpmdFullToShardShape"; + private Output output; private XlaSpmdFullToShardShape(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/XlaSpmdShardToFullShape.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/XlaSpmdShardToFullShape.java index 5a120fb6fb8..75e31c7c317 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/XlaSpmdShardToFullShape.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/core/XlaSpmdShardToFullShape.java @@ -70,6 +70,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "XlaSpmdShardToFullShape"; + private Output output; private XlaSpmdShardToFullShape(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DatasetToTfRecord.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DatasetToTfRecord.java index 41617c9b690..114e11074dc 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DatasetToTfRecord.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DatasetToTfRecord.java @@ -54,7 +54,6 @@ public static DatasetToTfRecord create(Scope scope, Operand inputDataset, Ope /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "DatasetToTFRecord"; - private DatasetToTfRecord(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DeleteIterator.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DeleteIterator.java index ec3629a8eb7..69f3af096bb 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DeleteIterator.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DeleteIterator.java @@ -51,7 +51,6 @@ public static DeleteIterator create(Scope scope, Operand handle, Operand d /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "DeleteIterator"; - private DeleteIterator(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DeleteMemoryCache.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DeleteMemoryCache.java index 3c0f37dc409..21c33030b66 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DeleteMemoryCache.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DeleteMemoryCache.java @@ -49,7 +49,6 @@ public static DeleteMemoryCache create(Scope scope, Operand handle, Operand multiDevi /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "DeleteMultiDeviceIterator"; - private DeleteMultiDeviceIterator(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DeserializeIterator.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DeserializeIterator.java index 528fd09bc53..4f772fd5028 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DeserializeIterator.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/DeserializeIterator.java @@ -52,7 +52,6 @@ public static DeserializeIterator create(Scope scope, Operand resourceHandle, /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "DeserializeIterator"; - private DeserializeIterator(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/InitializeTableFromDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/InitializeTableFromDataset.java index 527c951377b..05a263a4ec1 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/InitializeTableFromDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/InitializeTableFromDataset.java @@ -46,6 +46,8 @@ public static InitializeTableFromDataset create(Scope scope, Operand tableHan return new InitializeTableFromDataset(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "InitializeTableFromDataset"; private InitializeTableFromDataset(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MakeIterator.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MakeIterator.java index 685574a92d5..4aace25184e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MakeIterator.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/MakeIterator.java @@ -54,7 +54,6 @@ public static MakeIterator create(Scope scope, Operand dataset, Operand it /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "MakeIterator"; - private MakeIterator(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/RegisterDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/RegisterDataset.java index 7e0695768c2..5705413165c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/RegisterDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/RegisterDataset.java @@ -65,6 +65,9 @@ public Output asOutput() { return datasetId; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RegisterDataset"; + private Output datasetId; private RegisterDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ShuffleAndRepeatDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ShuffleAndRepeatDataset.java index 1f6d2697497..c5703e8e85c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ShuffleAndRepeatDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ShuffleAndRepeatDataset.java @@ -119,7 +119,7 @@ public Output asOutput() { } /** The name of this op, as known by TensorFlow core engine */ - public static final String OP_NAME = "ShuffleAndRepeatDataset"; + public static final String OP_NAME = "ShuffleAndRepeatDatasetV2"; private Output handle; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ShuffleDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ShuffleDataset.java index ce3de6f787f..3dd522e319c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ShuffleDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/ShuffleDataset.java @@ -117,7 +117,7 @@ public Output asOutput() { } /** The name of this op, as known by TensorFlow core engine */ - public static final String OP_NAME = "ShuffleDatasetV2"; + public static final String OP_NAME = "ShuffleDatasetV3"; private Output handle; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/CompressElement.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/CompressElement.java index e56a8cde614..9e4bfb34a8b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/CompressElement.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/CompressElement.java @@ -60,6 +60,9 @@ public Output asOutput() { return (Output) compressed; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "CompressElement"; + private Output compressed; private CompressElement(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/DataServiceDataset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/DataServiceDataset.java index 4623ec2ea5d..b3e853f9de4 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/DataServiceDataset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/DataServiceDataset.java @@ -122,6 +122,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DataServiceDataset"; + private Output handle; private DataServiceDataset(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/DatasetToTFRecord.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/DatasetToTFRecord.java index ee0f494fa73..6e0a0b8f2dc 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/DatasetToTFRecord.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/DatasetToTFRecord.java @@ -54,7 +54,6 @@ public static DatasetToTFRecord create(Scope scope, Operand inputDataset, Ope /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ExperimentalDatasetToTFRecord"; - private DatasetToTFRecord(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/DummyIterationCounter.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/DummyIterationCounter.java index b2febce6f81..72f83847285 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/DummyIterationCounter.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/DummyIterationCounter.java @@ -56,6 +56,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DummyIterationCounter"; + private Output handle; private DummyIterationCounter(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/StatsAggregatorSetSummaryWriter.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/StatsAggregatorSetSummaryWriter.java index ad63ff056d8..1af246d8313 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/StatsAggregatorSetSummaryWriter.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/StatsAggregatorSetSummaryWriter.java @@ -50,7 +50,6 @@ public static StatsAggregatorSetSummaryWriter create(Scope scope, Operand sta /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "StatsAggregatorSetSummaryWriter"; - private StatsAggregatorSetSummaryWriter(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/UncompressElement.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/UncompressElement.java index 5d94d8699ab..c5732154e94 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/UncompressElement.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/data/experimental/UncompressElement.java @@ -76,6 +76,9 @@ public Iterator> iterator() { return (Iterator) components.iterator(); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "UncompressElement"; + private List> components; private UncompressElement(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesCreateEnsemble.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesCreateEnsemble.java index 04613900567..8841988b36d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesCreateEnsemble.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesCreateEnsemble.java @@ -54,7 +54,6 @@ public static BoostedTreesCreateEnsemble create(Scope scope, Operand treeEnse /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "BoostedTreesCreateEnsemble"; - private BoostedTreesCreateEnsemble(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesCreateQuantileStreamResource.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesCreateQuantileStreamResource.java index 59362970a58..802a61ecb2a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesCreateQuantileStreamResource.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesCreateQuantileStreamResource.java @@ -88,7 +88,6 @@ public static Options maxElements(Long maxElements) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "BoostedTreesCreateQuantileStreamResource"; - private BoostedTreesCreateQuantileStreamResource(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesDeserializeEnsemble.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesDeserializeEnsemble.java index 6fd83d5785d..15371fb4df9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesDeserializeEnsemble.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesDeserializeEnsemble.java @@ -56,7 +56,6 @@ public static BoostedTreesDeserializeEnsemble create(Scope scope, Operand tre /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "BoostedTreesDeserializeEnsemble"; - private BoostedTreesDeserializeEnsemble(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesQuantileStreamResourceAddSummaries.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesQuantileStreamResourceAddSummaries.java index 76480c4be6d..418ff3b2ff6 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesQuantileStreamResourceAddSummaries.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesQuantileStreamResourceAddSummaries.java @@ -56,7 +56,6 @@ public static BoostedTreesQuantileStreamResourceAddSummaries create(Scope scope, /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "BoostedTreesQuantileStreamResourceAddSummaries"; - private BoostedTreesQuantileStreamResourceAddSummaries(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesQuantileStreamResourceDeserialize.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesQuantileStreamResourceDeserialize.java index 82066e267d2..6efb58ed60c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesQuantileStreamResourceDeserialize.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesQuantileStreamResourceDeserialize.java @@ -54,7 +54,6 @@ public static BoostedTreesQuantileStreamResourceDeserialize create(Scope scope, /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "BoostedTreesQuantileStreamResourceDeserialize"; - private BoostedTreesQuantileStreamResourceDeserialize(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesQuantileStreamResourceFlush.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesQuantileStreamResourceFlush.java index 359b7b63ff6..cc10434a582 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesQuantileStreamResourceFlush.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesQuantileStreamResourceFlush.java @@ -97,7 +97,6 @@ public static Options generateQuantiles(Boolean generateQuantiles) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "BoostedTreesQuantileStreamResourceFlush"; - private BoostedTreesQuantileStreamResourceFlush(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesUpdateEnsemble.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesUpdateEnsemble.java index c1b7bb44559..e6ddcf3d2da 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesUpdateEnsemble.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesUpdateEnsemble.java @@ -79,7 +79,6 @@ public static BoostedTreesUpdateEnsemble create(Scope scope, Operand treeEnse /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "BoostedTreesUpdateEnsemble"; - private BoostedTreesUpdateEnsemble(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesUpdateEnsembleV2.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesUpdateEnsembleV2.java index afd9d646c2f..ceaff116fd1 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesUpdateEnsembleV2.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/estimator/BoostedTreesUpdateEnsembleV2.java @@ -118,7 +118,6 @@ public static Options logitsDimension(Long logitsDimension) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "BoostedTreesUpdateEnsembleV2"; - private BoostedTreesUpdateEnsembleV2(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ExtractGlimpse.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ExtractGlimpse.java index 172b24f74ac..05bc1d924b3 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ExtractGlimpse.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/image/ExtractGlimpse.java @@ -199,7 +199,7 @@ public Output asOutput() { } /** The name of this op, as known by TensorFlow core engine */ - public static final String OP_NAME = "ExtractGlimpse"; + public static final String OP_NAME = "ExtractGlimpseV2"; private Output glimpse; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueClose.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueClose.java index fb55f708140..ea7791f143e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueClose.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueClose.java @@ -91,7 +91,6 @@ public static Options cancelPendingEnqueues(Boolean cancelPendingEnqueues) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "QueueCloseV2"; - private QueueClose(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueEnqueue.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueEnqueue.java index 546981e8abf..a159b0cd17c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueEnqueue.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueEnqueue.java @@ -96,7 +96,6 @@ public static Options timeoutMs(Long timeoutMs) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "QueueEnqueueV2"; - private QueueEnqueue(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueEnqueueMany.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueEnqueueMany.java index 48df5d3b9d3..b1f9cbd6807 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueEnqueueMany.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/QueueEnqueueMany.java @@ -101,7 +101,6 @@ public static Options timeoutMs(Long timeoutMs) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "QueueEnqueueManyV2"; - private QueueEnqueueMany(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderReset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderReset.java index 6e3de01134b..243d4a72080 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderReset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderReset.java @@ -49,7 +49,6 @@ public static ReaderReset create(Scope scope, Operand readerHandle) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ReaderResetV2"; - private ReaderReset(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderRestoreState.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderRestoreState.java index b0abea1257c..431ba079ffc 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderRestoreState.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/ReaderRestoreState.java @@ -56,7 +56,6 @@ public static ReaderRestoreState create(Scope scope, Operand readerHandle, Op /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ReaderRestoreStateV2"; - private ReaderRestoreState(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/WriteFile.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/WriteFile.java index d9fba243fc3..d1c9dd9b9c8 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/WriteFile.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/io/WriteFile.java @@ -54,7 +54,6 @@ public static WriteFile create(Scope scope, Operand filename, Operand asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BandedTriangularSolve"; + private Output output; private BandedTriangularSolve(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/BesselI0.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/BesselI0.java index 53e1ac83c32..45dcd2b8e4c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/BesselI0.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/BesselI0.java @@ -59,6 +59,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BesselI0"; + private Output y; private BesselI0(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/BesselI1.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/BesselI1.java index 638f6b06972..148758aa5a4 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/BesselI1.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/BesselI1.java @@ -59,6 +59,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BesselI1"; + private Output y; private BesselI1(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/DenseBincount.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/DenseBincount.java index 165be081102..e38d559f4ae 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/DenseBincount.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/DenseBincount.java @@ -112,6 +112,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DenseBincount"; + private Output output; private DenseBincount(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/BesselJ0.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/BesselJ0.java index bc73a0c9c02..8d2184a49cb 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/BesselJ0.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/BesselJ0.java @@ -59,6 +59,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BesselJ0"; + private Output y; private BesselJ0(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/BesselJ1.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/BesselJ1.java index 4fd21c42288..d8f9621a36c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/BesselJ1.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/BesselJ1.java @@ -59,6 +59,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BesselJ1"; + private Output y; private BesselJ1(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/BesselK0.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/BesselK0.java index 8f3c540b185..eaae243f83f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/BesselK0.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/BesselK0.java @@ -59,6 +59,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BesselK0"; + private Output y; private BesselK0(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/BesselK0e.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/BesselK0e.java index 1a8f9761c08..c57ae64e233 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/BesselK0e.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/BesselK0e.java @@ -59,6 +59,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BesselK0e"; + private Output y; private BesselK0e(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/BesselK1.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/BesselK1.java index bcaaf6f6f9c..1858d25fe3d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/BesselK1.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/BesselK1.java @@ -59,6 +59,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BesselK1"; + private Output y; private BesselK1(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/BesselK1e.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/BesselK1e.java index c6590805d54..e4a5cc23efd 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/BesselK1e.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/BesselK1e.java @@ -59,6 +59,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BesselK1e"; + private Output y; private BesselK1e(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/BesselY0.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/BesselY0.java index 86843a30939..9228d1b6145 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/BesselY0.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/BesselY0.java @@ -59,6 +59,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BesselY0"; + private Output y; private BesselY0(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/BesselY1.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/BesselY1.java index 2cdc4ad7df0..0461416b808 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/BesselY1.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/math/special/BesselY1.java @@ -59,6 +59,9 @@ public Output asOutput() { return y; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "BesselY1"; + private Output y; private BesselY1(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedBincount.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedBincount.java index fc1636d8d64..1e0224aa9ef 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedBincount.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedBincount.java @@ -115,6 +115,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RaggedBincount"; + private Output output; private RaggedBincount(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedCountSparseOutput.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedCountSparseOutput.java index 07b364f6ebb..4829e49488b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedCountSparseOutput.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedCountSparseOutput.java @@ -140,6 +140,9 @@ public Output outputDenseShape() { return outputDenseShape; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RaggedCountSparseOutput"; + private Output outputIndices; private Output outputValues; private Output outputDenseShape; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedCross.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedCross.java index fa6e811969b..9ea32878257 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedCross.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/ragged/RaggedCross.java @@ -94,6 +94,9 @@ public Output outputRowSplits() { return outputRowSplits; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RaggedCross"; + private Output outputValues; private Output outputRowSplits; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/AnonymousSeedGenerator.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/AnonymousSeedGenerator.java index f55c3222977..c724bb6d110 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/AnonymousSeedGenerator.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/AnonymousSeedGenerator.java @@ -63,6 +63,9 @@ public Output deleter() { return deleter; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "AnonymousSeedGenerator"; + private Output handle; private Output deleter; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/DeleteRandomSeedGenerator.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/DeleteRandomSeedGenerator.java index 9bc34d98ebb..23b154f9d75 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/DeleteRandomSeedGenerator.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/DeleteRandomSeedGenerator.java @@ -49,7 +49,6 @@ public static DeleteRandomSeedGenerator create(Scope scope, Operand handle, O /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "DeleteRandomSeedGenerator"; - private DeleteRandomSeedGenerator(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/DeleteSeedGenerator.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/DeleteSeedGenerator.java index 2872ea12aff..16982946d1f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/DeleteSeedGenerator.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/DeleteSeedGenerator.java @@ -46,6 +46,8 @@ public static DeleteSeedGenerator create(Scope scope, Operand handle, Operand return new DeleteSeedGenerator(opBuilder.build()); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DeleteSeedGenerator"; private DeleteSeedGenerator(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RngSkip.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RngSkip.java index e3411c3b989..f41cff35b04 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RngSkip.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/RngSkip.java @@ -58,7 +58,6 @@ public static RngSkip create(Scope scope, Operand resource, Operand a /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "RngSkip"; - private RngSkip(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessParameterizedTruncatedNormal.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessParameterizedTruncatedNormal.java index 053db14c986..179160463c7 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessParameterizedTruncatedNormal.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/StatelessParameterizedTruncatedNormal.java @@ -72,6 +72,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "StatelessParameterizedTruncatedNormal"; + private Output output; private StatelessParameterizedTruncatedNormal(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/experimental/DummySeedGenerator.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/experimental/DummySeedGenerator.java index 92e58ba293f..dd537fa2d68 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/experimental/DummySeedGenerator.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/random/experimental/DummySeedGenerator.java @@ -56,6 +56,9 @@ public Output asOutput() { return (Output) handle; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DummySeedGenerator"; + private Output handle; private DummySeedGenerator(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/DenseCountSparseOutput.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/DenseCountSparseOutput.java index 62c489cab7b..ed390a7ba47 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/DenseCountSparseOutput.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/DenseCountSparseOutput.java @@ -132,6 +132,9 @@ public Output outputDenseShape() { return outputDenseShape; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "DenseCountSparseOutput"; + private Output outputIndices; private Output outputValues; private Output outputDenseShape; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseAccumulatorApplyGradient.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseAccumulatorApplyGradient.java index 3f36812ea57..328fe0c49ea 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseAccumulatorApplyGradient.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseAccumulatorApplyGradient.java @@ -69,7 +69,6 @@ public static SparseAccumulatorApplyGradient create(Scope scop /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "SparseAccumulatorApplyGradient"; - private SparseAccumulatorApplyGradient(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseBincount.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseBincount.java index 7902e8544dd..344e27f1346 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseBincount.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseBincount.java @@ -117,6 +117,9 @@ public Output asOutput() { return output; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseBincount"; + private Output output; private SparseBincount(Operation operation) { diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseCountSparseOutput.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseCountSparseOutput.java index 36230bc774e..5e5566db5ec 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseCountSparseOutput.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseCountSparseOutput.java @@ -136,6 +136,9 @@ public Output outputDenseShape() { return outputDenseShape; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseCountSparseOutput"; + private Output outputIndices; private Output outputValues; private Output outputDenseShape; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseCross.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseCross.java index 06113f0315b..1cd471349c2 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseCross.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseCross.java @@ -118,7 +118,7 @@ public Output outputShape() { } /** The name of this op, as known by TensorFlow core engine */ - public static final String OP_NAME = "SparseCross"; + public static final String OP_NAME = "SparseCrossV2"; private Output outputIndices; private Output outputValues; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseCrossHashed.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseCrossHashed.java index 9e7cc9b1e6c..2fc6976079e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseCrossHashed.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/sparse/SparseCrossHashed.java @@ -122,6 +122,9 @@ public Output outputShape() { return outputShape; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "SparseCrossHashed"; + private Output outputIndices; private Output outputValues; private Output outputShape; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/CloseSummaryWriter.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/CloseSummaryWriter.java index ff9735f0b07..f5d95d50976 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/CloseSummaryWriter.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/CloseSummaryWriter.java @@ -47,7 +47,6 @@ public static CloseSummaryWriter create(Scope scope, Operand writer) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "CloseSummaryWriter"; - private CloseSummaryWriter(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/CreateSummaryDbWriter.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/CreateSummaryDbWriter.java index 61e7405f74d..8e40aa798d6 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/CreateSummaryDbWriter.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/CreateSummaryDbWriter.java @@ -56,7 +56,6 @@ public static CreateSummaryDbWriter create(Scope scope, Operand writer, Opera /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "CreateSummaryDbWriter"; - private CreateSummaryDbWriter(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/CreateSummaryFileWriter.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/CreateSummaryFileWriter.java index d113ebcf3f6..e429fab20e2 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/CreateSummaryFileWriter.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/CreateSummaryFileWriter.java @@ -57,7 +57,6 @@ public static CreateSummaryFileWriter create(Scope scope, Operand writer, Ope /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "CreateSummaryFileWriter"; - private CreateSummaryFileWriter(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/FlushSummaryWriter.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/FlushSummaryWriter.java index 6b1e610c632..e1586542972 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/FlushSummaryWriter.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/FlushSummaryWriter.java @@ -47,7 +47,6 @@ public static FlushSummaryWriter create(Scope scope, Operand writer) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "FlushSummaryWriter"; - private FlushSummaryWriter(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/ImportEvent.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/ImportEvent.java index 9b6dc173abe..7bd97de571e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/ImportEvent.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/ImportEvent.java @@ -50,7 +50,6 @@ public static ImportEvent create(Scope scope, Operand writer, Operand writer, Operand WriteHistogramSummary create(Scope scope, Oper /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "WriteHistogramSummary"; - private WriteHistogramSummary(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteImageSummary.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteImageSummary.java index 286d584d695..757ddf59a1c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteImageSummary.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteImageSummary.java @@ -94,7 +94,6 @@ public static Options maxImages(Long maxImages) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "WriteImageSummary"; - private WriteImageSummary(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteRawProtoSummary.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteRawProtoSummary.java index 524b56bed7a..75499c1ff69 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteRawProtoSummary.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteRawProtoSummary.java @@ -53,7 +53,6 @@ public static WriteRawProtoSummary create(Scope scope, Operand writer, Operan /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "WriteRawProtoSummary"; - private WriteRawProtoSummary(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteScalarSummary.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteScalarSummary.java index 2317db7bdeb..f173651001a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteScalarSummary.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteScalarSummary.java @@ -57,7 +57,6 @@ public static WriteScalarSummary create(Scope scope, Operand /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "WriteScalarSummary"; - private WriteScalarSummary(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteSummary.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteSummary.java index 6d257f948e8..5404e593f27 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteSummary.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/summary/WriteSummary.java @@ -58,7 +58,6 @@ public static WriteSummary create(Scope scope, Operand writ /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "WriteSummary"; - private WriteSummary(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/ConfigureTPUEmbedding.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/ConfigureTPUEmbedding.java index 1905a3082b3..76bccd51f83 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/ConfigureTPUEmbedding.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/ConfigureTPUEmbedding.java @@ -48,7 +48,6 @@ public static ConfigureTPUEmbedding create(Scope scope, String config) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ConfigureTPUEmbedding"; - private ConfigureTPUEmbedding(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/EnqueueTPUEmbeddingIntegerBatch.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/EnqueueTPUEmbeddingIntegerBatch.java index 4198c38e11c..0a1a80c7a0a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/EnqueueTPUEmbeddingIntegerBatch.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/EnqueueTPUEmbeddingIntegerBatch.java @@ -93,7 +93,6 @@ public static Options deviceOrdinal(Long deviceOrdinal) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "EnqueueTPUEmbeddingIntegerBatch"; - private EnqueueTPUEmbeddingIntegerBatch(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/EnqueueTPUEmbeddingRaggedTensorBatch.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/EnqueueTPUEmbeddingRaggedTensorBatch.java index c605dafbc87..bf4da86d05d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/EnqueueTPUEmbeddingRaggedTensorBatch.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/EnqueueTPUEmbeddingRaggedTensorBatch.java @@ -177,6 +177,8 @@ public static Options maxSequenceLengths(List maxSequenceLengths) { return new Options().maxSequenceLengths(maxSequenceLengths); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "EnqueueTPUEmbeddingRaggedTensorBatch"; private EnqueueTPUEmbeddingRaggedTensorBatch(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/EnqueueTPUEmbeddingSparseBatch.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/EnqueueTPUEmbeddingSparseBatch.java index 23288018938..2cb7dfb674b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/EnqueueTPUEmbeddingSparseBatch.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/EnqueueTPUEmbeddingSparseBatch.java @@ -146,7 +146,6 @@ public static Options combiners(List combiners) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "EnqueueTPUEmbeddingSparseBatch"; - private EnqueueTPUEmbeddingSparseBatch(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/EnqueueTPUEmbeddingSparseTensorBatch.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/EnqueueTPUEmbeddingSparseTensorBatch.java index 59018e1b3e5..3d93c6a0f71 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/EnqueueTPUEmbeddingSparseTensorBatch.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/EnqueueTPUEmbeddingSparseTensorBatch.java @@ -178,7 +178,6 @@ public static Options maxSequenceLengths(List maxSequenceLengths) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "EnqueueTPUEmbeddingSparseTensorBatch"; - private EnqueueTPUEmbeddingSparseTensorBatch(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/InfeedEnqueue.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/InfeedEnqueue.java index 9c79df444e3..391d51a9ab0 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/InfeedEnqueue.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/InfeedEnqueue.java @@ -135,7 +135,6 @@ public static Options deviceOrdinal(Long deviceOrdinal) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "InfeedEnqueue"; - private InfeedEnqueue(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/InfeedEnqueuePrelinearizedBuffer.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/InfeedEnqueuePrelinearizedBuffer.java index b1d32f70ec9..9344352791c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/InfeedEnqueuePrelinearizedBuffer.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/InfeedEnqueuePrelinearizedBuffer.java @@ -84,7 +84,6 @@ public static Options deviceOrdinal(Long deviceOrdinal) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "InfeedEnqueuePrelinearizedBuffer"; - private InfeedEnqueuePrelinearizedBuffer(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/InfeedEnqueueTuple.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/InfeedEnqueueTuple.java index d2a95d84244..b439df84f71 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/InfeedEnqueueTuple.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/InfeedEnqueueTuple.java @@ -124,7 +124,6 @@ public static Options deviceOrdinal(Long deviceOrdinal) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "InfeedEnqueueTuple"; - private InfeedEnqueueTuple(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingADAMParameters.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingADAMParameters.java index 9e60fae350e..744688cee23 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingADAMParameters.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingADAMParameters.java @@ -135,7 +135,6 @@ public static Options config(String config) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "LoadTPUEmbeddingADAMParameters"; - private LoadTPUEmbeddingADAMParameters(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingADAMParametersGradAccumDebug.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingADAMParametersGradAccumDebug.java index 58cfa5cf465..63df2e6aa79 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingADAMParametersGradAccumDebug.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingADAMParametersGradAccumDebug.java @@ -137,7 +137,6 @@ public static Options config(String config) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "LoadTPUEmbeddingADAMParametersGradAccumDebug"; - private LoadTPUEmbeddingADAMParametersGradAccumDebug(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingAdadeltaParameters.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingAdadeltaParameters.java index e4f4228f0f1..43535a2aff8 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingAdadeltaParameters.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingAdadeltaParameters.java @@ -135,7 +135,6 @@ public static Options config(String config) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "LoadTPUEmbeddingAdadeltaParameters"; - private LoadTPUEmbeddingAdadeltaParameters(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingAdadeltaParametersGradAccumDebug.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingAdadeltaParametersGradAccumDebug.java index 76af15dc0b6..ce1b759ee60 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingAdadeltaParametersGradAccumDebug.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingAdadeltaParametersGradAccumDebug.java @@ -137,7 +137,6 @@ public static Options config(String config) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "LoadTPUEmbeddingAdadeltaParametersGradAccumDebug"; - private LoadTPUEmbeddingAdadeltaParametersGradAccumDebug(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingAdagradParameters.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingAdagradParameters.java index dc4f5c62341..f9e16c5b5d6 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingAdagradParameters.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingAdagradParameters.java @@ -133,7 +133,6 @@ public static Options config(String config) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "LoadTPUEmbeddingAdagradParameters"; - private LoadTPUEmbeddingAdagradParameters(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingAdagradParametersGradAccumDebug.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingAdagradParametersGradAccumDebug.java index 6551f875f2d..7f8df653745 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingAdagradParametersGradAccumDebug.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingAdagradParametersGradAccumDebug.java @@ -135,7 +135,6 @@ public static Options config(String config) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "LoadTPUEmbeddingAdagradParametersGradAccumDebug"; - private LoadTPUEmbeddingAdagradParametersGradAccumDebug(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingCenteredRMSPropParameters.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingCenteredRMSPropParameters.java index d4a0103654c..f0b704cfaa1 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingCenteredRMSPropParameters.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingCenteredRMSPropParameters.java @@ -137,7 +137,6 @@ public static Options config(String config) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "LoadTPUEmbeddingCenteredRMSPropParameters"; - private LoadTPUEmbeddingCenteredRMSPropParameters(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingFTRLParameters.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingFTRLParameters.java index a65301f6348..c96edf58894 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingFTRLParameters.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingFTRLParameters.java @@ -135,7 +135,6 @@ public static Options config(String config) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "LoadTPUEmbeddingFTRLParameters"; - private LoadTPUEmbeddingFTRLParameters(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingFTRLParametersGradAccumDebug.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingFTRLParametersGradAccumDebug.java index 5a1c165428d..f0a85bd945a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingFTRLParametersGradAccumDebug.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingFTRLParametersGradAccumDebug.java @@ -137,7 +137,6 @@ public static Options config(String config) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "LoadTPUEmbeddingFTRLParametersGradAccumDebug"; - private LoadTPUEmbeddingFTRLParametersGradAccumDebug(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingMDLAdagradLightParameters.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingMDLAdagradLightParameters.java index 407cf842f19..f418a70cc8c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingMDLAdagradLightParameters.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingMDLAdagradLightParameters.java @@ -137,7 +137,6 @@ public static Options config(String config) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "LoadTPUEmbeddingMDLAdagradLightParameters"; - private LoadTPUEmbeddingMDLAdagradLightParameters(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingMomentumParameters.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingMomentumParameters.java index 35b8479749b..718bdc24f5c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingMomentumParameters.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingMomentumParameters.java @@ -133,7 +133,6 @@ public static Options config(String config) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "LoadTPUEmbeddingMomentumParameters"; - private LoadTPUEmbeddingMomentumParameters(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingMomentumParametersGradAccumDebug.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingMomentumParametersGradAccumDebug.java index babc2de15fd..424c3c846c0 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingMomentumParametersGradAccumDebug.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingMomentumParametersGradAccumDebug.java @@ -135,7 +135,6 @@ public static Options config(String config) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "LoadTPUEmbeddingMomentumParametersGradAccumDebug"; - private LoadTPUEmbeddingMomentumParametersGradAccumDebug(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingProximalAdagradParameters.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingProximalAdagradParameters.java index 0ebad625abe..7b7265e9b82 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingProximalAdagradParameters.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingProximalAdagradParameters.java @@ -133,7 +133,6 @@ public static Options config(String config) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "LoadTPUEmbeddingProximalAdagradParameters"; - private LoadTPUEmbeddingProximalAdagradParameters(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingProximalAdagradParametersGradAccumDebug.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingProximalAdagradParametersGradAccumDebug.java index 80b05d47203..c18d2cf22f5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingProximalAdagradParametersGradAccumDebug.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingProximalAdagradParametersGradAccumDebug.java @@ -135,7 +135,6 @@ public static Options config(String config) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "LoadTPUEmbeddingProximalAdagradParametersGradAccumDebug"; - private LoadTPUEmbeddingProximalAdagradParametersGradAccumDebug(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingProximalYogiParameters.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingProximalYogiParameters.java index 651c8e189c4..2a96916c4f5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingProximalYogiParameters.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingProximalYogiParameters.java @@ -125,6 +125,8 @@ public static Options config(String config) { return new Options().config(config); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LoadTPUEmbeddingProximalYogiParameters"; private LoadTPUEmbeddingProximalYogiParameters(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingProximalYogiParametersGradAccumDebug.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingProximalYogiParametersGradAccumDebug.java index 274accba1c9..e863dc554d6 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingProximalYogiParametersGradAccumDebug.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingProximalYogiParametersGradAccumDebug.java @@ -127,6 +127,8 @@ public static Options config(String config) { return new Options().config(config); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LoadTPUEmbeddingProximalYogiParametersGradAccumDebug"; private LoadTPUEmbeddingProximalYogiParametersGradAccumDebug(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingRMSPropParameters.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingRMSPropParameters.java index d0e39d22edb..1f747282d55 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingRMSPropParameters.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingRMSPropParameters.java @@ -135,7 +135,6 @@ public static Options config(String config) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "LoadTPUEmbeddingRMSPropParameters"; - private LoadTPUEmbeddingRMSPropParameters(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingRMSPropParametersGradAccumDebug.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingRMSPropParametersGradAccumDebug.java index 98f1043a768..a7c8ed4812c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingRMSPropParametersGradAccumDebug.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingRMSPropParametersGradAccumDebug.java @@ -137,7 +137,6 @@ public static Options config(String config) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "LoadTPUEmbeddingRMSPropParametersGradAccumDebug"; - private LoadTPUEmbeddingRMSPropParametersGradAccumDebug(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingStochasticGradientDescentParameters.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingStochasticGradientDescentParameters.java index ca881823239..769d3436eda 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingStochasticGradientDescentParameters.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingStochasticGradientDescentParameters.java @@ -131,7 +131,6 @@ public static Options config(String config) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "LoadTPUEmbeddingStochasticGradientDescentParameters"; - private LoadTPUEmbeddingStochasticGradientDescentParameters(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingStochasticGradientDescentParametersGradAccumDebug.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingStochasticGradientDescentParametersGradAccumDebug.java index 76a13a489ad..e408844e484 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingStochasticGradientDescentParametersGradAccumDebug.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/LoadTPUEmbeddingStochasticGradientDescentParametersGradAccumDebug.java @@ -130,6 +130,8 @@ public static Options config(String config) { return new Options().config(config); } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "LoadTPUEmbeddingStochasticGradientDescentParametersGradAccumDebug"; private LoadTPUEmbeddingStochasticGradientDescentParametersGradAccumDebug(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/OutfeedEnqueue.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/OutfeedEnqueue.java index 46ee54430d9..5b5f059a81e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/OutfeedEnqueue.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/OutfeedEnqueue.java @@ -49,7 +49,6 @@ public static OutfeedEnqueue create(Scope scope, Operand in /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "OutfeedEnqueue"; - private OutfeedEnqueue(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/OutfeedEnqueueTuple.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/OutfeedEnqueueTuple.java index 25d110f1114..8bfd04b9a2c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/OutfeedEnqueueTuple.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/OutfeedEnqueueTuple.java @@ -50,7 +50,6 @@ public static OutfeedEnqueueTuple create(Scope scope, Iterable> input /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "OutfeedEnqueueTuple"; - private OutfeedEnqueueTuple(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingProximalYogiParameters.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingProximalYogiParameters.java index eaee4fdabc4..a46cae90359 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingProximalYogiParameters.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingProximalYogiParameters.java @@ -137,6 +137,9 @@ public Output m() { return m; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RetrieveTPUEmbeddingProximalYogiParameters"; + private Output parameters; private Output v; private Output m; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingProximalYogiParametersGradAccumDebug.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingProximalYogiParametersGradAccumDebug.java index ec57d8cb424..55535a573f6 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingProximalYogiParametersGradAccumDebug.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingProximalYogiParametersGradAccumDebug.java @@ -143,6 +143,9 @@ public Output gradientAccumulators() { return gradientAccumulators; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RetrieveTPUEmbeddingProximalYogiParametersGradAccumDebug"; + private Output parameters; private Output v; private Output m; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingStochasticGradientDescentParametersGradAccumDebug.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingStochasticGradientDescentParametersGradAccumDebug.java index f649b4d01fa..9f35ffcd8e0 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingStochasticGradientDescentParametersGradAccumDebug.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/RetrieveTPUEmbeddingStochasticGradientDescentParametersGradAccumDebug.java @@ -139,6 +139,9 @@ public Output gradientAccumulators() { return gradientAccumulators; } + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "RetrieveTPUEmbeddingStochasticGradientDescentParametersGradAccumDebug"; + private Output parameters; private Output gradientAccumulators; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/SendTPUEmbeddingGradients.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/SendTPUEmbeddingGradients.java index 25d25c1d5bf..482080bde5d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/SendTPUEmbeddingGradients.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/tpu/SendTPUEmbeddingGradients.java @@ -64,7 +64,6 @@ public static SendTPUEmbeddingGradients create(Scope scope, Iterable AccumulatorApplyGradient create(Scope scope, Ope /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "AccumulatorApplyGradient"; - private AccumulatorApplyGradient(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/AccumulatorSetGlobalStep.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/AccumulatorSetGlobalStep.java index b57bb702669..9039d3a654d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/AccumulatorSetGlobalStep.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/AccumulatorSetGlobalStep.java @@ -56,7 +56,6 @@ public static AccumulatorSetGlobalStep create(Scope scope, Operand hand /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "AccumulatorSetGlobalStep"; - private AccumulatorSetGlobalStep(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/MergeV2Checkpoints.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/MergeV2Checkpoints.java index 4fe4a27171a..986553a2d8e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/MergeV2Checkpoints.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/MergeV2Checkpoints.java @@ -96,7 +96,6 @@ public static Options deleteOldDirs(Boolean deleteOldDirs) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "MergeV2Checkpoints"; - private MergeV2Checkpoints(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/NegTrain.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/NegTrain.java index f43928961a9..b3e5316ad7e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/NegTrain.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/NegTrain.java @@ -68,7 +68,6 @@ public static NegTrain create(Scope scope, Operand wIn, Operand ResourceAccumulatorApplyGradient create(Scope sc /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceAccumulatorApplyGradient"; - private ResourceAccumulatorApplyGradient(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceAccumulatorSetGlobalStep.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceAccumulatorSetGlobalStep.java index e04784aef48..37570909340 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceAccumulatorSetGlobalStep.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceAccumulatorSetGlobalStep.java @@ -54,7 +54,6 @@ public static ResourceAccumulatorSetGlobalStep create(Scope scope, Operand ha /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceAccumulatorSetGlobalStep"; - private ResourceAccumulatorSetGlobalStep(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdaMax.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdaMax.java index 5efab216739..169da75fecd 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdaMax.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdaMax.java @@ -107,7 +107,6 @@ public static Options useLocking(Boolean useLocking) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceApplyAdaMax"; - private ResourceApplyAdaMax(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdadelta.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdadelta.java index 0121155a2ef..4323a39de45 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdadelta.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdadelta.java @@ -103,7 +103,6 @@ public static Options useLocking(Boolean useLocking) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceApplyAdadelta"; - private ResourceApplyAdadelta(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdagrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdagrad.java index 8868193464f..b60ad1fc0e0 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdagrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdagrad.java @@ -117,7 +117,6 @@ public static Options updateSlots(Boolean updateSlots) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceApplyAdagradV2"; - private ResourceApplyAdagrad(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdagradDa.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdagradDa.java index 7f5b26056ac..7c6f06634ef 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdagradDa.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdagradDa.java @@ -101,7 +101,6 @@ public static Options useLocking(Boolean useLocking) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceApplyAdagradDA"; - private ResourceApplyAdagradDa(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdam.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdam.java index 20a07b4865d..4a1aea5d355 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdam.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdam.java @@ -130,7 +130,6 @@ public static Options useNesterov(Boolean useNesterov) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceApplyAdam"; - private ResourceApplyAdam(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdamWithAmsgrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdamWithAmsgrad.java index ec13f10038d..a436bc7fdd2 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdamWithAmsgrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAdamWithAmsgrad.java @@ -114,7 +114,6 @@ public static Options useLocking(Boolean useLocking) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceApplyAdamWithAmsgrad"; - private ResourceApplyAdamWithAmsgrad(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAddSign.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAddSign.java index e64354ec3bb..85c9c587979 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAddSign.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyAddSign.java @@ -104,7 +104,6 @@ public static Options useLocking(Boolean useLocking) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceApplyAddSign"; - private ResourceApplyAddSign(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyCenteredRmsProp.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyCenteredRmsProp.java index c4c8d7c9ec7..6fc3a8a02ff 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyCenteredRmsProp.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyCenteredRmsProp.java @@ -123,7 +123,6 @@ public static Options useLocking(Boolean useLocking) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceApplyCenteredRMSProp"; - private ResourceApplyCenteredRmsProp(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyFtrl.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyFtrl.java index c9de01ad14d..e69b6b99959 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyFtrl.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyFtrl.java @@ -120,18 +120,16 @@ public static ResourceApplyFtrl create(Scope scope, Operand public static Options useLocking(Boolean useLocking) { return new Options().useLocking(useLocking); } - - /** The name of this op, as known by TensorFlow core engine */ - public static final String OP_NAME = "ResourceApplyFtrlV2"; - + /** * @param multiplyLinearByLr */ public static Options multiplyLinearByLr(Boolean multiplyLinearByLr) { return new Options().multiplyLinearByLr(multiplyLinearByLr); } - + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceApplyFtrlV2"; private ResourceApplyFtrl(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyGradientDescent.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyGradientDescent.java index 0e495bdd651..f33c6b9ca87 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyGradientDescent.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyGradientDescent.java @@ -90,7 +90,6 @@ public static Options useLocking(Boolean useLocking) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceApplyGradientDescent"; - private ResourceApplyGradientDescent(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyKerasMomentum.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyKerasMomentum.java index 3a986d617eb..3922439dcad 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyKerasMomentum.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyKerasMomentum.java @@ -124,7 +124,6 @@ public static Options useNesterov(Boolean useNesterov) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceApplyKerasMomentum"; - private ResourceApplyKerasMomentum(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyMomentum.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyMomentum.java index c441193d864..c554c8a939d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyMomentum.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyMomentum.java @@ -124,7 +124,6 @@ public static Options useNesterov(Boolean useNesterov) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceApplyMomentum"; - private ResourceApplyMomentum(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyPowerSign.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyPowerSign.java index c1ba8b0ebd7..662c2253264 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyPowerSign.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyPowerSign.java @@ -104,7 +104,6 @@ public static Options useLocking(Boolean useLocking) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceApplyPowerSign"; - private ResourceApplyPowerSign(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyProximalAdagrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyProximalAdagrad.java index b51ce4698e1..8036d891e33 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyProximalAdagrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyProximalAdagrad.java @@ -100,7 +100,6 @@ public static Options useLocking(Boolean useLocking) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceApplyProximalAdagrad"; - private ResourceApplyProximalAdagrad(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyProximalGradientDescent.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyProximalGradientDescent.java index 7f9c4f4e52c..3b217c88c67 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyProximalGradientDescent.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyProximalGradientDescent.java @@ -97,7 +97,6 @@ public static Options useLocking(Boolean useLocking) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceApplyProximalGradientDescent"; - private ResourceApplyProximalGradientDescent(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyRmsProp.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyRmsProp.java index 4c400f1aaa1..ae42295c1f7 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyRmsProp.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceApplyRmsProp.java @@ -113,7 +113,6 @@ public static Options useLocking(Boolean useLocking) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceApplyRMSProp"; - private ResourceApplyRmsProp(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyAdadelta.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyAdadelta.java index 9a50137d196..baea98fc1f7 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyAdadelta.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyAdadelta.java @@ -101,7 +101,6 @@ public static Options useLocking(Boolean useLocking) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceSparseApplyAdadelta"; - private ResourceSparseApplyAdadelta(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyAdagrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyAdagrad.java index 69a3e775622..f7816e78d0c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyAdagrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyAdagrad.java @@ -120,7 +120,6 @@ public static Options updateSlots(Boolean updateSlots) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceSparseApplyAdagrad"; - private ResourceSparseApplyAdagrad(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyAdagradDa.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyAdagradDa.java index 4f3189f074c..417eca86a80 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyAdagradDa.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyAdagradDa.java @@ -104,7 +104,6 @@ public static Options useLocking(Boolean useLocking) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceSparseApplyAdagradDA"; - private ResourceSparseApplyAdagradDa(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyAdagradV2.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyAdagradV2.java index 30e6c19da15..f60d192c368 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyAdagradV2.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyAdagradV2.java @@ -121,7 +121,6 @@ public static Options updateSlots(Boolean updateSlots) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceSparseApplyAdagradV2"; - private ResourceSparseApplyAdagradV2(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyCenteredRmsProp.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyCenteredRmsProp.java index ab9b9d3c38d..d6806c36abf 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyCenteredRmsProp.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyCenteredRmsProp.java @@ -124,7 +124,6 @@ public static Options useLocking(Boolean useLocking) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceSparseApplyCenteredRMSProp"; - private ResourceSparseApplyCenteredRmsProp(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyFtrl.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyFtrl.java index 84caa503dec..a13382272c8 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyFtrl.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyFtrl.java @@ -125,18 +125,15 @@ public static Options useLocking(Boolean useLocking) { return new Options().useLocking(useLocking); } - - /** The name of this op, as known by TensorFlow core engine */ - public static final String OP_NAME = "ResourceSparseApplyFtrlV2"; - /** * @param multiplyLinearByLr */ public static Options multiplyLinearByLr(Boolean multiplyLinearByLr) { return new Options().multiplyLinearByLr(multiplyLinearByLr); } - + /** The name of this op, as known by TensorFlow core engine */ + public static final String OP_NAME = "ResourceSparseApplyFtrlV2"; private ResourceSparseApplyFtrl(Operation operation) { super(operation); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyKerasMomentum.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyKerasMomentum.java index 0284564f78c..b385403f989 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyKerasMomentum.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyKerasMomentum.java @@ -129,7 +129,6 @@ public static Options useNesterov(Boolean useNesterov) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceSparseApplyKerasMomentum"; - private ResourceSparseApplyKerasMomentum(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyMomentum.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyMomentum.java index 5199932b5bc..bc303bfbbf0 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyMomentum.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyMomentum.java @@ -129,7 +129,6 @@ public static Options useNesterov(Boolean useNesterov) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceSparseApplyMomentum"; - private ResourceSparseApplyMomentum(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyProximalAdagrad.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyProximalAdagrad.java index e235a19f5d1..678601d6aea 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyProximalAdagrad.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyProximalAdagrad.java @@ -105,7 +105,6 @@ public static Options useLocking(Boolean useLocking) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceSparseApplyProximalAdagrad"; - private ResourceSparseApplyProximalAdagrad(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyProximalGradientDescent.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyProximalGradientDescent.java index 08a9edc01c4..11ad213524c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyProximalGradientDescent.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyProximalGradientDescent.java @@ -101,7 +101,6 @@ public static Options useLocking(Boolean useLocking) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceSparseApplyProximalGradientDescent"; - private ResourceSparseApplyProximalGradientDescent(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyRmsProp.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyRmsProp.java index 982e1f30eb7..8c519504f89 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyRmsProp.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/ResourceSparseApplyRmsProp.java @@ -116,7 +116,6 @@ public static Options useLocking(Boolean useLocking) { /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "ResourceSparseApplyRMSProp"; - private ResourceSparseApplyRmsProp(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/Save.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/Save.java index 781714d8121..c5de40fc91b 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/Save.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/Save.java @@ -63,7 +63,6 @@ public static Save create(Scope scope, Operand prefix, Operand /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "SaveV2"; - private Save(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SaveSlices.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SaveSlices.java index e8e67190e63..73325d1d1bc 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SaveSlices.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SaveSlices.java @@ -89,7 +89,6 @@ public static SaveSlices create(Scope scope, Operand filename, Operand< /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "SaveSlices"; - private SaveSlices(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SdcaShrinkL1.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SdcaShrinkL1.java index 24c6d53ef9d..748a2eacaec 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SdcaShrinkL1.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/train/SdcaShrinkL1.java @@ -56,7 +56,6 @@ public static SdcaShrinkL1 create(Scope scope, Iterable> weigh /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "SdcaShrinkL1"; - private SdcaShrinkL1(Operation operation) { super(operation); } diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Send.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Send.java index d1172f8e96f..b18a86458ca 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Send.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/op/xla/Send.java @@ -55,7 +55,6 @@ public static Send create(Scope scope, Operand tensor, Stri /** The name of this op, as known by TensorFlow core engine */ public static final String OP_NAME = "XlaSend"; - private Send(Operation operation) { super(operation); } From 44f530f292fdba34164de696fb454b30108064d3 Mon Sep 17 00:00:00 2001 From: Jim Clarke Date: Thu, 3 Sep 2020 18:53:44 -0400 Subject: [PATCH 25/33] Changed back to non-generic Operand until we resolve how to handle generics. --- .../org/tensorflow/op/nn/SoftmaxCrossEntropyWithLogits.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SoftmaxCrossEntropyWithLogits.java b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SoftmaxCrossEntropyWithLogits.java index f3caa0c4926..8447b985bb0 100644 --- a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SoftmaxCrossEntropyWithLogits.java +++ b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SoftmaxCrossEntropyWithLogits.java @@ -79,7 +79,7 @@ public static Operand softmaxCrossEntrop axis += logits.asOutput().shape().numDimensions(); } - Operand preciseLogits = + Operand preciseLogits = (Operand) logits; // cannot use generics cause logits of bool gets cast to TFloat32 @@ -90,7 +90,7 @@ public static Operand softmaxCrossEntrop preciseLogits = Cast.create(scope, logits, TFloat32.DTYPE); } /* cannot use generics on DataType because preciseLogits may have been cast. */ - DataType dtype = preciseLogits.asOutput().dataType(); + DataType dtype = preciseLogits.asOutput().dataType(); Operand castLabels = Cast.create(scope, labels, dtype); Operand inputRank = Cast.create(scope, Rank.create(scope, preciseLogits), TInt64.DTYPE); Shape shape = logits.asOutput().shape(); From b8d3ac2d001251c95bd55ed9cd902431108468bd Mon Sep 17 00:00:00 2001 From: Jim Clarke Date: Thu, 3 Sep 2020 18:55:55 -0400 Subject: [PATCH 26/33] Regenerated due to creation of SoftmaxCrossEntropyWithLogits.java, SigmoidCrossEntropyWithLogits.java, and SparseSoftmaxCrossEntropyWithLogits.java under package org.tensorflow.op.nn in --- .../annotations/org/tensorflow/op/NnOps.java | 136 ++++++++++++------ 1 file changed, 89 insertions(+), 47 deletions(-) diff --git a/tensorflow-core/tensorflow-core-api/src/gen/annotations/org/tensorflow/op/NnOps.java b/tensorflow-core/tensorflow-core-api/src/gen/annotations/org/tensorflow/op/NnOps.java index 8374a864ec2..e15cccdd339 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/annotations/org/tensorflow/op/NnOps.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/annotations/org/tensorflow/op/NnOps.java @@ -20,7 +20,6 @@ import java.util.List; import org.tensorflow.DataType; import org.tensorflow.Operand; -import org.tensorflow.op.core.NN; import org.tensorflow.op.nn.AvgPool; import org.tensorflow.op.nn.AvgPool3d; import org.tensorflow.op.nn.AvgPool3dGrad; @@ -84,10 +83,13 @@ import org.tensorflow.op.nn.Relu; import org.tensorflow.op.nn.Relu6; import org.tensorflow.op.nn.Selu; +import org.tensorflow.op.nn.SigmoidCrossEntropyWithLogits; import org.tensorflow.op.nn.Softmax; +import org.tensorflow.op.nn.SoftmaxCrossEntropyWithLogits; import org.tensorflow.op.nn.Softsign; import org.tensorflow.op.nn.SpaceToBatch; import org.tensorflow.op.nn.SpaceToDepth; +import org.tensorflow.op.nn.SparseSoftmaxCrossEntropyWithLogits; import org.tensorflow.op.nn.TopK; import org.tensorflow.types.TFloat32; import org.tensorflow.types.TInt32; @@ -1756,49 +1758,53 @@ public Selu selu(Operand features) { } /** - * Computes sigmoid cross entropy given `logits`. + * Computes sigmoid cross entropy given logits. * *

Measures the probability error in discrete classification tasks in which each class is * independent and not mutually exclusive. For instance, one could perform multilabel * classification where a picture can contain both an elephant and a dog at the same time. * - *

For brevity, let `x = logits`, `z = labels`. The logistic loss is + *

For brevity, let x = logits, z = labels. The logistic loss in + * pseudo-code is * *

-   *      z * -log(sigmoid(x)) + (1 - z) * -log(1 - sigmoid(x))
-   *      = z * -log(1 / (1 + exp(-x))) + (1 - z) * -log(exp(-x) / (1 + exp(-x)))
-   *      = z * log(1 + exp(-x)) + (1 - z) * (-log(exp(-x)) + log(1 + exp(-x)))
-   *      = z * log(1 + exp(-x)) + (1 - z) * (x + log(1 + exp(-x))
-   *      = (1 - z) * x + log(1 + exp(-x))
-   *      = x - x * z + log(1 + exp(-x))
+   *  z * -log(sigmoid(x)) + (1 - z) * -log(1 - sigmoid(x))
+   *   = z * -log(1 / (1 + exp(-x))) + (1 - z) * -log(exp(-x) / (1 + exp(-x)))
+   *   = z * log(1 + exp(-x)) + (1 - z) * (-log(exp(-x)) + log(1 + exp(-x)))
+   *   = z * log(1 + exp(-x)) + (1 - z) * (x + log(1 + exp(-x))
+   *   = (1 - z) * x + log(1 + exp(-x))
+   *   = x - x * z + log(1 + exp(-x))
    *  
* - *

For x < 0, to avoid overflow in exp(-x), we reformulate the above + *

For x < 0, to avoid overflow in exp(-x), we reformulate the above * *

-   *       x - x * z + log(1 + exp(-x))
-   *       = log(exp(x)) - x * z + log(1 + exp(-x))
-   *       = - x * z + log(1 + exp(x))
+   *  x - x * z + log(1 + exp(-x))
+   *   = log(exp(x)) - x * z + log(1 + exp(-x))
+   *   = - x * z + log(1 + exp(x))
    *  
* *

Hence, to ensure stability and avoid overflow, the implementation uses this equivalent * formulation * *

-   *      max(x, 0) - x * z + log(1 + exp(-abs(x)))
+   *    max(x, 0) - x * z + log(1 + exp(-abs(x)))
    *  
* - *

`logits` and `labels` must have the same type and shape. + *

logits and labels must have the same type and shape. + * + *

* * @param scope The TensorFlow scope * @param labels the labels * @param logits the logits of type float32 or float64 * @param the type of labels and logits * @return the component-wise logistic losses. + * @throws IllegalArgumentException if logits' and labels' do not have the same shape */ public Operand sigmoidCrossEntropyWithLogits(Operand labels, Operand logits) { - return NN.sigmoidCrossEntropyWithLogits(scope, labels, logits); + return SigmoidCrossEntropyWithLogits.sigmoidCrossEntropyWithLogits(scope, labels, logits); } /** @@ -1817,48 +1823,55 @@ public Softmax softmax(Operand logits) { } /** - * Computes softmax cross entropy between `logits` and `labels`. + * Computes softmax cross entropy between logits and labels. * *

Measures the probability error in discrete classification tasks in which the classes are * mutually exclusive (each entry is in exactly one class). For example, each CIFAR-10 image is * labeled with one and only one label: an image can be a dog or a truck, but not both. * - *

**NOTE:** While the classes are mutually exclusive, their probabilities need not be. All - * that is required is that each row of `labels` is a valid probability distribution. If they are - * not, the computation of the gradient will be incorrect. + *

NOTE: + * + *

While the classes are mutually exclusive, their probabilities need not be. All that is + * required is that each row of labels is a valid probability distribution. If they + * are not, the computation of the gradient will be incorrect. * - *

If using exclusive `labels` (wherein one and only one class is true at a time), see - * `sparse_softmax_cross_entropy_with_logits`. + *

If using exclusive labels (wherein one and only one class is true at a time), + * see {@link org.tensorflow.op.NnOps#sparseSoftmaxCrossEntropyWithLogits} * *

Usage: * *

-   *    >>> logits = [[4.0, 2.0, 1.0], [0.0, 5.0, 1.0]]
-   *    >>> labels = [[1.0, 0.0, 0.0], [0.0, 0.8, 0.2]]
-   *    >>> tf.nn.softmax_cross_entropy_with_logits(labels=labels, logits=logits)
-   *    
+   *    Operand<TFloat32> logits =
+   *        tf.constant(new float[][] {{4.0F, 2.0F, 1.0F}, {0.0F, 5.0F, 1.0F}} );
+   *    Operand<TFloat32> labels =
+   *        tf.constant(new float[][] {{1.0F, 0.0F, 0.0F}, {0.0F, 0.8F, 0.2F}} );
+   *    Operand<TFloat32> output =
+   *        tf.nn.softmaxCrossEntropyWithLogits(labels, logits, -1);
+   *    // output Shape = [2]
+   *    // dataType = FLOAT (1)
+   *    // values { 0.169846, 0.824745 }
    *  
* - *

Backpropagation will happen into both `logits` and `labels`. To disallow backpropagation - * into `labels`, pass label tensors through `tf.stop_gradient` before feeding it to this - * function. + *

Backpropagation will happen into both logits and labels. To + * disallow backpropagation into labels, pass label tensors through + * tf.stopGradient before feeding it to this function. * * @param scope current scope * @param labels Each vector along the class dimension should hold a valid probability - * distribution e.g. for the case in which labels are of shape `[batch_size, num_classes]`, - * each row of `labels[i]` must be a valid probability distribution. + * distribution e.g. for the case in which labels are of shape [batch_size, num_classes] + * , each row of labels[i] must be a valid probability distribution. * @param logits Per-label activations, typically a linear output. These activation energies are * interpreted as unnormalized log probabilities. * @param axis The class dimension. -1 is the last dimension. - * @param the data type of the logits + * @param the data type of the logits * @param the number type of the operands - * @return the softmax cross entropy loss. Its type is the same as `logits` and its shape is the - * same as `labels` except that it does not have the last dimension of `labels`. + * @return the softmax cross entropy loss. Its type is the same as logits and its + * shape is the same as labels except that it does not have the last dimension of + * labels. */ public Operand softmaxCrossEntropyWithLogits( Operand labels, Operand logits, int axis) { - return NN.softmaxCrossEntropyWithLogits(scope, labels, logits, axis); + return SoftmaxCrossEntropyWithLogits.softmaxCrossEntropyWithLogits(scope, labels, logits, axis); } /** @@ -2050,22 +2063,51 @@ public SpaceToDepth spaceToDepth(Operand input, Long blo } /** - * Computes sparse softmax cross entropy between `logits` and `labels`. + * Computes sparse softmax cross entropy between logits and labels. + * + *

Measures the probability error in discrete classification tasks in which the classes are + * mutually exclusive (each entry is in exactly one class). For example, each CIFAR-10 image is + * labeled with one and only one label: an image can be a dog or a truck, but not both. + * + *

NOTE: + * + *

For this operation, the probability of a given label is considered exclusive. That is, soft + * classes are not allowed, and the labels vector must provide a single specific + * index for the true class for each row of logits (each minibatch entry). For soft + * softmax classification with a probability distribution for each entry, {@link + * org.tensorflow.op.NnOps#softmaxCrossEntropyWithLogits}. + * + *

WARNING: + * + *

This op expects unscaled logits, since it performs a softmax on logits + * internally for efficiency. Do not call this op with the output of softmax, + * as it will produce incorrect results. + * + *

A common use case is to have logits of shape [batchSize, numClasses] and have + * labels of shape [batchSize], but higher dimensions are supported, in which case + * the dim-th dimension is assumed to be of size numClasses. + * logits must have the dataType of TFloat16, TFloat32 + * , or TFloat64, and labels must have the dtype of TInt32 + * or TInt64. * * @param scope current scope - * @param labels `Tensor` of shape `[d_0, d_1, ..., d_{r-1}]` (where `r` is rank of `labels` and - * result) and dtype `int32` or `int64`. Each entry in `labels` must be an index in `[0, - * num_classes)`. Other values will raise an exception when this op is run on CPU, and return - * `NaN` for corresponding loss and gradient rows on GPU. - * @param logits Per-label activations (typically a linear output) of shape `[d_0, d_1, ..., - * d_{r-1}, num_classes]` and dtype `float16`, `float32`, or `float64`. These activation - * energies are interpreted as unnormalized log probabilities. - * @return A `Tensor` of the same shape as `labels` and of the same type as `logits` with the - * softmax cross entropy loss. + * @param labels Tensor of shape [d_0, d_1, ..., d_{r-1}] (where r + * is rank of labels and result) and the dataType is TInt32 + * or TInt64. Each entry in labels must be an index in [0, + * numClasses). Other values will raise an exception when this op is run on CPU, and + * return NaN for corresponding loss and gradient rows on GPU. + * @param logits Per-label activations (typically a linear output) of shape [d_0, d_1, ..., + * d_{r-1}, numClasses] and dataType of TFloat16, TFloat32, + * or TFloat64. These activation energies are interpreted as unnormalized log + * probabilities. + * @return A Tensor of the same shape as labels and of the same type as + * logits with the softmax cross entropy loss. + * @throws IllegalArgumentException If logits are scalars (need to have rank >= 1) or if the rank + * of the labels is not equal to the rank of the logits minus one. */ public Operand sparseSoftmaxCrossEntropyWithLogits( Operand labels, Operand logits) { - return NN.sparseSoftmaxCrossEntropyWithLogits(scope, labels, logits); + return SparseSoftmaxCrossEntropyWithLogits.sparseSoftmaxCrossEntropyWithLogits(scope, labels, logits); } /** From c32fc5be951166ffde8d8763dcc99dd7e5879e86 Mon Sep 17 00:00:00 2001 From: Jim Clarke Date: Mon, 7 Sep 2020 14:15:30 -0400 Subject: [PATCH 27/33] change snake case to camel case. format code --- .../keras/optimizers/AdaDeltaTest.java | 330 +++++------ .../keras/optimizers/AdaGradDATest.java | 64 +-- .../keras/optimizers/AdaGradTest.java | 97 ++-- .../tensorflow/keras/optimizers/AdamTest.java | 143 ++--- .../keras/optimizers/AdamaxTest.java | 115 ++-- .../tensorflow/keras/optimizers/FtrlTest.java | 196 +++---- .../keras/optimizers/NadamTest.java | 140 ++--- .../keras/optimizers/RMSPropTest.java | 514 +++++++++--------- .../tensorflow/keras/optimizers/SGDTest.java | 114 ++-- 9 files changed, 721 insertions(+), 992 deletions(-) diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaDeltaTest.java b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaDeltaTest.java index 8a7c8af9fae..52de6b6b0e1 100644 --- a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaDeltaTest.java +++ b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaDeltaTest.java @@ -14,26 +14,8 @@ =======================================================================*/ package org.tensorflow.keras.optimizers; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; -import static org.tensorflow.framework.optimizers.AdaDelta.ACCUMULATOR; -import static org.tensorflow.framework.optimizers.AdaDelta.ACCUMULATOR_UPDATE; +import org.junit.jupiter.api.*; import org.tensorflow.framework.optimizers.Optimizer.GradAndVar; -import static org.tensorflow.keras.optimizers.AdaDelta.EPSILON_DEFAULT; -import static org.tensorflow.keras.optimizers.AdaDelta.EPSILON_KEY; -import static org.tensorflow.keras.optimizers.AdaDelta.LEARNING_RATE_DEFAULT; -import static org.tensorflow.keras.optimizers.AdaDelta.LEARNING_RATE_KEY; -import static org.tensorflow.keras.optimizers.AdaDelta.RHO_DEFAULT; -import static org.tensorflow.keras.optimizers.AdaDelta.RHO_RATE_KEY; -import static org.tensorflow.keras.optimizers.OptimizerInterface.NAME_KEY; import org.tensorflow.keras.utils.TestSession; import org.tensorflow.ndarray.Shape; import org.tensorflow.op.Op; @@ -42,185 +24,167 @@ import org.tensorflow.op.core.Constant; import org.tensorflow.op.core.Variable; import org.tensorflow.types.TFloat32; +import org.tensorflow.types.family.TType; + +import java.util.ArrayList; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.tensorflow.framework.optimizers.AdaDelta.ACCUMULATOR; +import static org.tensorflow.framework.optimizers.AdaDelta.ACCUMULATOR_UPDATE; /** Test cases for AdaDelta Optimizer */ public class AdaDeltaTest { - private TestSession.Mode tf_mode = TestSession.Mode.GRAPH; + private final TestSession.Mode tfMode = TestSession.Mode.GRAPH; - private int index; + public AdaDeltaTest() {} - public AdaDeltaTest() { - } + @BeforeAll + public static void setUpClass() {} - @BeforeAll - public static void setUpClass() { - } + @AfterAll + public static void tearDownClass() {} - @AfterAll - public static void tearDownClass() { - } + @BeforeEach + public void setUp() {} - @BeforeEach - public void setUp() { - } - - @AfterEach - public void tearDown() { - } + @AfterEach + public void tearDown() {} - /** - * Test of create method, of class AdaDelta. - */ - @Test - public void testCreate() { - try (TestSession session = TestSession.createTestSession(tf_mode)) { - Ops tf = session.getTF(); - Map config = new HashMap<>(); - config.put(NAME_KEY, "AdaDelta"); - config.put(LEARNING_RATE_KEY, LEARNING_RATE_DEFAULT); - config.put(RHO_RATE_KEY, RHO_DEFAULT); - config.put(EPSILON_KEY, EPSILON_DEFAULT); - AdaDelta expResult = new AdaDelta(tf); - AdaDelta result = AdaDelta.create(tf, config); - assertEquals(expResult.getConfig(), result.getConfig()); - } - } + @Test + public void testConstructAdadeltaWithLR() { + try (TestSession session = TestSession.createTestSession(tfMode)) { + Ops tf = session.getTF(); + AdaDelta opt = new AdaDelta(tf, 1.0F, 0.9F, 1.F); + AdaDelta opt2 = new AdaDelta(tf, 0.1F, 0.9F, 1.F); + AdaDelta opt3 = new AdaDelta(tf, 0.1F, 0.9F, 1e-8F); + String format = "AdaDelta{learningRate=%s, rho=%s, epsilon=%s}"; + String optExpected = String.format(format, 1.0F, 0.9F, 1.F); + String opt2Expected = String.format(format, 0.1F, 0.9F, 1.F); + String opt3Expected = String.format(format, 0.1F, 0.9F, 1e-8F); - @Test - public void testConstructAdadeltaWithLR() { - try (TestSession session = TestSession.createTestSession(tf_mode)) { - Ops tf = session.getTF(); - AdaDelta opt = new AdaDelta(tf, 1.0F, 0.9F, 1.F); - AdaDelta opt2 = new AdaDelta(tf, 0.1F, 0.9F, 1.F); - AdaDelta opt3 = new AdaDelta(tf, 0.1F, 0.9F, 1e-8F); - String format = "AdaDelta{learningRate=%s, rho=%s, epsilon=%s}"; - String optExpected = String.format(format, 1.0F, 0.9F, 1.F); - String opt2Expected = String.format(format, 0.1F, 0.9F, 1.F); - String opt3Expected = String.format(format, 0.1F, 0.9F, 1e-8F); - - String optString = opt.toString(); - String opt2String = opt2.toString(); - String opt3String = opt3.toString(); - - assertEquals(optExpected, optString); - assertEquals(opt2Expected, opt2String); - assertEquals(opt3Expected, opt3String); - } + String optString = opt.toString(); + String opt2String = opt2.toString(); + String opt3String = opt3.toString(); + assertEquals(optExpected, optString); + assertEquals(opt2Expected, opt2String); + assertEquals(opt3Expected, opt3String); } - - @Test - public void testConstructAdadeltaWithEpsilonValues() { - try (TestSession session = TestSession.createTestSession(tf_mode)) { - Ops tf = session.getTF(); - AdaDelta opt = new AdaDelta(tf); - Map config = opt.getConfig(); - assertEquals(EPSILON_DEFAULT, (float) config.get(EPSILON_KEY)); - - opt = new AdaDelta(tf, LEARNING_RATE_DEFAULT, RHO_DEFAULT, 1e-8F); - config = opt.getConfig(); - assertEquals(1e-8F, (float) config.get(EPSILON_KEY)); - } + } + + @Test + public void testConstructOptions() { + try (TestSession session = TestSession.createTestSession(tfMode)) { + Ops tf = session.getTF(); + AdaDelta.Options options = + AdaDelta.Options.builder() + .name("myAdaDelta") + .learningRate(1.0F) + .rho(0.9F) + .epsilon(1.F) + .build(); + AdaDelta opt = new AdaDelta(tf, options); + + String format = "AdaDelta{learningRate=%s, rho=%s, epsilon=%s}"; + String optExpected = String.format(format, 1.0F, 0.9F, 1.F); + + String optString = opt.toString(); + + assertEquals(optExpected, optString); } - - @Test - public void testBasic() { - int num_updates = 4; // # number of ADADELTA steps to perform - float[] grads = {0.2F, 0.1F, 0.01F}; - float[] lrs = {1.0F, 0.5F, 0.1F}; - for (float grad : grads) { - for (float lr : lrs) { - try (TestSession session = TestSession.createTestSession(tf_mode)) { - Ops tf = session.getTF(); - float[] var0_init = {1.0F, 2.0F}; - float[] var1_init = {3.0F, 4.0F}; - float[] fgrads = {grad, grad}; - Shape shape = Shape.of(var0_init.length); - Variable var0 = tf.withName("var0").variable(shape, TFloat32.DTYPE); - Variable var1 = tf.withName("var1").variable(shape, TFloat32.DTYPE); - - Assign var0Initializer = tf.assign(var0, tf.constant(var0_init)); - Assign var1Initializer = tf.assign(var1, tf.constant(var1_init)); - - Constant cgrads = tf.constant(fgrads); - - float accum = 0.0F; - float accum_update = 0.0F; - float rho = 0.95F; - float epsilon = 1e-8F; - float epsilon1 = 1e-5F; - - /* build the GradsAnvVars */ - List gradsAndVars = new ArrayList<>(); - gradsAndVars.add(new GradAndVar<>(cgrads.asOutput(), var0.asOutput())); - gradsAndVars.add(new GradAndVar<>(cgrads.asOutput(), var1.asOutput())); - - /* get the Optimizer */ - AdaDelta adaDelta = new AdaDelta(tf, lr, rho, epsilon); - - /** - * apply gradients - */ - Op adadelta_update = adaDelta.applyGradients(gradsAndVars, "AdaDeltaTest"); - - /* Create and validae the shapes of the slota */ - Variable[] slots = new Variable[2]; - Variable[] slotUpdates = new Variable[2]; - - slots[0] = adaDelta.getSlot(var0.asOutput(), ACCUMULATOR).get(); - assertEquals(slots[0].asOutput().shape(), var0.asOutput().shape()); - - slotUpdates[0] = adaDelta.getSlot(var0.asOutput(), ACCUMULATOR_UPDATE).get(); - assertEquals(slotUpdates[0].asOutput().shape(), var0.asOutput().shape()); - - slots[1] = adaDelta.getSlot(var1.asOutput(), ACCUMULATOR).get(); - assertEquals(slots[1].asOutput().shape(), var1.asOutput().shape()); - - slotUpdates[1] = adaDelta.getSlot(var1.asOutput(), ACCUMULATOR_UPDATE).get(); - assertEquals(slotUpdates[1].asOutput().shape(), var1.asOutput().shape()); - - /* initialize the local variables */ - session.run(var0Initializer); - session.run(var1Initializer); - - /** - * initialize the accumulators - */ - session.run(tf.init()); - - /** - * make sure the variables were initialized properly - */ - session.evaluate(var0_init, var0); - session.evaluate(var1_init, var1); - - float[] updates = new float[num_updates]; - float tot_update = 0; - for (int step = 0; step < num_updates; step++) { - session.run(adadelta_update); - accum = accum * rho + (float) Math.pow(grad, 2) * (1.0F - rho); - updates[step] = ((float) Math.sqrt(accum_update + epsilon) - * (float) (1 / Math.sqrt(accum + epsilon)) * grad); - accum_update = (accum_update * rho + ((float) Math.pow(updates[step], 2) * (1.0F - rho))); - tot_update += updates[step] * lr; - - for (int i = 0; i < 2; i++) { - session.evaluate(accum, slots[i]); - session.evaluate(accum_update, slotUpdates[i]); - } - - Float[] var0_initUpdate = {var0_init[0] - tot_update, var0_init[1] - tot_update}; - Float[] var1_initUpdate = {var1_init[0] - tot_update, var1_init[1] - tot_update}; - - session.evaluate(var0_initUpdate, var0); - session.evaluate(var1_initUpdate, var1); - - } - - } + } + + @Test + public void testBasic() { + int numUpdates = 4; // # number of ADADELTA steps to perform + float[] grads = {0.2F, 0.1F, 0.01F}; + float[] lrs = {1.0F, 0.5F, 0.1F}; + for (float grad : grads) { + for (float lr : lrs) { + try (TestSession session = TestSession.createTestSession(tfMode)) { + Ops tf = session.getTF(); + float[] var0Init = {1.0F, 2.0F}; + float[] var1Init = {3.0F, 4.0F}; + float[] fgrads = {grad, grad}; + Shape shape = Shape.of(var0Init.length); + Variable var0 = tf.withName("var0").variable(shape, TFloat32.DTYPE); + Variable var1 = tf.withName("var1").variable(shape, TFloat32.DTYPE); + + Assign var0Initializer = tf.assign(var0, tf.constant(var0Init)); + Assign var1Initializer = tf.assign(var1, tf.constant(var1Init)); + + Constant cgrads = tf.constant(fgrads); + + float accum = 0.0F; + float accumUpdate = 0.0F; + float rho = 0.95F; + float epsilon = 1e-8F; + + /* build the GradsAnvVars */ + List> gradsAndVars = new ArrayList<>(); + gradsAndVars.add(new GradAndVar<>(cgrads.asOutput(), var0.asOutput())); + gradsAndVars.add(new GradAndVar<>(cgrads.asOutput(), var1.asOutput())); + + /* get the Optimizer */ + AdaDelta adaDelta = new AdaDelta(tf, lr, rho, epsilon); + + /*apply gradients */ + Op adadeltaUpdate = adaDelta.applyGradients(gradsAndVars, "AdaDeltaTest"); + + /* Create and validate the shapes of the slota */ + Variable[] slots = new Variable[2]; + Variable[] slotUpdates = new Variable[2]; + + slots[0] = adaDelta.getSlot(var0.asOutput(), ACCUMULATOR).get(); + assertEquals(slots[0].asOutput().shape(), var0.asOutput().shape()); + + slotUpdates[0] = adaDelta.getSlot(var0.asOutput(), ACCUMULATOR_UPDATE).get(); + assertEquals(slotUpdates[0].asOutput().shape(), var0.asOutput().shape()); + + slots[1] = adaDelta.getSlot(var1.asOutput(), ACCUMULATOR).get(); + assertEquals(slots[1].asOutput().shape(), var1.asOutput().shape()); + + slotUpdates[1] = adaDelta.getSlot(var1.asOutput(), ACCUMULATOR_UPDATE).get(); + assertEquals(slotUpdates[1].asOutput().shape(), var1.asOutput().shape()); + + /* initialize the local variables */ + session.run(var0Initializer); + session.run(var1Initializer); + + /* initialize the accumulators */ + session.run(tf.init()); + + /* make sure the variables were initialized properly */ + session.evaluate(var0Init, var0); + session.evaluate(var1Init, var1); + + float[] updates = new float[numUpdates]; + float totUpdate = 0; + for (int step = 0; step < numUpdates; step++) { + session.run(adadeltaUpdate); + accum = accum * rho + (float) Math.pow(grad, 2) * (1.0F - rho); + updates[step] = + ((float) Math.sqrt(accumUpdate + epsilon) + * (float) (1 / Math.sqrt(accum + epsilon)) + * grad); + accumUpdate = (accumUpdate * rho + ((float) Math.pow(updates[step], 2) * (1.0F - rho))); + totUpdate += updates[step] * lr; + + for (int i = 0; i < 2; i++) { + session.evaluate(accum, slots[i]); + session.evaluate(accumUpdate, slotUpdates[i]); } + + Float[] var0InitUpdate = {var0Init[0] - totUpdate, var0Init[1] - totUpdate}; + Float[] var1InitUpdate = {var1Init[0] - totUpdate, var1Init[1] - totUpdate}; + + session.evaluate(var0InitUpdate, var0); + session.evaluate(var1InitUpdate, var1); + } } + } } - + } } diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaGradDATest.java b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaGradDATest.java index 3931db4da97..57a5f5c0bd8 100644 --- a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaGradDATest.java +++ b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaGradDATest.java @@ -14,20 +14,8 @@ =======================================================================*/ package org.tensorflow.keras.optimizers; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.*; import org.tensorflow.framework.optimizers.Optimizer; -import static org.tensorflow.keras.optimizers.AdaGradDA.INITIAL_ACCUM_KEY; -import static org.tensorflow.keras.optimizers.AdaGradDA.LEARNING_RATE_KEY; -import static org.tensorflow.keras.optimizers.OptimizerInterface.NAME_KEY; import org.tensorflow.keras.utils.TestSession; import org.tensorflow.ndarray.Shape; import org.tensorflow.op.Op; @@ -37,10 +25,13 @@ import org.tensorflow.op.core.Variable; import org.tensorflow.types.TFloat32; +import java.util.ArrayList; +import java.util.List; + /** Test cases for AdaGradDA Optimizer */ public class AdaGradDATest { - private TestSession.Mode tf_mode = TestSession.Mode.GRAPH; + private final TestSession.Mode tfMode = TestSession.Mode.GRAPH; int index; @@ -58,42 +49,27 @@ public void setUp() {} @AfterEach public void tearDown() {} - /** Test of create method, of class AdaGradDA. */ - @Test - public void testCreate() { - try (TestSession testSession = TestSession.createTestSession(tf_mode)) { - Ops tf = testSession.getTF(); - Map config = new HashMap<>(); - config.put(NAME_KEY, "AdaDelta"); - config.put(LEARNING_RATE_KEY, 2.0F); - config.put(INITIAL_ACCUM_KEY, 0.1F); - AdaGradDA expResult = new AdaGradDA(tf, 2.0F, 0.1F, 0.0F, 0.0F); - AdaGradDA result = AdaGradDA.create(tf, config); - assertEquals(expResult.getConfig(), result.getConfig()); - } - } - @Test public void testBasic() { - float[] var0_init = {0.0F, 0.0F}; - float[] var1_init = {0.0F, 0.0F}; - float[] grads0_init = {0.1F, 0.2F}; - float[] grads1_init = {0.01F, 0.02F}; + float[] var0Init = {0.0F, 0.0F}; + float[] var1Init = {0.0F, 0.0F}; + float[] grads0Init = {0.1F, 0.2F}; + float[] grads1Init = {0.01F, 0.02F}; float epsilon = 1e-8F; float epsilon1 = 1e-5F; - try (TestSession session = TestSession.createTestSession(tf_mode)) { + try (TestSession session = TestSession.createTestSession(tfMode)) { Ops tf = session.getTF(); - Shape shape0 = Shape.of(var0_init.length); - Shape shape1 = Shape.of(var1_init.length); + Shape shape0 = Shape.of(var0Init.length); + Shape shape1 = Shape.of(var1Init.length); Variable var0 = tf.withName("var0").variable(shape0, TFloat32.DTYPE); Variable var1 = tf.withName("var1").variable(shape1, TFloat32.DTYPE); - Assign var0Initializer = tf.assign(var0, tf.constant(var0_init)); - Assign var1Initializer = tf.assign(var1, tf.constant(var1_init)); + Assign var0Initializer = tf.assign(var0, tf.constant(var0Init)); + Assign var1Initializer = tf.assign(var1, tf.constant(var1Init)); - Constant grads0 = tf.constant(grads0_init); - Constant grads1 = tf.constant(grads1_init); + Constant grads0 = tf.constant(grads0Init); + Constant grads1 = tf.constant(grads1Init); /* initialize the local variables */ /* initialize the local variables */ @@ -109,14 +85,14 @@ public void testBasic() { gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); - Op ada_update = instance.applyGradients(gradsAndVars, "AdGradDATest"); + Op adaUpdate = instance.applyGradients(gradsAndVars, "AdGradDATest"); /** initialize the accumulators */ session.run(tf.init()); - session.evaluate(var0_init, var0); - session.evaluate(var1_init, var1); - session.run(ada_update); + session.evaluate(var0Init, var0); + session.evaluate(var1Init, var1); + session.run(adaUpdate); float[] expected0 = {-0.904534F, -1.603567F}; session.evaluate(expected0, var0); float[] expected1 = {-0.094821f, -0.189358f}; diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaGradTest.java b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaGradTest.java index 28c45c4c8c3..92701b37d67 100644 --- a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaGradTest.java +++ b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaGradTest.java @@ -14,21 +14,8 @@ =======================================================================*/ package org.tensorflow.keras.optimizers; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; -import static org.tensorflow.framework.optimizers.AdaGrad.ACCUMULATOR; +import org.junit.jupiter.api.*; import org.tensorflow.framework.optimizers.Optimizer; -import static org.tensorflow.keras.optimizers.AdaGrad.INITIAL_ACCUM_KEY; -import static org.tensorflow.keras.optimizers.AdaGrad.LEARNING_RATE_KEY; -import static org.tensorflow.keras.optimizers.OptimizerInterface.NAME_KEY; import org.tensorflow.keras.utils.ND; import org.tensorflow.keras.utils.TestSession; import org.tensorflow.ndarray.FloatNdArray; @@ -41,10 +28,15 @@ import org.tensorflow.op.core.Variable; import org.tensorflow.types.TFloat32; +import java.util.ArrayList; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.tensorflow.framework.optimizers.AdaGrad.ACCUMULATOR; + /** Test cases for AdaGrad Optimizer */ public class AdaGradTest { - private TestSession.Mode tf_mode = TestSession.Mode.GRAPH; - int index; + private final TestSession.Mode tfMode = TestSession.Mode.GRAPH; public AdaGradTest() {} @@ -60,53 +52,38 @@ public void setUp() {} @AfterEach public void tearDown() {} - /** Test of create method, of class AdaGrad. */ - @Test - public void testCreate() { - try (TestSession session = TestSession.createTestSession(tf_mode)) { - Ops tf = session.getTF(); - Map config = new HashMap<>(); - config.put(NAME_KEY, "AdaDelta"); - config.put(LEARNING_RATE_KEY, 2.0F); - config.put(INITIAL_ACCUM_KEY, 0.1F); - AdaGrad expResult = new AdaGrad(tf, 2.0F, 0.1F); - AdaGrad result = AdaGrad.create(tf, config); - assertEquals(expResult.getConfig(), result.getConfig()); - } - } - @Test public void testBasic() { int numSteps = 3; - float[] var0_init = {1.0F, 2.0F}; - float[] var1_init = {3.0F, 4.0F}; - float[] grads0_init = {0.1F, 0.1F}; - float[] grads1_init = {0.01F, 0.01F}; + float[] var0Init = {1.0F, 2.0F}; + float[] var1Init = {3.0F, 4.0F}; + float[] grads0Init = {0.1F, 0.1F}; + float[] grads1Init = {0.01F, 0.01F}; float epsilon = 1e-8F; float epsilon1 = 1e-5F; float[] accum0 = {0.1f, 0.1f}; float[] accum1 = {0.1f, 0.1f}; - FloatNdArray var0_np = NdArrays.vectorOf(var0_init); - FloatNdArray var1_np = NdArrays.vectorOf(var1_init); - FloatNdArray grads0_np = NdArrays.vectorOf(grads0_init); - FloatNdArray grads1_np = NdArrays.vectorOf(grads1_init); - FloatNdArray accum0_np = NdArrays.vectorOf(accum0); - FloatNdArray accum1_np = NdArrays.vectorOf(accum1); + FloatNdArray var0Np = NdArrays.vectorOf(var0Init); + FloatNdArray var1Np = NdArrays.vectorOf(var1Init); + FloatNdArray grads0Np = NdArrays.vectorOf(grads0Init); + FloatNdArray grads1Np = NdArrays.vectorOf(grads1Init); + FloatNdArray accum0Np = NdArrays.vectorOf(accum0); + FloatNdArray accum1Np = NdArrays.vectorOf(accum1); - try (TestSession session = TestSession.createTestSession(tf_mode)) { + try (TestSession session = TestSession.createTestSession(tfMode)) { Ops tf = session.getTF(); - Shape shape0 = Shape.of(var0_init.length); - Shape shape1 = Shape.of(var1_init.length); + Shape shape0 = Shape.of(var0Init.length); + Shape shape1 = Shape.of(var1Init.length); Variable var0 = tf.withName("var0").variable(shape0, TFloat32.DTYPE); Variable var1 = tf.withName("var1").variable(shape1, TFloat32.DTYPE); - Assign var0Initializer = tf.assign(var0, tf.constant(var0_init)); - Assign var1Initializer = tf.assign(var1, tf.constant(var1_init)); + Assign var0Initializer = tf.assign(var0, tf.constant(var0Init)); + Assign var1Initializer = tf.assign(var1, tf.constant(var1Init)); - Constant grads0 = tf.constant(grads0_init); - Constant grads1 = tf.constant(grads1_init); + Constant grads0 = tf.constant(grads0Init); + Constant grads1 = tf.constant(grads1Init); float learningRate = 3.0F; @@ -117,7 +94,7 @@ public void testBasic() { gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); - Op ada_update = instance.applyGradients(gradsAndVars, "AdGradTest"); + Op adaUpdate = instance.applyGradients(gradsAndVars, "AdGradTest"); Variable[] accumulatorSlots = new Variable[2]; accumulatorSlots[0] = instance.getSlot(var0.asOutput(), ACCUMULATOR).get(); @@ -134,25 +111,25 @@ public void testBasic() { session.run(tf.init()); /** make sure the variables were initialized properly */ - session.evaluate(var0_init, var0); - session.evaluate(var1_init, var1); + session.evaluate(var0Init, var0); + session.evaluate(var1Init, var1); for (int step = 0; step < numSteps; step++) { - session.run(ada_update); + session.run(adaUpdate); - accum0_np = caclulateAccum(accum0_np, grads0_np); - var0_np = calculate(var0_np, accum0_np, grads0_np, learningRate); - session.evaluate(var0_np, var0); + accum0Np = caclulateAccum(accum0Np, grads0Np); + var0Np = calculate(var0Np, accum0Np, grads0Np, learningRate); + session.evaluate(var0Np, var0); - accum1_np = caclulateAccum(accum1_np, grads1_np); - var1_np = calculate(var1_np, accum1_np, grads1_np, learningRate); - session.evaluate(var1_np, var1); + accum1Np = caclulateAccum(accum1Np, grads1Np); + var1Np = calculate(var1Np, accum1Np, grads1Np, learningRate); + session.evaluate(var1Np, var1); } } } private FloatNdArray caclulateAccum(FloatNdArray accum, FloatNdArray grads) { - // accum + g_t * g_t + // accum + gT * gT FloatNdArray squareG = ND.square(grads); FloatNdArray result = ND.add(accum, squareG); return result; @@ -160,7 +137,7 @@ private FloatNdArray caclulateAccum(FloatNdArray accum, FloatNdArray grads) { private FloatNdArray calculate( FloatNdArray param, FloatNdArray accum, FloatNdArray grads, float learningRate) { - // param - lr * g_t / (np.sqrt(accum_t) + epsilon) + // param - lr * gT / (np.sqrt(accumT) + epsilon) FloatNdArray divisor = ND.add(ND.sqrt(accum), 1e-07f); FloatNdArray dividend = ND.mul(learningRate, grads); FloatNdArray quotient = ND.div(dividend, divisor); diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdamTest.java b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdamTest.java index 6f1d13d83d6..75c2fd9c610 100644 --- a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdamTest.java +++ b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdamTest.java @@ -14,29 +14,9 @@ =======================================================================*/ package org.tensorflow.keras.optimizers; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.*; import org.tensorflow.Tensor; -import static org.tensorflow.framework.optimizers.Adam.FIRST_MOMENT; -import static org.tensorflow.framework.optimizers.Adam.SECOND_MOMENT; import org.tensorflow.framework.optimizers.Optimizer; -import static org.tensorflow.keras.optimizers.Adam.BETA_ONE_DEFAULT; -import static org.tensorflow.keras.optimizers.Adam.BETA_ONE_KEY; -import static org.tensorflow.keras.optimizers.Adam.BETA_TWO_DEFAULT; -import static org.tensorflow.keras.optimizers.Adam.BETA_TWO_KEY; -import static org.tensorflow.keras.optimizers.Adam.EPSILON_DEFAULT; -import static org.tensorflow.keras.optimizers.Adam.EPSILON_KEY; -import static org.tensorflow.keras.optimizers.Adam.LEARNING_RATE_DEFAULT; -import static org.tensorflow.keras.optimizers.Adam.LEARNING_RATE_KEY; -import static org.tensorflow.keras.optimizers.OptimizerInterface.NAME_KEY; import org.tensorflow.keras.utils.ND; import org.tensorflow.keras.utils.TestSession; import org.tensorflow.ndarray.FloatNdArray; @@ -49,9 +29,16 @@ import org.tensorflow.op.core.Variable; import org.tensorflow.types.TFloat32; +import java.util.ArrayList; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.tensorflow.framework.optimizers.Adam.FIRST_MOMENT; +import static org.tensorflow.framework.optimizers.Adam.SECOND_MOMENT; + /** Test cases for Adam Optimizer */ public class AdamTest { - private TestSession.Mode tf_mode = TestSession.Mode.GRAPH; + private final TestSession.Mode tfMode = TestSession.Mode.GRAPH; int index; @@ -69,55 +56,38 @@ public void setUp() {} @AfterEach public void tearDown() {} - /** Test of create method, of class Adam. */ - @Test - public void testCreate() { - try (TestSession testSession = TestSession.createTestSession(tf_mode)) { - Ops tf = testSession.getTF(); - Map config = new HashMap<>(); - config.put(NAME_KEY, "AdaDelta"); - config.put(LEARNING_RATE_KEY, LEARNING_RATE_DEFAULT); - config.put(BETA_ONE_KEY, BETA_ONE_DEFAULT); - config.put(BETA_TWO_KEY, BETA_TWO_DEFAULT); - config.put(EPSILON_KEY, EPSILON_DEFAULT); - AdaDelta expResult = new AdaDelta(tf); - AdaDelta result = AdaDelta.create(tf, config); - assertEquals(expResult.getConfig(), result.getConfig()); - } - } - @Test public void testBasic() { float m0 = 0.0F; float v0 = 0.0F; float m1 = 0.0F; float v1 = 0.0F; - float[] var0_init = {1.0F, 2.0F}; - float[] var1_init = {3.0F, 4.0F}; - float[] grads0_init = {0.1F, 0.1F}; - float[] grads1_init = {0.01F, 0.01F}; - FloatNdArray var0_np = NdArrays.vectorOf(var0_init); - FloatNdArray var1_np = NdArrays.vectorOf(var1_init); - FloatNdArray grads0_np = NdArrays.vectorOf(grads0_init); - FloatNdArray grads1_np = NdArrays.vectorOf(grads1_init); + float[] var0Init = {1.0F, 2.0F}; + float[] var1Init = {3.0F, 4.0F}; + float[] grads0Init = {0.1F, 0.1F}; + float[] grads1Init = {0.01F, 0.01F}; + FloatNdArray var0Np = NdArrays.vectorOf(var0Init); + FloatNdArray var1Np = NdArrays.vectorOf(var1Init); + FloatNdArray grads0Np = NdArrays.vectorOf(grads0Init); + FloatNdArray grads1Np = NdArrays.vectorOf(grads1Init); float epsilon1 = 1e-3F; - try (TestSession session = TestSession.createTestSession(tf_mode)) { + try (TestSession session = TestSession.createTestSession(tfMode)) { Ops tf = session.getTF(); session.setEpsilon(epsilon1); - Shape shape0 = Shape.of(var0_init.length); - Shape shape1 = Shape.of(var1_init.length); + Shape shape0 = Shape.of(var0Init.length); + Shape shape1 = Shape.of(var1Init.length); Variable var0 = tf.withName("var0").variable(shape0, TFloat32.DTYPE); Variable var1 = tf.withName("var1").variable(shape1, TFloat32.DTYPE); - Assign var0Initializer = tf.assign(var0, tf.constant(var0_init)); - Assign var1Initializer = tf.assign(var1, tf.constant(var1_init)); + Assign var0Initializer = tf.assign(var0, tf.constant(var0Init)); + Assign var1Initializer = tf.assign(var1, tf.constant(var1Init)); - Constant grads0 = tf.constant(grads0_init); - Constant grads1 = tf.constant(grads1_init); + Constant grads0 = tf.constant(grads0Init); + Constant grads1 = tf.constant(grads1Init); /* initialize the local variables */ session.run(var0Initializer); @@ -153,16 +123,16 @@ public void testBasic() { secondMomentSlots[1] = instance.getSlot(var1.asOutput(), SECOND_MOMENT).get(); assertEquals(secondMomentSlots[1].asOutput().shape(), var1.asOutput().shape()); - /** initialize the accumulators */ + /* initialize the accumulators */ session.run(tf.init()); - session.evaluate(var0_init, var0); - session.evaluate(var1_init, var1); + session.evaluate(var0Init, var0); + session.evaluate(var1Init, var1); - FloatNdArray m0_np = NdArrays.ofFloats(shape1); - FloatNdArray v0_np = NdArrays.ofFloats(shape1); - FloatNdArray m1_np = NdArrays.ofFloats(shape1); - FloatNdArray v1_np = NdArrays.ofFloats(shape1); + FloatNdArray m0Np = NdArrays.ofFloats(shape0); + FloatNdArray v0Np = NdArrays.ofFloats(shape0); + FloatNdArray m1Np = NdArrays.ofFloats(shape1); + FloatNdArray v1Np = NdArrays.ofFloats(shape1); for (int step = 0; step < 3; step++) { @@ -175,7 +145,7 @@ public void testBasic() { session .getGraphSession() .runner() - .fetch("beta1_power") + .fetch("beta1Power") .run() .get(0) .expect(TFloat32.DTYPE)) { @@ -191,7 +161,7 @@ public void testBasic() { session .getGraphSession() .runner() - .fetch("beta2_power") + .fetch("beta2Power") .run() .get(0) .expect(TFloat32.DTYPE)) { @@ -205,57 +175,54 @@ public void testBasic() { } session.run(update); - float lr_t = + float lrT = learningRate * (float) Math.sqrt(1 - (float) Math.pow(beta2, (step + 1))) / (1 - (float) Math.pow(beta1, (step + 1))); - m0_np = calculateM(m0_np, grads0_np, beta1); - v0_np = calculateV(v0_np, grads0_np, beta2); - var0_np = calculateParam(var0_np, lr_t, m0_np, v0_np, 1e-7F); + m0Np = calculateM(m0Np, grads0Np, beta1); + v0Np = calculateV(v0Np, grads0Np, beta2); + var0Np = calculateParam(var0Np, lrT, m0Np, v0Np, 1e-7F); - m1_np = calculateM(m1_np, grads1_np, beta1); - v1_np = calculateV(v1_np, grads1_np, beta2); - var1_np = calculateParam(var1_np, lr_t, m1_np, v1_np, 1e-7F); + m1Np = calculateM(m1Np, grads1Np, beta1); + v1Np = calculateV(v1Np, grads1Np, beta2); + var1Np = calculateParam(var1Np, lrT, m1Np, v1Np, 1e-7F); // evaluate var 0 and var1 - session.evaluate(var0_np, var0); - session.evaluate(var1_np, var1); + session.evaluate(var0Np, var0); + session.evaluate(var1Np, var1); // first moment - session.evaluate(m0_np, firstMomentSlots[0]); - session.evaluate(m1_np, firstMomentSlots[1]); + session.evaluate(m0Np, firstMomentSlots[0]); + session.evaluate(m1Np, firstMomentSlots[1]); // second moment - session.evaluate(v0_np, secondMomentSlots[0]); - session.evaluate(v1_np, secondMomentSlots[1]); + session.evaluate(v0Np, secondMomentSlots[0]); + session.evaluate(v1Np, secondMomentSlots[1]); } } } - private FloatNdArray calculateM(FloatNdArray m, FloatNdArray g_t, float beta) { - // m_t = beta1 * m + (1 - beta1) * g_t - return ND.add(ND.mul(m, beta), ND.mul(g_t, (1 - beta))); + private FloatNdArray calculateM(FloatNdArray m, FloatNdArray gT, float beta) { + // mT = beta1 * m + (1 - beta1) * gT + return ND.add(ND.mul(m, beta), ND.mul(gT, (1 - beta))); } - private FloatNdArray calculateV(FloatNdArray v, FloatNdArray g_t, float beta) { - // beta2 * v + (1 - beta2) * g_t * g_t + private FloatNdArray calculateV(FloatNdArray v, FloatNdArray gT, float beta) { + // beta2 * v + (1 - beta2) * gT * gT FloatNdArray mul1 = ND.mul(v, beta); - FloatNdArray squareG = ND.square(g_t); + FloatNdArray squareG = ND.square(gT); FloatNdArray mul2 = ND.mul((1 - beta), squareG); FloatNdArray add = ND.add(mul1, mul2); return add; - - // return ND.add(ND.mul(v, beta), - // ND.mul((1-beta), ND.square(g_t))); } private FloatNdArray calculateParam( - FloatNdArray param, float lr_t, FloatNdArray m, FloatNdArray v, float epsilon) { - // param - lr_t * m_t / (np.sqrt(v_t) + epsilon) + FloatNdArray param, float lrT, FloatNdArray m, FloatNdArray v, float epsilon) { + // param - lrT * mT / (np.sqrt(vT) + epsilon) FloatNdArray sqrt = ND.sqrt(v); FloatNdArray divisor = ND.add(sqrt, epsilon); - FloatNdArray dividend = ND.mul(lr_t, m); + FloatNdArray dividend = ND.mul(lrT, m); FloatNdArray quotient = ND.div(dividend, divisor); FloatNdArray result = ND.sub(param, quotient); return result; diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdamaxTest.java b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdamaxTest.java index 1d3dc9e76bf..9460984d124 100644 --- a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdamaxTest.java +++ b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdamaxTest.java @@ -14,29 +14,9 @@ =======================================================================*/ package org.tensorflow.keras.optimizers; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.*; import org.tensorflow.Tensor; import org.tensorflow.framework.optimizers.Optimizer; -import static org.tensorflow.keras.optimizers.Adamax.BETA_ONE_DEFAULT; -import static org.tensorflow.keras.optimizers.Adamax.BETA_ONE_KEY; -import static org.tensorflow.keras.optimizers.Adamax.BETA_TWO_DEFAULT; -import static org.tensorflow.keras.optimizers.Adamax.BETA_TWO_KEY; -import static org.tensorflow.keras.optimizers.Adamax.EPSILON_DEFAULT; -import static org.tensorflow.keras.optimizers.Adamax.EPSILON_KEY; -import static org.tensorflow.keras.optimizers.Adamax.FIRST_MOMENT; -import static org.tensorflow.keras.optimizers.Adamax.LEARNING_RATE_DEFAULT; -import static org.tensorflow.keras.optimizers.Adamax.LEARNING_RATE_KEY; -import static org.tensorflow.keras.optimizers.Adamax.SECOND_MOMENT; -import static org.tensorflow.keras.optimizers.OptimizerInterface.NAME_KEY; import org.tensorflow.keras.utils.ND; import org.tensorflow.keras.utils.TestSession; import org.tensorflow.ndarray.FloatNdArray; @@ -49,16 +29,20 @@ import org.tensorflow.op.core.Variable; import org.tensorflow.types.TFloat32; +import java.util.ArrayList; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.tensorflow.keras.optimizers.Adamax.*; + /** Test cases for Adamax Optimizer */ public class AdamaxTest { - private TestSession.Mode tf_mode = TestSession.Mode.GRAPH; + private final TestSession.Mode tfMode = TestSession.Mode.GRAPH; private static final int VAR = 0; private static final int M = 1; private static final int V = 2; - int index; - public AdamaxTest() {} @BeforeAll @@ -73,27 +57,10 @@ public void setUp() {} @AfterEach public void tearDown() {} - /** Test of create method, of class Adamax. */ - @Test - public void testCreate() { - try (TestSession session = TestSession.createTestSession(tf_mode)) { - Ops tf = session.getTF(); - Map config = new HashMap<>(); - config.put(NAME_KEY, "AdaDelta"); - config.put(LEARNING_RATE_KEY, LEARNING_RATE_DEFAULT); - config.put(BETA_ONE_KEY, BETA_ONE_DEFAULT); - config.put(BETA_TWO_KEY, BETA_TWO_DEFAULT); - config.put(EPSILON_KEY, EPSILON_DEFAULT); - AdaDelta expResult = new AdaDelta(tf); - AdaDelta result = AdaDelta.create(tf, config); - assertEquals(expResult.getConfig(), result.getConfig()); - } - } - /** Test of getOptimizerName method, of class Adamax. */ @Test public void testGetOptimizerName() { - try (TestSession session = TestSession.createTestSession(tf_mode)) { + try (TestSession session = TestSession.createTestSession(tfMode)) { Ops tf = session.getTF(); Adamax instance = new Adamax(tf); String expResult = "Adamax"; @@ -108,37 +75,37 @@ public void testBasic() { int numSteps = 3; - float[] var0_init = {1.0F, 2.0F}; - float[] var1_init = {3.0F, 4.0F}; - float[] grads0_init = {0.1F, 0.1F}; - float[] grads1_init = {0.01F, 0.01F}; + float[] var0Init = {1.0F, 2.0F}; + float[] var1Init = {3.0F, 4.0F}; + float[] grads0Init = {0.1F, 0.1F}; + float[] grads1Init = {0.01F, 0.01F}; float[] zeros = {0.0F, 0.0F}; FloatNdArray m0 = NdArrays.vectorOf(zeros); FloatNdArray v0 = NdArrays.vectorOf(zeros); FloatNdArray m1 = NdArrays.vectorOf(zeros); FloatNdArray v1 = NdArrays.vectorOf(zeros); - FloatNdArray var0_np = NdArrays.vectorOf(var0_init); - FloatNdArray var1_np = NdArrays.vectorOf(var1_init); - FloatNdArray grads0_np = NdArrays.vectorOf(grads0_init); - FloatNdArray grads1_np = NdArrays.vectorOf(grads1_init); + FloatNdArray var0Np = NdArrays.vectorOf(var0Init); + FloatNdArray var1Np = NdArrays.vectorOf(var1Init); + FloatNdArray grads0Np = NdArrays.vectorOf(grads0Init); + FloatNdArray grads1Np = NdArrays.vectorOf(grads1Init); float epsilon = 1e-6f; float epsilon1 = 1e-3F; - try (TestSession session = TestSession.createTestSession(tf_mode)) { + try (TestSession session = TestSession.createTestSession(tfMode)) { Ops tf = session.getTF(); - Shape shape0 = Shape.of(var0_init.length); - Shape shape1 = Shape.of(var1_init.length); + Shape shape0 = Shape.of(var0Init.length); + Shape shape1 = Shape.of(var1Init.length); Variable var0 = tf.withName("var0").variable(shape0, TFloat32.DTYPE); Variable var1 = tf.withName("var1").variable(shape1, TFloat32.DTYPE); - Assign var0Initializer = tf.assign(var0, tf.constant(var0_init)); - Assign var1Initializer = tf.assign(var1, tf.constant(var1_init)); + Assign var0Initializer = tf.assign(var0, tf.constant(var0Init)); + Assign var1Initializer = tf.assign(var1, tf.constant(var1Init)); - Constant grads0 = tf.constant(grads0_init); - Constant grads1 = tf.constant(grads1_init); + Constant grads0 = tf.constant(grads0Init); + Constant grads1 = tf.constant(grads1Init); /* initialize the local variables */ session.run(var0Initializer); @@ -177,13 +144,13 @@ public void testBasic() { session.setEpsilon(epsilon1); for (int step = 0; step < numSteps; step++) { // Test powers - final float beta1_power = (float) Math.pow(BETA_ONE_DEFAULT, step + 1); + final float beta1Power = (float) Math.pow(BETA_ONE_DEFAULT, step + 1); try (Tensor result = session .getGraphSession() .runner() - .fetch("beta1_power") + .fetch("beta1Power") .run() .get(0) .expect(TFloat32.DTYPE)) { @@ -192,31 +159,31 @@ public void testBasic() { .scalars() .forEach( f -> { - assertEquals(beta1_power, f.getFloat(), epsilon1); + assertEquals(beta1Power, f.getFloat(), epsilon1); }); } session.run(update); - FloatNdArray[] resultNP = calculate(var0_np, grads0_np, step, m0, v0); - var0_np = resultNP[VAR]; + FloatNdArray[] resultNP = calculate(var0Np, grads0Np, step, m0, v0); + var0Np = resultNP[VAR]; m0 = resultNP[M]; v0 = resultNP[V]; - resultNP = calculate(var1_np, grads1_np, step, m1, v1); - var1_np = resultNP[VAR]; + resultNP = calculate(var1Np, grads1Np, step, m1, v1); + var1Np = resultNP[VAR]; m1 = resultNP[M]; v1 = resultNP[V]; // evaluate var0 and var1 - session.evaluate(var0_np, var0); - session.evaluate(var1_np, var1); + session.evaluate(var0Np, var0); + session.evaluate(var1Np, var1); } } } private FloatNdArray[] calculate( - FloatNdArray var_np, FloatNdArray grads_np, int step, FloatNdArray m, FloatNdArray v) { + FloatNdArray varNp, FloatNdArray gradsNp, int step, FloatNdArray m, FloatNdArray v) { float alpha = 0.001F; float beta1 = BETA_ONE_DEFAULT; float beta2 = BETA_TWO_DEFAULT; @@ -226,15 +193,15 @@ private FloatNdArray[] calculate( float oneMinusBeta1Pow = 1.F - (float) Math.pow(beta1, step + 1); float alpha1 = alpha / oneMinusBeta1Pow; - // beta1 * m + (1 - beta1) * g_t; - m = ND.add(ND.mul(beta1, m), ND.mul(oneMinusBeta1, grads_np)); - // np.maximum(beta2 * v, np.abs(g_t)) - v = ND.max(ND.mul(beta2, v), ND.abs(grads_np)); - // param_t = param - (alpha / (1 - beta1**(t + 1))) * (m_t / (v_t + epsilon)) - var_np = ND.sub(var_np, ND.mul(alpha1, ND.div(m, ND.add(v, espilon)))); + // beta1 * m + (1 - beta1) * gT; + m = ND.add(ND.mul(beta1, m), ND.mul(oneMinusBeta1, gradsNp)); + // np.maximum(beta2 * v, np.abs(gT)) + v = ND.max(ND.mul(beta2, v), ND.abs(gradsNp)); + // paramT = param - (alpha / (1 - beta1**(t + 1))) * (mT / (vT + epsilon)) + varNp = ND.sub(varNp, ND.mul(alpha1, ND.div(m, ND.add(v, espilon)))); FloatNdArray[] result = new FloatNdArray[3]; - result[VAR] = var_np; + result[VAR] = varNp; result[M] = m; result[V] = v; return result; diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/FtrlTest.java b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/FtrlTest.java index d61197348af..4f1eb25246b 100644 --- a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/FtrlTest.java +++ b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/FtrlTest.java @@ -14,24 +14,8 @@ =======================================================================*/ package org.tensorflow.keras.optimizers; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.*; import org.tensorflow.framework.optimizers.Optimizer; -import static org.tensorflow.keras.optimizers.Ftrl.INITIAL_ACCUM_VALUE_KEY; -import static org.tensorflow.keras.optimizers.Ftrl.L1STRENGTH_KEY; -import static org.tensorflow.keras.optimizers.Ftrl.L2STRENGTH_KEY; -import static org.tensorflow.keras.optimizers.Ftrl.L2_SHRINKAGE_REGULARIZATION_STRENGTH_KEY; -import static org.tensorflow.keras.optimizers.Ftrl.LEARNING_RATE_KEY; -import static org.tensorflow.keras.optimizers.Ftrl.LEARNING_RATE_POWER_KEY; -import static org.tensorflow.keras.optimizers.OptimizerInterface.NAME_KEY; import org.tensorflow.keras.utils.TestSession; import org.tensorflow.ndarray.Shape; import org.tensorflow.op.Op; @@ -41,9 +25,14 @@ import org.tensorflow.op.core.Variable; import org.tensorflow.types.TFloat32; +import java.util.ArrayList; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; + /** Test cases for Ftrl Optimizer */ public class FtrlTest { - private TestSession.Mode tf_mode = TestSession.Mode.GRAPH; + private TestSession.Mode tfMode = TestSession.Mode.GRAPH; int index; public FtrlTest() {} @@ -60,29 +49,10 @@ public void setUp() {} @AfterEach public void tearDown() {} - /** Test of initConfig method, of class Ftrl. */ - @Test - public void testInitConfig() { - try (TestSession session = TestSession.createTestSession(tf_mode)) { - Ops tf = session.getTF(); - Map config = new HashMap<>(); - config.put(NAME_KEY, "Ftrl"); - config.put(LEARNING_RATE_KEY, 2.0F); - config.put(LEARNING_RATE_POWER_KEY, -0.5F); - config.put(INITIAL_ACCUM_VALUE_KEY, 0.1F); - config.put(L1STRENGTH_KEY, 0.0F); - config.put(L2STRENGTH_KEY, 0.0F); - config.put(L2_SHRINKAGE_REGULARIZATION_STRENGTH_KEY, 0.0F); - Ftrl expResult = new Ftrl(tf, 2.0F); - Ftrl result = Ftrl.create(tf, config); - assertEquals(expResult.getConfig(), result.getConfig()); - } - } - /** Test of getOptimizerName method, of class Ftrl. */ @Test public void testGetOptimizerName() { - try (TestSession session = TestSession.createTestSession(tf_mode)) { + try (TestSession session = TestSession.createTestSession(tfMode)) { Ops tf = session.getTF(); Ftrl instance = new Ftrl(tf); String expResult = "Ftrl"; @@ -92,29 +62,29 @@ public void testGetOptimizerName() { } @Test - public void testFtrlWithL1_L2_L2Shrinkage() { - float[] var0_init = {1.0F, 2.0F}; - float[] var1_init = {4.0F, 3.0F}; - float[] grads0_init = {0.1F, 0.2F}; - float[] grads1_init = {0.01F, 0.02F}; + public void testFtrlWithL1L2L2Shrinkage() { + float[] var0Init = {1.0F, 2.0F}; + float[] var1Init = {4.0F, 3.0F}; + float[] grads0Init = {0.1F, 0.2F}; + float[] grads1Init = {0.01F, 0.02F}; float epsilon = 1e-8F; float epsilon1 = 1e-5F; int numSteps = 10; - try (TestSession session = TestSession.createTestSession(tf_mode)) { + try (TestSession session = TestSession.createTestSession(tfMode)) { Ops tf = session.getTF(); - Shape shape0 = Shape.of(var0_init.length); - Shape shape1 = Shape.of(var1_init.length); + Shape shape0 = Shape.of(var0Init.length); + Shape shape1 = Shape.of(var1Init.length); Variable var0 = tf.withName("var0").variable(shape0, TFloat32.DTYPE); Variable var1 = tf.withName("var1").variable(shape1, TFloat32.DTYPE); - Assign var0Initializer = tf.assign(var0, tf.constant(var0_init)); - Assign var1Initializer = tf.assign(var1, tf.constant(var1_init)); + Assign var0Initializer = tf.assign(var0, tf.constant(var0Init)); + Assign var1Initializer = tf.assign(var1, tf.constant(var1Init)); - Constant grads0 = tf.constant(grads0_init); - Constant grads1 = tf.constant(grads1_init); + Constant grads0 = tf.constant(grads0Init); + Constant grads1 = tf.constant(grads1Init); float learningRate = 3.0F; @@ -123,10 +93,10 @@ public void testFtrlWithL1_L2_L2Shrinkage() { tf, learningRate, -0.5F, // learningRatePower - 0.1F, // initial_accumulator_value - 0.001F, // l1_regularization_strength - 2.0F, // l2_regularization_strength - 0.1F // l2_shrinkage_regularization_strength + 0.1F, // initialAccumulatorValue + 0.001F, // l1RegularizationStrength + 2.0F, // l2RegularizationStrength + 0.1F // l2ShrinkageRegularizationStrength ); /* build the GradsAnvVars */ @@ -134,7 +104,7 @@ public void testFtrlWithL1_L2_L2Shrinkage() { gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); - Op ftrl_update = instance.applyGradients(gradsAndVars, "FtrlTest"); + Op ftrlUpdate = instance.applyGradients(gradsAndVars, "FtrlTest"); /* initialize the local variables */ session.run(var0Initializer); @@ -143,11 +113,11 @@ public void testFtrlWithL1_L2_L2Shrinkage() { /** initialize the accumulators */ session.run(tf.init()); - session.evaluate(var0_init, var0); - session.evaluate(var1_init, var1); + session.evaluate(var0Init, var0); + session.evaluate(var1Init, var1); for (int i = 0; i < numSteps; i++) { - session.run(ftrl_update); + session.run(ftrlUpdate); } float[] expectedVar0 = {-0.22578995F, -0.44345796F}; @@ -159,28 +129,28 @@ public void testFtrlWithL1_L2_L2Shrinkage() { @Test public void testFtrlWithL1() { - float[] var0_init = {1.0F, 2.0F}; - float[] var1_init = {4.0F, 3.0F}; - float[] grads0_init = {0.1F, 0.2F}; - float[] grads1_init = {0.01F, 0.02F}; + float[] var0Init = {1.0F, 2.0F}; + float[] var1Init = {4.0F, 3.0F}; + float[] grads0Init = {0.1F, 0.2F}; + float[] grads1Init = {0.01F, 0.02F}; float epsilon = 1e-8F; float epsilon1 = 1e-5F; int numSteps = 10; - try (TestSession session = TestSession.createTestSession(tf_mode)) { + try (TestSession session = TestSession.createTestSession(tfMode)) { Ops tf = session.getTF(); - Shape shape0 = Shape.of(var0_init.length); - Shape shape1 = Shape.of(var1_init.length); + Shape shape0 = Shape.of(var0Init.length); + Shape shape1 = Shape.of(var1Init.length); Variable var0 = tf.withName("var0").variable(shape0, TFloat32.DTYPE); Variable var1 = tf.withName("var1").variable(shape1, TFloat32.DTYPE); - Assign var0Initializer = tf.assign(var0, tf.constant(var0_init)); - Assign var1Initializer = tf.assign(var1, tf.constant(var1_init)); + Assign var0Initializer = tf.assign(var0, tf.constant(var0Init)); + Assign var1Initializer = tf.assign(var1, tf.constant(var1Init)); - Constant grads0 = tf.constant(grads0_init); - Constant grads1 = tf.constant(grads1_init); + Constant grads0 = tf.constant(grads0Init); + Constant grads1 = tf.constant(grads1Init); float learningRate = 3.0F; @@ -189,11 +159,10 @@ public void testFtrlWithL1() { tf, learningRate, Ftrl.LEARNING_RATE_POWER_DEFAULT, // learningRatePower - 0.1F, // initial_accumulator_value - 0.001F, // l1_regularization_strength - 0.0F, // l2_regularization_strength - Ftrl - .L2_SHRINKAGE_REGULARIZATION_STRENGTH_DEFAULT // l2_shrinkage_regularization_strength + 0.1F, // initialAccumulatorValue + 0.001F, // l1RegularizationStrength + 0.0F, // l2RegularizationStrength + Ftrl.L2_SHRINKAGE_REGULARIZATION_STRENGTH_DEFAULT // l2ShrinkageRegularizationStrength ); /* build the GradsAnvVars */ @@ -201,7 +170,7 @@ public void testFtrlWithL1() { gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); - Op ftrl_update = instance.applyGradients(gradsAndVars, "FtrlTest"); + Op ftrlUpdate = instance.applyGradients(gradsAndVars, "FtrlTest"); /* initialize the local variables */ session.run(var0Initializer); @@ -210,11 +179,11 @@ public void testFtrlWithL1() { /** initialize the accumulators */ session.run(tf.init()); - session.evaluate(var0_init, var0); - session.evaluate(var1_init, var1); + session.evaluate(var0Init, var0); + session.evaluate(var1Init, var1); for (int i = 0; i < numSteps; i++) { - session.run(ftrl_update); + session.run(ftrlUpdate); } float[] expectedVar0 = {-7.66718769F, -10.91273689F}; @@ -226,29 +195,29 @@ public void testFtrlWithL1() { } @Test - public void testFtrlWithL1_L2() { - float[] var0_init = {1.0F, 2.0F}; - float[] var1_init = {4.0F, 3.0F}; - float[] grads0_init = {0.1F, 0.2F}; - float[] grads1_init = {0.01F, 0.02F}; + public void testFtrlWithL1L2() { + float[] var0Init = {1.0F, 2.0F}; + float[] var1Init = {4.0F, 3.0F}; + float[] grads0Init = {0.1F, 0.2F}; + float[] grads1Init = {0.01F, 0.02F}; float epsilon = 1e-8F; float epsilon1 = 1e-5F; int numSteps = 10; - try (TestSession session = TestSession.createTestSession(tf_mode)) { + try (TestSession session = TestSession.createTestSession(tfMode)) { Ops tf = session.getTF(); - Shape shape0 = Shape.of(var0_init.length); - Shape shape1 = Shape.of(var1_init.length); + Shape shape0 = Shape.of(var0Init.length); + Shape shape1 = Shape.of(var1Init.length); Variable var0 = tf.withName("var0").variable(shape0, TFloat32.DTYPE); Variable var1 = tf.withName("var1").variable(shape1, TFloat32.DTYPE); - Assign var0Initializer = tf.assign(var0, tf.constant(var0_init)); - Assign var1Initializer = tf.assign(var1, tf.constant(var1_init)); + Assign var0Initializer = tf.assign(var0, tf.constant(var0Init)); + Assign var1Initializer = tf.assign(var1, tf.constant(var1Init)); - Constant grads0 = tf.constant(grads0_init); - Constant grads1 = tf.constant(grads1_init); + Constant grads0 = tf.constant(grads0Init); + Constant grads1 = tf.constant(grads1Init); float learningRate = 3.0F; @@ -257,11 +226,10 @@ public void testFtrlWithL1_L2() { tf, learningRate, Ftrl.LEARNING_RATE_POWER_DEFAULT, // learningRatePower - 0.1F, // initial_accumulator_value - 0.001F, // l1_regularization_strength - 2.0F, // l2_regularization_strength - Ftrl - .L2_SHRINKAGE_REGULARIZATION_STRENGTH_DEFAULT // l2_shrinkage_regularization_strength + 0.1F, // initialAccumulatorValue + 0.001F, // l1RegularizationStrength + 2.0F, // l2RegularizationStrength + Ftrl.L2_SHRINKAGE_REGULARIZATION_STRENGTH_DEFAULT // l2ShrinkageRegularizationStrength ); /* build the GradsAnvVars */ @@ -269,7 +237,7 @@ public void testFtrlWithL1_L2() { gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); - Op ftrl_update = instance.applyGradients(gradsAndVars, "FtrlTest"); + Op ftrlUpdate = instance.applyGradients(gradsAndVars, "FtrlTest"); /* initialize the local variables */ session.run(var0Initializer); @@ -278,11 +246,11 @@ public void testFtrlWithL1_L2() { /** initialize the accumulators */ session.run(tf.init()); - session.evaluate(var0_init, var0); - session.evaluate(var1_init, var1); + session.evaluate(var0Init, var0); + session.evaluate(var1Init, var1); for (int i = 0; i < numSteps; i++) { - session.run(ftrl_update); + session.run(ftrlUpdate); } float[] expectedVar0 = {-0.24059935F, -0.46829352F}; @@ -295,28 +263,28 @@ public void testFtrlWithL1_L2() { @Test public void doTestFtrlwithoutRegularization() { - float[] var0_init = {0.0F, 0.0F}; - float[] var1_init = {0.0F, 0.0F}; - float[] grads0_init = {0.1F, 0.2F}; - float[] grads1_init = {0.01F, 0.02F}; + float[] var0Init = {0.0F, 0.0F}; + float[] var1Init = {0.0F, 0.0F}; + float[] grads0Init = {0.1F, 0.2F}; + float[] grads1Init = {0.01F, 0.02F}; float epsilon = 1e-8F; float epsilon1 = 1e-5F; int numSteps = 3; - try (TestSession session = TestSession.createTestSession(tf_mode)) { + try (TestSession session = TestSession.createTestSession(tfMode)) { Ops tf = session.getTF(); - Shape shape0 = Shape.of(var0_init.length); - Shape shape1 = Shape.of(var1_init.length); + Shape shape0 = Shape.of(var0Init.length); + Shape shape1 = Shape.of(var1Init.length); Variable var0 = tf.withName("var0").variable(shape0, TFloat32.DTYPE); Variable var1 = tf.withName("var1").variable(shape1, TFloat32.DTYPE); - Assign var0Initializer = tf.assign(var0, tf.constant(var0_init)); - Assign var1Initializer = tf.assign(var1, tf.constant(var1_init)); + Assign var0Initializer = tf.assign(var0, tf.constant(var0Init)); + Assign var1Initializer = tf.assign(var1, tf.constant(var1Init)); - Constant grads0 = tf.constant(grads0_init); - Constant grads1 = tf.constant(grads1_init); + Constant grads0 = tf.constant(grads0Init); + Constant grads1 = tf.constant(grads1Init); float learningRate = 3.0F; @@ -326,7 +294,7 @@ public void doTestFtrlwithoutRegularization() { List gradsAndVars = new ArrayList<>(); gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); - Op ftrl_update = instance.applyGradients(gradsAndVars, "FtrlTest"); + Op ftrlUpdate = instance.applyGradients(gradsAndVars, "FtrlTest"); /* initialize the local variables */ session.run(var0Initializer); @@ -335,11 +303,11 @@ public void doTestFtrlwithoutRegularization() { /** initialize the accumulators */ session.run(tf.init()); - session.evaluate(var0_init, var0); - session.evaluate(var1_init, var1); + session.evaluate(var0Init, var0); + session.evaluate(var1Init, var1); for (int i = 0; i < numSteps; i++) { - session.run(ftrl_update); + session.run(ftrlUpdate); } float[] expectedVar0 = {-2.60260963F, -4.29698515F}; diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/NadamTest.java b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/NadamTest.java index 2b8bce40471..3eab6288268 100644 --- a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/NadamTest.java +++ b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/NadamTest.java @@ -14,29 +14,9 @@ =======================================================================*/ package org.tensorflow.keras.optimizers; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.*; import org.tensorflow.Tensor; import org.tensorflow.framework.optimizers.Optimizer; -import static org.tensorflow.keras.optimizers.Adamax.LEARNING_RATE_KEY; -import static org.tensorflow.keras.optimizers.Nadam.BETA_ONE_DEFAULT; -import static org.tensorflow.keras.optimizers.Nadam.BETA_ONE_KEY; -import static org.tensorflow.keras.optimizers.Nadam.BETA_TWO_DEFAULT; -import static org.tensorflow.keras.optimizers.Nadam.BETA_TWO_KEY; -import static org.tensorflow.keras.optimizers.Nadam.EPSILON_DEFAULT; -import static org.tensorflow.keras.optimizers.Nadam.EPSILON_KEY; -import static org.tensorflow.keras.optimizers.Nadam.FIRST_MOMENT; -import static org.tensorflow.keras.optimizers.Nadam.LEARNING_RATE_DEFAULT; -import static org.tensorflow.keras.optimizers.Nadam.SECOND_MOMENT; -import static org.tensorflow.keras.optimizers.OptimizerInterface.NAME_KEY; import org.tensorflow.keras.utils.ND; import org.tensorflow.keras.utils.TestSession; import org.tensorflow.ndarray.FloatNdArray; @@ -49,15 +29,21 @@ import org.tensorflow.op.core.Variable; import org.tensorflow.types.TFloat32; +import java.util.ArrayList; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.tensorflow.keras.optimizers.Nadam.FIRST_MOMENT; +import static org.tensorflow.keras.optimizers.Nadam.SECOND_MOMENT; + /** Test cases for Nadam Optimizer */ public class NadamTest { - private TestSession.Mode tf_mode = TestSession.Mode.GRAPH; + private final TestSession.Mode tfMode = TestSession.Mode.GRAPH; private static final int VAR = 0; private static final int M = 1; private static final int V = 2; - int index = 0; float momentum = 1; public NadamTest() {} @@ -74,27 +60,10 @@ public void setUp() {} @AfterEach public void tearDown() {} - /** Test of create method, of class Nadam. */ - @Test - public void testCreate() { - try (TestSession session = TestSession.createTestSession(tf_mode)) { - Ops tf = session.getTF(); - Map config = new HashMap<>(); - config.put(NAME_KEY, "AdaDelta"); - config.put(LEARNING_RATE_KEY, LEARNING_RATE_DEFAULT); - config.put(BETA_ONE_KEY, BETA_ONE_DEFAULT); - config.put(BETA_TWO_KEY, BETA_TWO_DEFAULT); - config.put(EPSILON_KEY, EPSILON_DEFAULT); - AdaDelta expResult = new AdaDelta(tf); - AdaDelta result = AdaDelta.create(tf, config); - assertEquals(expResult.getConfig(), result.getConfig()); - } - } - /** Test of getOptimizerName method, of class Nadam. */ @Test public void testGetOptimizerName() { - try (TestSession session = TestSession.createTestSession(tf_mode)) { + try (TestSession session = TestSession.createTestSession(tfMode)) { Ops tf = session.getTF(); Nadam instance = new Nadam(tf); String expResult = "Nadam"; @@ -109,10 +78,10 @@ public void testBasic() { int numSteps = 3; - float[] var0_init = {1.0F, 2.0F}; - float[] var1_init = {3.0F, 4.0F}; - float[] grads0_init = {0.1F, 0.1F}; - float[] grads1_init = {0.01F, 0.01F}; + float[] var0Init = {1.0F, 2.0F}; + float[] var1Init = {3.0F, 4.0F}; + float[] grads0Init = {0.1F, 0.1F}; + float[] grads1Init = {0.01F, 0.01F}; float[] zeros = {0.0F, 0.0F}; float[] ones = {1.0F, 1.0F}; @@ -121,27 +90,27 @@ public void testBasic() { FloatNdArray m1 = NdArrays.vectorOf(zeros); FloatNdArray v1 = NdArrays.vectorOf(zeros); FloatNdArray mcache = NdArrays.vectorOf(ones); - FloatNdArray var0_np = NdArrays.vectorOf(var0_init); - FloatNdArray var1_np = NdArrays.vectorOf(var1_init); - FloatNdArray grads0_np = NdArrays.vectorOf(grads0_init); - FloatNdArray grads1_np = NdArrays.vectorOf(grads1_init); + FloatNdArray var0Np = NdArrays.vectorOf(var0Init); + FloatNdArray var1Np = NdArrays.vectorOf(var1Init); + FloatNdArray grads0Np = NdArrays.vectorOf(grads0Init); + FloatNdArray grads1Np = NdArrays.vectorOf(grads1Init); float epsilon = 1e-6f; float epsilon1 = 1e-3F; - try (TestSession session = TestSession.createTestSession(tf_mode)) { + try (TestSession session = TestSession.createTestSession(tfMode)) { Ops tf = session.getTF(); - Shape shape0 = Shape.of(var0_init.length); - Shape shape1 = Shape.of(var1_init.length); + Shape shape0 = Shape.of(var0Init.length); + Shape shape1 = Shape.of(var1Init.length); Variable var0 = tf.withName("var0").variable(shape0, TFloat32.DTYPE); Variable var1 = tf.withName("var1").variable(shape1, TFloat32.DTYPE); - Assign var0Initializer = tf.assign(var0, tf.constant(var0_init)); - Assign var1Initializer = tf.assign(var1, tf.constant(var1_init)); + Assign var0Initializer = tf.assign(var0, tf.constant(var0Init)); + Assign var1Initializer = tf.assign(var1, tf.constant(var1Init)); - Constant grads0 = tf.constant(grads0_init); - Constant grads1 = tf.constant(grads1_init); + Constant grads0 = tf.constant(grads0Init); + Constant grads1 = tf.constant(grads1Init); Nadam instance = new Nadam(tf); /* build the GradsAnvVars */ @@ -176,8 +145,8 @@ public void testBasic() { session.setEpsilon(epsilon1); - session.evaluate(var0_init, var0); - session.evaluate(var1_init, var1); + session.evaluate(var0Init, var0); + session.evaluate(var1Init, var1); try (Tensor result = session @@ -222,13 +191,13 @@ public void testBasic() { }); } mcache = ND.mul(mcache, momentum); - FloatNdArray[] resultsNP = nadam_update_numpy(var0_np, grads0_np, step, m0, v0, mcache); - var0_np = resultsNP[VAR]; + FloatNdArray[] resultsNP = nadamUpdateNdArray(var0Np, grads0Np, step, m0, v0, mcache); + var0Np = resultsNP[VAR]; m0 = resultsNP[M]; v0 = resultsNP[V]; - resultsNP = nadam_update_numpy(var1_np, grads1_np, step, m1, v1, mcache); - var1_np = resultsNP[VAR]; + resultsNP = nadamUpdateNdArray(var1Np, grads1Np, step, m1, v1, mcache); + var1Np = resultsNP[VAR]; m1 = resultsNP[M]; v1 = resultsNP[V]; @@ -241,46 +210,41 @@ public void testBasic() { session.evaluate(v1, secondMomentSlots[1]); // evaluate var0 and var1 - session.evaluate(var0_np, var0); - session.evaluate(var1_np, var1); + session.evaluate(var0Np, var0); + session.evaluate(var1Np, var1); } } } - private FloatNdArray update_m_cache(FloatNdArray mcache, int t) { - float mu_t = 0.9F * (1.0F - 0.5F * (float) Math.pow(0.96, (0.004 * (t + 1)))); - return ND.mul(mu_t, mcache); - } - - private FloatNdArray[] nadam_update_numpy( - FloatNdArray var_np, - FloatNdArray grads_np, + private FloatNdArray[] nadamUpdateNdArray( + FloatNdArray varNp, + FloatNdArray gradsNp, int t, FloatNdArray m, FloatNdArray v, - FloatNdArray m_cache) { + FloatNdArray mCache) { float alpha = 0.001F; float beta1 = 0.9F; float beta2 = 0.999F; float epsilon = 1e-8F; - float mu_t = beta1 * (1F - 0.5F * (float) Math.pow(0.96, 0.004 * (t + 1))); - float mu_t_1 = beta1 * (1F - 0.5F * (float) Math.pow(0.96, (0.004 * (t + 2)))); - FloatNdArray m_cache_t_1 = ND.mul(m_cache, mu_t_1); - FloatNdArray g_prime_t = ND.div(grads_np, ND.sub(1.0F, m_cache)); - FloatNdArray m_t = ND.add(ND.mul(beta1, m), ND.mul((1 - beta1), grads_np)); - FloatNdArray v_t = ND.add(ND.mul(beta2, v), ND.mul((1 - beta2), ND.square(grads_np))); - - FloatNdArray m_prime_t = ND.div(m_t, ND.sub(1.F, m_cache_t_1)); - FloatNdArray v_prime_t = ND.div(v_t, 1.F - (float) Math.pow(beta2, t + 1)); - FloatNdArray m_bar_t = ND.add(ND.mul((1 - mu_t), g_prime_t), ND.mul(mu_t_1, m_prime_t)); - FloatNdArray param_t = - ND.sub(var_np, ND.div(ND.mul(alpha, m_bar_t), ND.add(ND.sqrt(v_prime_t), epsilon))); + float muT = beta1 * (1F - 0.5F * (float) Math.pow(0.96, 0.004 * (t + 1))); + float muT1 = beta1 * (1F - 0.5F * (float) Math.pow(0.96, (0.004 * (t + 2)))); + FloatNdArray mCacheT1 = ND.mul(mCache, muT1); + FloatNdArray gPrimeT = ND.div(gradsNp, ND.sub(1.0F, mCache)); + FloatNdArray mT = ND.add(ND.mul(beta1, m), ND.mul((1 - beta1), gradsNp)); + FloatNdArray vT = ND.add(ND.mul(beta2, v), ND.mul((1 - beta2), ND.square(gradsNp))); + + FloatNdArray mPrimeT = ND.div(mT, ND.sub(1.F, mCacheT1)); + FloatNdArray vPrimeT = ND.div(vT, 1.F - (float) Math.pow(beta2, t + 1)); + FloatNdArray mBarT = ND.add(ND.mul((1 - muT), gPrimeT), ND.mul(muT1, mPrimeT)); + FloatNdArray paramT = + ND.sub(varNp, ND.div(ND.mul(alpha, mBarT), ND.add(ND.sqrt(vPrimeT), epsilon))); FloatNdArray[] results = new FloatNdArray[3]; - results[VAR] = param_t; - results[M] = m_t; - results[V] = v_t; + results[VAR] = paramT; + results[M] = mT; + results[V] = vT; return results; } } diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/RMSPropTest.java b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/RMSPropTest.java index b8fb4f40ee9..cabf869536c 100644 --- a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/RMSPropTest.java +++ b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/RMSPropTest.java @@ -14,30 +14,8 @@ =======================================================================*/ package org.tensorflow.keras.optimizers; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.*; import org.tensorflow.framework.optimizers.Optimizer; -import static org.tensorflow.framework.optimizers.RMSProp.MG; -import static org.tensorflow.framework.optimizers.RMSProp.MOMENTUM; -import static org.tensorflow.framework.optimizers.RMSProp.RMS; -import static org.tensorflow.keras.optimizers.Ftrl.LEARNING_RATE_KEY; -import static org.tensorflow.keras.optimizers.OptimizerInterface.NAME_KEY; -import static org.tensorflow.keras.optimizers.RMSProp.CENTERED_DEFAULT; -import static org.tensorflow.keras.optimizers.RMSProp.CENTERED_KEY; -import static org.tensorflow.keras.optimizers.RMSProp.DECAY_DEFAULT; -import static org.tensorflow.keras.optimizers.RMSProp.DECAY_KEY; -import static org.tensorflow.keras.optimizers.RMSProp.EPSILON_DEFAULT; -import static org.tensorflow.keras.optimizers.RMSProp.EPSILON_KEY; -import static org.tensorflow.keras.optimizers.RMSProp.MOMENTUM_DEFAULT; -import static org.tensorflow.keras.optimizers.RMSProp.MOMENTUM_KEY; import org.tensorflow.keras.utils.ND; import org.tensorflow.keras.utils.TestSession; import org.tensorflow.ndarray.FloatNdArray; @@ -50,258 +28,254 @@ import org.tensorflow.op.core.Variable; import org.tensorflow.types.TFloat32; -/** Test cases for RMSProp Optimizer */ -public class RMSPropTest { - private TestSession.Mode tf_mode = TestSession.Mode.GRAPH; - - final int VAR_T = 0; - final int MG_T = 1; - final int RMS_T = 2; - final int MOM_T = 3; - - int index; - - public RMSPropTest() { - } - - @BeforeAll - public static void setUpClass() { - } - - @AfterAll - public static void tearDownClass() { - } - - @BeforeEach - public void setUp() { - } - - @AfterEach - public void tearDown() { - } - - /** - * Test of create method, of class RMSProp. - */ - @Test - public void testCreate() { - try (TestSession session = TestSession.createTestSession(tf_mode)) { - Ops tf = session.getTF(); - Map config = new HashMap<>(); - config.put(NAME_KEY, "Ftrl"); - config.put(LEARNING_RATE_KEY, 2.0F); - config.put(DECAY_KEY, DECAY_DEFAULT); - config.put(MOMENTUM_KEY, MOMENTUM_DEFAULT); - config.put(EPSILON_KEY, EPSILON_DEFAULT); - config.put(CENTERED_KEY, CENTERED_DEFAULT); - Ftrl expResult = new Ftrl(tf, 2.0F); - Ftrl result = Ftrl.create(tf, config); - assertEquals(expResult.getConfig(), result.getConfig()); - } - } +import java.util.ArrayList; +import java.util.List; - Object[][] _test_param_values = { - // learning_rate, rho (decay), momentum, epsilon, centered - {0.05F, 0.9F, 0.0F, 1e-3F, true}, - {0.05F, 0.9F, 0.0F, 1e-3F, false}, - {0.1F, 0.9F, 0.0F, 1e-3F, true}, - {0.01F, 0.9F, 0.0F, 1e-5F, true}, - {0.01F, 0.9F, 0.9F, 1e-5F, true} - }; - - @Test - public void testDense() { - - int numSteps = 3; - - for (int run = 0; run < _test_param_values.length; run++) { - try (TestSession session = TestSession.createTestSession(tf_mode)) { - Ops tf = session.getTF(); - session.setEpsilon(1e-2f); - float[] var0_init = {1.0F, 2.0F}; - float[] var1_init = {3.0F, 4.0F}; - float[] grads0_init = {0.1F, 0.2F}; - float[] grads1_init = {0.01F, 0.2F}; - final float epsilon1 = 1e-2F; - - FloatNdArray var0_np = NdArrays.vectorOf(var0_init); - FloatNdArray var1_np = NdArrays.vectorOf(var1_init); - FloatNdArray grads0_np = NdArrays.vectorOf(grads0_init); - FloatNdArray grads1_np = NdArrays.vectorOf(grads1_init); - - Shape shape0 = Shape.of(var0_init.length); - Shape shape1 = Shape.of(var1_init.length); - Variable var0 = tf.withName("var0").variable(shape0, TFloat32.DTYPE); - Variable var1 = tf.withName("var1").variable(shape1, TFloat32.DTYPE); - - Assign var0Initializer = tf.assign(var0, tf.constant(var0_init)); - Assign var1Initializer = tf.assign(var1, tf.constant(var1_init)); - - Constant grads0 = tf.constant(grads0_init); - Constant grads1 = tf.constant(grads1_init); - - // learning_rate, rho (decay), momentum, epsilon, centered - float learningRate = (float) (float) _test_param_values[run][0]; - float decay = (float) _test_param_values[run][1]; - float momentum = (float) _test_param_values[run][2]; - float epsilon = (float) _test_param_values[run][3]; - boolean centered = (boolean) _test_param_values[run][4]; - - RMSProp instance = new RMSProp(tf, - learningRate, - decay, - momentum, - epsilon, - centered); - - /* build the GradsAnvVars */ - List gradsAndVars = new ArrayList<>(); - gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); - gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); - - Op update = instance.applyGradients(gradsAndVars, "RMSPropTest"); - - /* initialize the local variables */ - session.run(var0Initializer); - session.run(var1Initializer); - - /** - * initialize the accumulators - */ - session.run(tf.init()); - - /** - * make sure the variables were initialized properly - */ - session.evaluate(var0_init, var0); - session.evaluate(var1_init, var1); - - Variable mg0 = centered ? instance.getSlot(var0.asOutput(), MG).get() : null; - Variable mg1 = centered ? instance.getSlot(var1.asOutput(), MG).get() : null; - Variable mom0 = momentum > 0.F ? instance.getSlot(var0.asOutput(), MOMENTUM).get() : null; - Variable mom1 = momentum > 0.F ? instance.getSlot(var1.asOutput(), MOMENTUM).get() : null; - Variable rms0 = instance.getSlot(var0.asOutput(), RMS).get(); - Variable rms1 = instance.getSlot(var1.asOutput(), RMS).get(); - - float[] zeros = {0.0F, 0.0F}; - float[] ones = {1.0F, 1.0F}; // temp to match RMSProp - FloatNdArray mg0_np = NdArrays.vectorOf(zeros); - FloatNdArray mg1_np = NdArrays.vectorOf(zeros); - FloatNdArray rms0_np = NdArrays.vectorOf(ones); - FloatNdArray rms1_np = NdArrays.vectorOf(ones); - FloatNdArray mom0_np = NdArrays.vectorOf(zeros); - FloatNdArray mom1_np = NdArrays.vectorOf(zeros); - - - - for (int i = 0; i < numSteps; i++) { - session.run(update); - FloatNdArray[] result0 = calc(var0_np, grads0_np, mg0_np, rms0_np, - mom0_np, learningRate, decay, momentum, epsilon, centered); - var0_np = result0[VAR_T]; - mg0_np = result0[MG_T]; - rms0_np = result0[RMS_T]; - mom0_np = result0[MOM_T]; - - FloatNdArray[] result1 = calc(var1_np, grads1_np, mg1_np, rms1_np, - mom1_np, learningRate, decay, momentum, epsilon, centered); - - var1_np = result1[VAR_T]; - mg1_np = result1[MG_T]; - rms1_np = result1[RMS_T]; - mom1_np = result1[MOM_T]; - - if (centered) { - session.evaluate(mg0_np, mg0); - session.evaluate(mg0_np, mg0); - } - if (momentum > 0.F) { - session.evaluate(mom0_np, mom0); - session.evaluate(mom1_np, mom1); - } - - /* TODO the values returned from rms slot, do not match what I see in the python test */ - session.evaluate(rms0_np, rms0); - session.evaluate(rms1_np, rms1); - - session.evaluate(var0_np, var0); - session.evaluate(var1_np, var1); - } - } - } - } +import static org.tensorflow.framework.optimizers.RMSProp.*; - FloatNdArray[] calc(FloatNdArray var_np, FloatNdArray grad_np, FloatNdArray mg_np, - FloatNdArray rms_np, FloatNdArray mom, float lr, float decay, float momentum, - float epsilon, boolean centered) { - - FloatNdArray[] result = new FloatNdArray[4]; // var_t, mg_t, rms_t, mom_t - result[RMS_T] = calcRMS(rms_np, grad_np, decay); // RMS - - FloatNdArray denom_t; - if (centered) { - result[MG_T] = calcMG(mg_np, grad_np, decay); - //rms_t - mg_t * mg_t - denom_t = ND.sub(result[RMS_T], ND.square(result[MG_T])); - } else { - result[MG_T] = mg_np; - denom_t = rms_np; - } - if (momentum > 0.F) { - //momentum * mom + lr * g / (np.sqrt(denom_t + epsilon)) - result[MOM_T] = calcMom(momentum, mom, lr, grad_np, denom_t, epsilon); - //var_t = var - mom_t - result[VAR_T] = ND.sub(var_np, result[MOM_T]); - } else { - result[MOM_T] = mom; - result[VAR_T] = calcVar(var_np, grad_np, lr, denom_t, epsilon); +/** Test cases for RMSProp Optimizer */ +public class RMSPropTest { + final int VAR_T = 0; + final int MG_T = 1; + final int RMS_T = 2; + final int MOM_T = 3; + private final TestSession.Mode tfMode = TestSession.Mode.GRAPH; + int index; + Object[][] TestParamValues = { + // learningRate, rho (decay), momentum, epsilon, centered + {0.05F, 0.9F, 0.0F, 1e-3F, true}, + {0.05F, 0.9F, 0.0F, 1e-3F, false}, + {0.1F, 0.9F, 0.0F, 1e-3F, true}, + {0.01F, 0.9F, 0.0F, 1e-5F, true}, + {0.01F, 0.9F, 0.9F, 1e-5F, true} + }; + + public RMSPropTest() {} + + @BeforeAll + public static void setUpClass() {} + + @AfterAll + public static void tearDownClass() {} + + @BeforeEach + public void setUp() {} + + @AfterEach + public void tearDown() {} + + @Test + public void testDense() { + + int numSteps = 3; + + for (int run = 0; run < TestParamValues.length; run++) { + try (TestSession session = TestSession.createTestSession(tfMode)) { + Ops tf = session.getTF(); + session.setEpsilon(1e-2f); + float[] var0Init = {1.0F, 2.0F}; + float[] var1Init = {3.0F, 4.0F}; + float[] grads0Init = {0.1F, 0.2F}; + float[] grads1Init = {0.01F, 0.2F}; + final float epsilon1 = 1e-2F; + + FloatNdArray var0Np = NdArrays.vectorOf(var0Init); + FloatNdArray var1Np = NdArrays.vectorOf(var1Init); + FloatNdArray grads0Np = NdArrays.vectorOf(grads0Init); + FloatNdArray grads1Np = NdArrays.vectorOf(grads1Init); + + Shape shape0 = Shape.of(var0Init.length); + Shape shape1 = Shape.of(var1Init.length); + Variable var0 = tf.withName("var0").variable(shape0, TFloat32.DTYPE); + Variable var1 = tf.withName("var1").variable(shape1, TFloat32.DTYPE); + + Assign var0Initializer = tf.assign(var0, tf.constant(var0Init)); + Assign var1Initializer = tf.assign(var1, tf.constant(var1Init)); + + Constant grads0 = tf.constant(grads0Init); + Constant grads1 = tf.constant(grads1Init); + + // learningRate, rho (decay), momentum, epsilon, centered + float learningRate = (float) (float) TestParamValues[run][0]; + float decay = (float) TestParamValues[run][1]; + float momentum = (float) TestParamValues[run][2]; + float epsilon = (float) TestParamValues[run][3]; + boolean centered = (boolean) TestParamValues[run][4]; + + RMSProp instance = new RMSProp(tf, learningRate, decay, momentum, epsilon, centered); + + /* build the GradsAnvVars */ + List gradsAndVars = new ArrayList<>(); + gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); + gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); + + Op update = instance.applyGradients(gradsAndVars, "RMSPropTest"); + + /* initialize the local variables */ + session.run(var0Initializer); + session.run(var1Initializer); + + /** initialize the accumulators */ + session.run(tf.init()); + + /** make sure the variables were initialized properly */ + session.evaluate(var0Init, var0); + session.evaluate(var1Init, var1); + + Variable mg0 = centered ? instance.getSlot(var0.asOutput(), MG).get() : null; + Variable mg1 = centered ? instance.getSlot(var1.asOutput(), MG).get() : null; + Variable mom0 = + momentum > 0.F ? instance.getSlot(var0.asOutput(), MOMENTUM).get() : null; + Variable mom1 = + momentum > 0.F ? instance.getSlot(var1.asOutput(), MOMENTUM).get() : null; + Variable rms0 = instance.getSlot(var0.asOutput(), RMS).get(); + Variable rms1 = instance.getSlot(var1.asOutput(), RMS).get(); + + float[] zeros = {0.0F, 0.0F}; + float[] ones = {1.0F, 1.0F}; // temp to match RMSProp + FloatNdArray mg0Np = NdArrays.vectorOf(zeros); + FloatNdArray mg1Np = NdArrays.vectorOf(zeros); + FloatNdArray rms0Np = NdArrays.vectorOf(ones); + FloatNdArray rms1Np = NdArrays.vectorOf(ones); + FloatNdArray mom0Np = NdArrays.vectorOf(zeros); + FloatNdArray mom1Np = NdArrays.vectorOf(zeros); + + for (int i = 0; i < numSteps; i++) { + session.run(update); + FloatNdArray[] result0 = + calc( + var0Np, + grads0Np, + mg0Np, + rms0Np, + mom0Np, + learningRate, + decay, + momentum, + epsilon, + centered); + var0Np = result0[VAR_T]; + mg0Np = result0[MG_T]; + rms0Np = result0[RMS_T]; + mom0Np = result0[MOM_T]; + + FloatNdArray[] result1 = + calc( + var1Np, + grads1Np, + mg1Np, + rms1Np, + mom1Np, + learningRate, + decay, + momentum, + epsilon, + centered); + + var1Np = result1[VAR_T]; + mg1Np = result1[MG_T]; + rms1Np = result1[RMS_T]; + mom1Np = result1[MOM_T]; + + if (centered) { + session.evaluate(mg0Np, mg0); + session.evaluate(mg0Np, mg0); + } + if (momentum > 0.F) { + session.evaluate(mom0Np, mom0); + session.evaluate(mom1Np, mom1); + } + + /* TODO the values returned from rms slot, do not match what I see in the python test */ + session.evaluate(rms0Np, rms0); + session.evaluate(rms1Np, rms1); + + session.evaluate(var0Np, var0); + session.evaluate(var1Np, var1); } - - - return result; - + } } - - private FloatNdArray calcRMS(FloatNdArray rms_np, FloatNdArray grad_np, float decay) { - //rms * rho + (1 - rho) * g * g - FloatNdArray rms_rho = ND.mul(rms_np, decay); - FloatNdArray squareG = ND.square(grad_np); - float oneRHO = 1.0F - decay; - FloatNdArray decayG2 = ND.mul(oneRHO, squareG); - FloatNdArray result = ND.add(rms_rho, decayG2); - return result; - } - - private FloatNdArray calcMG(FloatNdArray mg_np, FloatNdArray grad_np, float decay) { - //mg_t = mg * rho + (1 - rho) * g - FloatNdArray mg_rho = ND.mul(mg_np, decay); - float oneRHO = 1.0F - decay; - FloatNdArray decayG = ND.mul(oneRHO, grad_np); - FloatNdArray result = ND.add(mg_rho, decayG); - return result; - + } + + FloatNdArray[] calc( + FloatNdArray varNp, + FloatNdArray gradNp, + FloatNdArray mgNp, + FloatNdArray rmsNp, + FloatNdArray mom, + float lr, + float decay, + float momentum, + float epsilon, + boolean centered) { + + FloatNdArray[] result = new FloatNdArray[4]; // varT, mgT, rmsT, momT + result[RMS_T] = calcRMS(rmsNp, gradNp, decay); // RMS + + FloatNdArray denomT; + if (centered) { + result[MG_T] = calcMG(mgNp, gradNp, decay); + // rmsT - mgT * mgT + denomT = ND.sub(result[RMS_T], ND.square(result[MG_T])); + } else { + result[MG_T] = mgNp; + denomT = rmsNp; } - - private FloatNdArray calcMom(float momentum, FloatNdArray mom, float lr, - FloatNdArray grad_np, FloatNdArray denom_t, float epsilon) { - // momentum * mom + lr * g / (np.sqrt(denom_t + epsilon)) - FloatNdArray moMo = ND.mul(momentum, mom); - FloatNdArray dividend = ND.mul(lr, grad_np); - FloatNdArray divisor = ND.sqrt(ND.add(denom_t, epsilon)); - FloatNdArray quotient = ND.div(dividend, divisor); - FloatNdArray result = ND.add(moMo, quotient); - return result; - + if (momentum > 0.F) { + // momentum * mom + lr * g / (np.sqrt(denomT + epsilon)) + result[MOM_T] = calcMom(momentum, mom, lr, gradNp, denomT, epsilon); + // varT = var - momT + result[VAR_T] = ND.sub(varNp, result[MOM_T]); + } else { + result[MOM_T] = mom; + result[VAR_T] = calcVar(varNp, gradNp, lr, denomT, epsilon); } - private FloatNdArray calcVar(FloatNdArray var_np, FloatNdArray grad_np, float lr, - FloatNdArray denom_t, float epsilon) { - // var - lr * g / (np.sqrt(denom_t) + epsilon) - FloatNdArray dividend = ND.mul(lr, grad_np); - FloatNdArray divisor = ND.add(ND.sqrt(denom_t), epsilon); - FloatNdArray quotient = ND.div(dividend, divisor); - FloatNdArray result = ND.sub(var_np, quotient); - return result; - - } + return result; + } + + private FloatNdArray calcRMS(FloatNdArray rmsNp, FloatNdArray gradNp, float decay) { + // rms * rho + (1 - rho) * g * g + FloatNdArray rmsRho = ND.mul(rmsNp, decay); + FloatNdArray squareG = ND.square(gradNp); + float oneRHO = 1.0F - decay; + FloatNdArray decayG2 = ND.mul(oneRHO, squareG); + FloatNdArray result = ND.add(rmsRho, decayG2); + return result; + } + + private FloatNdArray calcMG(FloatNdArray mgNp, FloatNdArray gradNp, float decay) { + // mgT = mg * rho + (1 - rho) * g + FloatNdArray mgRho = ND.mul(mgNp, decay); + float oneRHO = 1.0F - decay; + FloatNdArray decayG = ND.mul(oneRHO, gradNp); + FloatNdArray result = ND.add(mgRho, decayG); + return result; + } + + private FloatNdArray calcMom( + float momentum, + FloatNdArray mom, + float lr, + FloatNdArray gradNp, + FloatNdArray denomT, + float epsilon) { + // momentum * mom + lr * g / (np.sqrt(denomT + epsilon)) + FloatNdArray moMo = ND.mul(momentum, mom); + FloatNdArray dividend = ND.mul(lr, gradNp); + FloatNdArray divisor = ND.sqrt(ND.add(denomT, epsilon)); + FloatNdArray quotient = ND.div(dividend, divisor); + FloatNdArray result = ND.add(moMo, quotient); + return result; + } + + private FloatNdArray calcVar( + FloatNdArray varNp, FloatNdArray gradNp, float lr, FloatNdArray denomT, float epsilon) { + // var - lr * g / (np.sqrt(denomT) + epsilon) + FloatNdArray dividend = ND.mul(lr, gradNp); + FloatNdArray divisor = ND.add(ND.sqrt(denomT), epsilon); + FloatNdArray quotient = ND.div(dividend, divisor); + FloatNdArray result = ND.sub(varNp, quotient); + return result; + } } diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/SGDTest.java b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/SGDTest.java index 7e12b957f84..b36851a561e 100644 --- a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/SGDTest.java +++ b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/SGDTest.java @@ -14,24 +14,8 @@ =======================================================================*/ package org.tensorflow.keras.optimizers; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; -import static org.tensorflow.framework.optimizers.Momentum.MOMENTUM; +import org.junit.jupiter.api.*; import org.tensorflow.framework.optimizers.Optimizer; -import static org.tensorflow.keras.optimizers.OptimizerInterface.NAME_KEY; -import static org.tensorflow.keras.optimizers.SGD.LEARNING_RATE_KEY; -import static org.tensorflow.keras.optimizers.SGD.MOMENTUM_DEFAULT; -import static org.tensorflow.keras.optimizers.SGD.MOMENTUM_KEY; -import static org.tensorflow.keras.optimizers.SGD.NESTEROV_DEFAULT; -import static org.tensorflow.keras.optimizers.SGD.NESTEROV_KEY; import org.tensorflow.keras.utils.TestSession; import org.tensorflow.ndarray.Shape; import org.tensorflow.op.Op; @@ -41,12 +25,16 @@ import org.tensorflow.op.core.Variable; import org.tensorflow.types.TFloat32; +import java.util.ArrayList; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.tensorflow.framework.optimizers.Momentum.MOMENTUM; + /** Test cases for SGD Optimizer */ public class SGDTest { - private TestSession.Mode tf_mode = TestSession.Mode.GRAPH; - - int index; + private final TestSession.Mode tfMode = TestSession.Mode.GRAPH; public SGDTest() {} @@ -62,26 +50,10 @@ public void setUp() {} @AfterEach public void tearDown() {} - /** Test of create method, of class SGD. */ - @Test - public void testCreate() { - try (TestSession session = TestSession.createTestSession(tf_mode)) { - Ops tf = session.getTF(); - Map config = new HashMap<>(); - config.put(NAME_KEY, "Ftrl"); - config.put(LEARNING_RATE_KEY, 2.0F); - config.put(MOMENTUM_KEY, MOMENTUM_DEFAULT); - config.put(NESTEROV_KEY, NESTEROV_DEFAULT); - SGD expResult = new SGD(tf, 2.0F); - SGD result = SGD.create(tf, config); - assertEquals(expResult.getConfig(), result.getConfig()); - } - } - /** Test of getOptimizerName method, of class SGD. */ @Test public void testGetOptimizerName() { - try (TestSession session = TestSession.createTestSession(tf_mode)) { + try (TestSession session = TestSession.createTestSession(tfMode)) { Ops tf = session.getTF(); SGD instance = new SGD(tf); String expResult = "SGD"; @@ -92,28 +64,28 @@ public void testGetOptimizerName() { @Test public void testBasic() { - float[] var0_init = {1.0F, 2.0F}; - float[] var1_init = {3.0F, 4.0F}; - float[] grads0_init = {0.1F, 0.1F}; - float[] grads1_init = {0.01F, 0.01F}; + float[] var0Init = {1.0F, 2.0F}; + float[] var1Init = {3.0F, 4.0F}; + float[] grads0Init = {0.1F, 0.1F}; + float[] grads1Init = {0.01F, 0.01F}; float learningRate = 3.0F; float epsilon = 1e-6F; float epsilon1 = 1e-2F; - try (TestSession session = TestSession.createTestSession(tf_mode)) { + try (TestSession session = TestSession.createTestSession(tfMode)) { Ops tf = session.getTF(); - Shape shape0 = Shape.of(var0_init.length); - Shape shape1 = Shape.of(var1_init.length); + Shape shape0 = Shape.of(var0Init.length); + Shape shape1 = Shape.of(var1Init.length); Variable var0 = tf.withName("var0").variable(shape0, TFloat32.DTYPE); Variable var1 = tf.withName("var1").variable(shape1, TFloat32.DTYPE); - Assign var0Initializer = tf.assign(var0, tf.constant(var0_init)); - Assign var1Initializer = tf.assign(var1, tf.constant(var1_init)); + Assign var0Initializer = tf.assign(var0, tf.constant(var0Init)); + Assign var1Initializer = tf.assign(var1, tf.constant(var1Init)); - Constant grads0 = tf.constant(grads0_init); - Constant grads1 = tf.constant(grads1_init); + Constant grads0 = tf.constant(grads0Init); + Constant grads1 = tf.constant(grads1Init); /* build the GradsAnvVars */ List gradsAndVars = new ArrayList<>(); @@ -131,8 +103,8 @@ public void testBasic() { session.run(tf.init()); /** make sure the variables were initialized properly */ - session.evaluate(var0_init, var0); - session.evaluate(var1_init, var1); + session.evaluate(var0Init, var0); + session.evaluate(var1Init, var1); session.run(update); // 1 step @@ -145,10 +117,10 @@ public void testBasic() { @Test public void testMomentum() { - float[] var0_init = {1.0F, 2.0F}; - float[] var1_init = {3.0F, 4.0F}; - float[] grads0_init = {0.1F, 0.1F}; - float[] grads1_init = {0.01F, 0.01F}; + float[] var0Init = {1.0F, 2.0F}; + float[] var1Init = {3.0F, 4.0F}; + float[] grads0Init = {0.1F, 0.1F}; + float[] grads1Init = {0.01F, 0.01F}; float learningRate = 2.0F; float momentum = 0.9F; @@ -156,19 +128,19 @@ public void testMomentum() { float epsilon = 1e-6F; float epsilon1 = 1e-2F; - try (TestSession session = TestSession.createTestSession(tf_mode)) { + try (TestSession session = TestSession.createTestSession(tfMode)) { Ops tf = session.getTF(); - Shape shape0 = Shape.of(var0_init.length); - Shape shape1 = Shape.of(var1_init.length); + Shape shape0 = Shape.of(var0Init.length); + Shape shape1 = Shape.of(var1Init.length); Variable var0 = tf.withName("var0").variable(shape0, TFloat32.DTYPE); Variable var1 = tf.withName("var1").variable(shape1, TFloat32.DTYPE); - Assign var0Initializer = tf.assign(var0, tf.constant(var0_init)); - Assign var1Initializer = tf.assign(var1, tf.constant(var1_init)); + Assign var0Initializer = tf.assign(var0, tf.constant(var0Init)); + Assign var1Initializer = tf.assign(var1, tf.constant(var1Init)); - Constant grads0 = tf.constant(grads0_init); - Constant grads1 = tf.constant(grads1_init); + Constant grads0 = tf.constant(grads0Init); + Constant grads1 = tf.constant(grads1Init); /* build the GradsAnvVars */ List gradsAndVars = new ArrayList<>(); @@ -191,8 +163,8 @@ public void testMomentum() { session.run(tf.init()); /** make sure the variables were initialized properly */ - session.evaluate(var0_init, var0); - session.evaluate(var1_init, var1); + session.evaluate(var0Init, var0); + session.evaluate(var1Init, var1); session.run(update); // 1 step @@ -208,20 +180,20 @@ public void testMomentum() { session.run(update); // step 2 - float[] expectedMomentum0_2 = {(0.9f * 0.1f + 0.1f), (0.9f * 0.1f + 0.1f)}; - float[] expectedMomentum1_2 = {(0.9f * 0.01f + 0.01f), (0.9f * 0.01f + 0.01f)}; - session.evaluate(expectedMomentum0_2, momentumSlot0); - session.evaluate(expectedMomentum1_2, momentumSlot1); + float[] expectedMomentum02 = {(0.9f * 0.1f + 0.1f), (0.9f * 0.1f + 0.1f)}; + float[] expectedMomentum12 = {(0.9f * 0.01f + 0.01f), (0.9f * 0.01f + 0.01f)}; + session.evaluate(expectedMomentum02, momentumSlot0); + session.evaluate(expectedMomentum12, momentumSlot1); - float[] expectedVar0_2 = { + float[] expectedVar02 = { 1.0F - (0.1F * 2.0F) - ((0.9F * 0.1F + 0.1F) * 2.0F), 2.0F - (0.1F * 2.0F) - ((0.9F * 0.1F + 0.1F) * 2.0F) }; - float[] expectedVar1_2 = { + float[] expectedVar12 = { 2.98F - ((0.9F * 0.01F + 0.01F) * 2.0F), 3.98F - ((0.9F * 0.01F + 0.01F) * 2.0F) }; - session.evaluate(expectedVar0_2, var0); - session.evaluate(expectedVar1_2, var1); + session.evaluate(expectedVar02, var0); + session.evaluate(expectedVar12, var1); } } } From 171cd2f4f9878b00e35f3175b0a8c7954ef21f07 Mon Sep 17 00:00:00 2001 From: Jim Clarke Date: Mon, 7 Sep 2020 14:38:12 -0400 Subject: [PATCH 28/33] clean upd warning, format code --- .../keras/optimizers/AdaGradDATest.java | 9 ++-- .../keras/optimizers/AdaGradTest.java | 15 +++--- .../tensorflow/keras/optimizers/AdamTest.java | 34 +++----------- .../keras/optimizers/AdamaxTest.java | 26 ++++------ .../tensorflow/keras/optimizers/FtrlTest.java | 28 ++++------- .../keras/optimizers/NadamTest.java | 22 ++------- .../keras/optimizers/RMSPropTest.java | 47 +++++++++---------- .../tensorflow/keras/optimizers/SGDTest.java | 19 +++----- 8 files changed, 68 insertions(+), 132 deletions(-) diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaGradDATest.java b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaGradDATest.java index 57a5f5c0bd8..7275e9f8113 100644 --- a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaGradDATest.java +++ b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaGradDATest.java @@ -24,6 +24,7 @@ import org.tensorflow.op.core.Constant; import org.tensorflow.op.core.Variable; import org.tensorflow.types.TFloat32; +import org.tensorflow.types.family.TType; import java.util.ArrayList; import java.util.List; @@ -33,8 +34,6 @@ public class AdaGradDATest { private final TestSession.Mode tfMode = TestSession.Mode.GRAPH; - int index; - public AdaGradDATest() {} @BeforeAll @@ -55,8 +54,6 @@ public void testBasic() { float[] var1Init = {0.0F, 0.0F}; float[] grads0Init = {0.1F, 0.2F}; float[] grads1Init = {0.01F, 0.02F}; - float epsilon = 1e-8F; - float epsilon1 = 1e-5F; try (TestSession session = TestSession.createTestSession(tfMode)) { Ops tf = session.getTF(); @@ -81,13 +78,13 @@ public void testBasic() { AdaGrad instance = new AdaGrad(tf, learningRate); /* build the GradsAnvVars */ - List gradsAndVars = new ArrayList<>(); + List> gradsAndVars = new ArrayList<>(); gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); Op adaUpdate = instance.applyGradients(gradsAndVars, "AdGradDATest"); - /** initialize the accumulators */ + /* initialize the accumulators */ session.run(tf.init()); session.evaluate(var0Init, var0); diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaGradTest.java b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaGradTest.java index 92701b37d67..d407209b87a 100644 --- a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaGradTest.java +++ b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaGradTest.java @@ -27,6 +27,7 @@ import org.tensorflow.op.core.Constant; import org.tensorflow.op.core.Variable; import org.tensorflow.types.TFloat32; +import org.tensorflow.types.family.TType; import java.util.ArrayList; import java.util.List; @@ -59,8 +60,6 @@ public void testBasic() { float[] var1Init = {3.0F, 4.0F}; float[] grads0Init = {0.1F, 0.1F}; float[] grads1Init = {0.01F, 0.01F}; - float epsilon = 1e-8F; - float epsilon1 = 1e-5F; float[] accum0 = {0.1f, 0.1f}; float[] accum1 = {0.1f, 0.1f}; @@ -90,7 +89,7 @@ public void testBasic() { AdaGrad instance = new AdaGrad(tf, learningRate); /* build the GradsAnvVars */ - List gradsAndVars = new ArrayList<>(); + List> gradsAndVars = new ArrayList<>(); gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); @@ -107,10 +106,10 @@ public void testBasic() { session.run(var0Initializer); session.run(var1Initializer); - /** initialize the accumulators */ + /* initialize the accumulators */ session.run(tf.init()); - /** make sure the variables were initialized properly */ + /* make sure the variables were initialized properly */ session.evaluate(var0Init, var0); session.evaluate(var1Init, var1); @@ -131,8 +130,7 @@ public void testBasic() { private FloatNdArray caclulateAccum(FloatNdArray accum, FloatNdArray grads) { // accum + gT * gT FloatNdArray squareG = ND.square(grads); - FloatNdArray result = ND.add(accum, squareG); - return result; + return ND.add(accum, squareG); } private FloatNdArray calculate( @@ -141,7 +139,6 @@ private FloatNdArray calculate( FloatNdArray divisor = ND.add(ND.sqrt(accum), 1e-07f); FloatNdArray dividend = ND.mul(learningRate, grads); FloatNdArray quotient = ND.div(dividend, divisor); - FloatNdArray result = ND.sub(param, quotient); - return result; + return ND.sub(param, quotient); } } diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdamTest.java b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdamTest.java index 75c2fd9c610..82a47afbbbb 100644 --- a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdamTest.java +++ b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdamTest.java @@ -28,6 +28,7 @@ import org.tensorflow.op.core.Constant; import org.tensorflow.op.core.Variable; import org.tensorflow.types.TFloat32; +import org.tensorflow.types.family.TType; import java.util.ArrayList; import java.util.List; @@ -40,8 +41,6 @@ public class AdamTest { private final TestSession.Mode tfMode = TestSession.Mode.GRAPH; - int index; - public AdamTest() {} @BeforeAll @@ -58,10 +57,6 @@ public void tearDown() {} @Test public void testBasic() { - float m0 = 0.0F; - float v0 = 0.0F; - float m1 = 0.0F; - float v1 = 0.0F; float[] var0Init = {1.0F, 2.0F}; float[] var1Init = {3.0F, 4.0F}; float[] grads0Init = {0.1F, 0.1F}; @@ -96,10 +91,9 @@ public void testBasic() { float learningRate = 0.001F; float beta1 = 0.9F; float beta2 = 0.999F; - float epsilon = 1e-8F; /* build the GradsAnvVars */ - List gradsAndVars = new ArrayList<>(); + List> gradsAndVars = new ArrayList<>(); gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); @@ -107,7 +101,7 @@ public void testBasic() { Op update = instance.applyGradients(gradsAndVars, "AdamTest"); - /* Create and validae the shapes of the slota */ + /* Create and validate the shapes of the slots */ Variable[] firstMomentSlots = new Variable[2]; Variable[] secondMomentSlots = new Variable[2]; @@ -149,13 +143,7 @@ public void testBasic() { .run() .get(0) .expect(TFloat32.DTYPE)) { - result - .data() - .scalars() - .forEach( - f -> { - assertEquals(powers[0], f.getFloat(), epsilon1); - }); + result.data().scalars().forEach(f -> assertEquals(powers[0], f.getFloat(), epsilon1)); } try (Tensor result = session @@ -165,13 +153,7 @@ public void testBasic() { .run() .get(0) .expect(TFloat32.DTYPE)) { - result - .data() - .scalars() - .forEach( - f -> { - assertEquals(powers[1], f.getFloat(), epsilon1); - }); + result.data().scalars().forEach(f -> assertEquals(powers[1], f.getFloat(), epsilon1)); } session.run(update); @@ -213,8 +195,7 @@ private FloatNdArray calculateV(FloatNdArray v, FloatNdArray gT, float beta) { FloatNdArray mul1 = ND.mul(v, beta); FloatNdArray squareG = ND.square(gT); FloatNdArray mul2 = ND.mul((1 - beta), squareG); - FloatNdArray add = ND.add(mul1, mul2); - return add; + return ND.add(mul1, mul2); } private FloatNdArray calculateParam( @@ -224,7 +205,6 @@ private FloatNdArray calculateParam( FloatNdArray divisor = ND.add(sqrt, epsilon); FloatNdArray dividend = ND.mul(lrT, m); FloatNdArray quotient = ND.div(dividend, divisor); - FloatNdArray result = ND.sub(param, quotient); - return result; + return ND.sub(param, quotient); } } diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdamaxTest.java b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdamaxTest.java index 9460984d124..3376d65aab4 100644 --- a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdamaxTest.java +++ b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdamaxTest.java @@ -28,6 +28,7 @@ import org.tensorflow.op.core.Constant; import org.tensorflow.op.core.Variable; import org.tensorflow.types.TFloat32; +import org.tensorflow.types.family.TType; import java.util.ArrayList; import java.util.List; @@ -90,7 +91,6 @@ public void testBasic() { FloatNdArray grads0Np = NdArrays.vectorOf(grads0Init); FloatNdArray grads1Np = NdArrays.vectorOf(grads1Init); - float epsilon = 1e-6f; float epsilon1 = 1e-3F; try (TestSession session = TestSession.createTestSession(tfMode)) { @@ -113,7 +113,7 @@ public void testBasic() { Adamax instance = new Adamax(tf); /* build the GradsAnvVars */ - List gradsAndVars = new ArrayList<>(); + List> gradsAndVars = new ArrayList<>(); gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); @@ -135,7 +135,7 @@ public void testBasic() { secondMomentSlots[1] = instance.getSlot(var1.asOutput(), SECOND_MOMENT).get(); assertEquals(secondMomentSlots[1].asOutput().shape(), var1.asOutput().shape()); - /** initialize the accumulators */ + /* initialize the accumulators */ session.run(tf.init()); /* initialize the local variables */ @@ -154,13 +154,7 @@ public void testBasic() { .run() .get(0) .expect(TFloat32.DTYPE)) { - result - .data() - .scalars() - .forEach( - f -> { - assertEquals(beta1Power, f.getFloat(), epsilon1); - }); + result.data().scalars().forEach(f -> assertEquals(beta1Power, f.getFloat(), epsilon1)); } session.run(update); @@ -185,18 +179,16 @@ public void testBasic() { private FloatNdArray[] calculate( FloatNdArray varNp, FloatNdArray gradsNp, int step, FloatNdArray m, FloatNdArray v) { float alpha = 0.001F; - float beta1 = BETA_ONE_DEFAULT; - float beta2 = BETA_TWO_DEFAULT; float espilon = 1e-8F; - float oneMinusBeta1 = 1.F - beta1; - float oneMinusBeta1Pow = 1.F - (float) Math.pow(beta1, step + 1); + float oneMinusBeta1 = 1.F - BETA_ONE_DEFAULT; + float oneMinusBeta1Pow = 1.F - (float) Math.pow(BETA_ONE_DEFAULT, step + 1); float alpha1 = alpha / oneMinusBeta1Pow; // beta1 * m + (1 - beta1) * gT; - m = ND.add(ND.mul(beta1, m), ND.mul(oneMinusBeta1, gradsNp)); - // np.maximum(beta2 * v, np.abs(gT)) - v = ND.max(ND.mul(beta2, v), ND.abs(gradsNp)); + m = ND.add(ND.mul(BETA_ONE_DEFAULT, m), ND.mul(oneMinusBeta1, gradsNp)); + // np.maximum(BETA_TWO_DEFAULT * v, np.abs(gT)) + v = ND.max(ND.mul(BETA_TWO_DEFAULT, v), ND.abs(gradsNp)); // paramT = param - (alpha / (1 - beta1**(t + 1))) * (mT / (vT + epsilon)) varNp = ND.sub(varNp, ND.mul(alpha1, ND.div(m, ND.add(v, espilon)))); diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/FtrlTest.java b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/FtrlTest.java index 4f1eb25246b..cda32704506 100644 --- a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/FtrlTest.java +++ b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/FtrlTest.java @@ -24,6 +24,7 @@ import org.tensorflow.op.core.Constant; import org.tensorflow.op.core.Variable; import org.tensorflow.types.TFloat32; +import org.tensorflow.types.family.TType; import java.util.ArrayList; import java.util.List; @@ -32,8 +33,7 @@ /** Test cases for Ftrl Optimizer */ public class FtrlTest { - private TestSession.Mode tfMode = TestSession.Mode.GRAPH; - int index; + private final TestSession.Mode tfMode = TestSession.Mode.GRAPH; public FtrlTest() {} @@ -67,8 +67,6 @@ public void testFtrlWithL1L2L2Shrinkage() { float[] var1Init = {4.0F, 3.0F}; float[] grads0Init = {0.1F, 0.2F}; float[] grads1Init = {0.01F, 0.02F}; - float epsilon = 1e-8F; - float epsilon1 = 1e-5F; int numSteps = 10; @@ -100,7 +98,7 @@ public void testFtrlWithL1L2L2Shrinkage() { ); /* build the GradsAnvVars */ - List gradsAndVars = new ArrayList<>(); + List> gradsAndVars = new ArrayList<>(); gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); @@ -110,7 +108,7 @@ public void testFtrlWithL1L2L2Shrinkage() { session.run(var0Initializer); session.run(var1Initializer); - /** initialize the accumulators */ + /* initialize the accumulators */ session.run(tf.init()); session.evaluate(var0Init, var0); @@ -133,8 +131,6 @@ public void testFtrlWithL1() { float[] var1Init = {4.0F, 3.0F}; float[] grads0Init = {0.1F, 0.2F}; float[] grads1Init = {0.01F, 0.02F}; - float epsilon = 1e-8F; - float epsilon1 = 1e-5F; int numSteps = 10; @@ -166,7 +162,7 @@ public void testFtrlWithL1() { ); /* build the GradsAnvVars */ - List gradsAndVars = new ArrayList<>(); + List> gradsAndVars = new ArrayList<>(); gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); @@ -176,7 +172,7 @@ public void testFtrlWithL1() { session.run(var0Initializer); session.run(var1Initializer); - /** initialize the accumulators */ + /* initialize the accumulators */ session.run(tf.init()); session.evaluate(var0Init, var0); @@ -200,8 +196,6 @@ public void testFtrlWithL1L2() { float[] var1Init = {4.0F, 3.0F}; float[] grads0Init = {0.1F, 0.2F}; float[] grads1Init = {0.01F, 0.02F}; - float epsilon = 1e-8F; - float epsilon1 = 1e-5F; int numSteps = 10; @@ -233,7 +227,7 @@ public void testFtrlWithL1L2() { ); /* build the GradsAnvVars */ - List gradsAndVars = new ArrayList<>(); + List> gradsAndVars = new ArrayList<>(); gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); @@ -243,7 +237,7 @@ public void testFtrlWithL1L2() { session.run(var0Initializer); session.run(var1Initializer); - /** initialize the accumulators */ + /* initialize the accumulators */ session.run(tf.init()); session.evaluate(var0Init, var0); @@ -267,8 +261,6 @@ public void doTestFtrlwithoutRegularization() { float[] var1Init = {0.0F, 0.0F}; float[] grads0Init = {0.1F, 0.2F}; float[] grads1Init = {0.01F, 0.02F}; - float epsilon = 1e-8F; - float epsilon1 = 1e-5F; int numSteps = 3; @@ -291,7 +283,7 @@ public void doTestFtrlwithoutRegularization() { Ftrl instance = new Ftrl(tf, learningRate); /* build the GradsAnvVars */ - List gradsAndVars = new ArrayList<>(); + List> gradsAndVars = new ArrayList<>(); gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); Op ftrlUpdate = instance.applyGradients(gradsAndVars, "FtrlTest"); @@ -300,7 +292,7 @@ public void doTestFtrlwithoutRegularization() { session.run(var0Initializer); session.run(var1Initializer); - /** initialize the accumulators */ + /* initialize the accumulators */ session.run(tf.init()); session.evaluate(var0Init, var0); diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/NadamTest.java b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/NadamTest.java index 3eab6288268..d720460b2f2 100644 --- a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/NadamTest.java +++ b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/NadamTest.java @@ -28,6 +28,7 @@ import org.tensorflow.op.core.Constant; import org.tensorflow.op.core.Variable; import org.tensorflow.types.TFloat32; +import org.tensorflow.types.family.TType; import java.util.ArrayList; import java.util.List; @@ -95,7 +96,6 @@ public void testBasic() { FloatNdArray grads0Np = NdArrays.vectorOf(grads0Init); FloatNdArray grads1Np = NdArrays.vectorOf(grads1Init); - float epsilon = 1e-6f; float epsilon1 = 1e-3F; try (TestSession session = TestSession.createTestSession(tfMode)) { @@ -114,7 +114,7 @@ public void testBasic() { Nadam instance = new Nadam(tf); /* build the GradsAnvVars */ - List gradsAndVars = new ArrayList<>(); + List> gradsAndVars = new ArrayList<>(); gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); @@ -140,7 +140,7 @@ public void testBasic() { session.run(var0Initializer); session.run(var1Initializer); - /** initialize the accumulators */ + /* initialize the accumulators */ session.run(tf.init()); session.setEpsilon(epsilon1); @@ -156,13 +156,7 @@ public void testBasic() { .run() .get(0) .expect(TFloat32.DTYPE)) { - result - .data() - .scalars() - .forEach( - f -> { - assertEquals(1F, f.getFloat(), epsilon1); - }); + result.data().scalars().forEach(f -> assertEquals(1F, f.getFloat(), epsilon1)); } momentum = 1F; @@ -182,13 +176,7 @@ public void testBasic() { .run() .get(0) .expect(TFloat32.DTYPE)) { - result - .data() - .scalars() - .forEach( - f -> { - assertEquals(momentum, f.getFloat(), epsilon1); - }); + result.data().scalars().forEach(f -> assertEquals(momentum, f.getFloat(), epsilon1)); } mcache = ND.mul(mcache, momentum); FloatNdArray[] resultsNP = nadamUpdateNdArray(var0Np, grads0Np, step, m0, v0, mcache); diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/RMSPropTest.java b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/RMSPropTest.java index cabf869536c..078288ed1e7 100644 --- a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/RMSPropTest.java +++ b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/RMSPropTest.java @@ -27,6 +27,7 @@ import org.tensorflow.op.core.Constant; import org.tensorflow.op.core.Variable; import org.tensorflow.types.TFloat32; +import org.tensorflow.types.family.TType; import java.util.ArrayList; import java.util.List; @@ -40,7 +41,7 @@ public class RMSPropTest { final int RMS_T = 2; final int MOM_T = 3; private final TestSession.Mode tfMode = TestSession.Mode.GRAPH; - int index; + Object[][] TestParamValues = { // learningRate, rho (decay), momentum, epsilon, centered {0.05F, 0.9F, 0.0F, 1e-3F, true}, @@ -69,7 +70,7 @@ public void testDense() { int numSteps = 3; - for (int run = 0; run < TestParamValues.length; run++) { + for (Object[] testParamValue : TestParamValues) { try (TestSession session = TestSession.createTestSession(tfMode)) { Ops tf = session.getTF(); session.setEpsilon(1e-2f); @@ -77,7 +78,6 @@ public void testDense() { float[] var1Init = {3.0F, 4.0F}; float[] grads0Init = {0.1F, 0.2F}; float[] grads1Init = {0.01F, 0.2F}; - final float epsilon1 = 1e-2F; FloatNdArray var0Np = NdArrays.vectorOf(var0Init); FloatNdArray var1Np = NdArrays.vectorOf(var1Init); @@ -96,18 +96,18 @@ public void testDense() { Constant grads1 = tf.constant(grads1Init); // learningRate, rho (decay), momentum, epsilon, centered - float learningRate = (float) (float) TestParamValues[run][0]; - float decay = (float) TestParamValues[run][1]; - float momentum = (float) TestParamValues[run][2]; - float epsilon = (float) TestParamValues[run][3]; - boolean centered = (boolean) TestParamValues[run][4]; + float learningRate = (float) (float) testParamValue[0]; + float decay = (float) testParamValue[1]; + float momentum = (float) testParamValue[2]; + float epsilon = (float) testParamValue[3]; + boolean centered = (boolean) testParamValue[4]; RMSProp instance = new RMSProp(tf, learningRate, decay, momentum, epsilon, centered); /* build the GradsAnvVars */ - List gradsAndVars = new ArrayList<>(); - gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); - gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); + List> gradsAndVars = new ArrayList<>(); + gradsAndVars.add(new GradAndVar<>(grads0.asOutput(), var0.asOutput())); + gradsAndVars.add(new GradAndVar<>(grads1.asOutput(), var1.asOutput())); Op update = instance.applyGradients(gradsAndVars, "RMSPropTest"); @@ -115,10 +115,10 @@ public void testDense() { session.run(var0Initializer); session.run(var1Initializer); - /** initialize the accumulators */ + /* initialize the accumulators */ session.run(tf.init()); - /** make sure the variables were initialized properly */ + /* make sure the variables were initialized properly */ session.evaluate(var0Init, var0); session.evaluate(var1Init, var1); @@ -179,13 +179,12 @@ public void testDense() { if (centered) { session.evaluate(mg0Np, mg0); - session.evaluate(mg0Np, mg0); - } - if (momentum > 0.F) { - session.evaluate(mom0Np, mom0); - session.evaluate(mom1Np, mom1); + session.evaluate(mg1Np, mg1); } + if (mom0 != null) session.evaluate(mom0Np, mom0); + if (mom1 != null) session.evaluate(mom1Np, mom1); + /* TODO the values returned from rms slot, do not match what I see in the python test */ session.evaluate(rms0Np, rms0); session.evaluate(rms1Np, rms1); @@ -240,8 +239,7 @@ private FloatNdArray calcRMS(FloatNdArray rmsNp, FloatNdArray gradNp, float deca FloatNdArray squareG = ND.square(gradNp); float oneRHO = 1.0F - decay; FloatNdArray decayG2 = ND.mul(oneRHO, squareG); - FloatNdArray result = ND.add(rmsRho, decayG2); - return result; + return ND.add(rmsRho, decayG2); } private FloatNdArray calcMG(FloatNdArray mgNp, FloatNdArray gradNp, float decay) { @@ -249,8 +247,7 @@ private FloatNdArray calcMG(FloatNdArray mgNp, FloatNdArray gradNp, float decay) FloatNdArray mgRho = ND.mul(mgNp, decay); float oneRHO = 1.0F - decay; FloatNdArray decayG = ND.mul(oneRHO, gradNp); - FloatNdArray result = ND.add(mgRho, decayG); - return result; + return ND.add(mgRho, decayG); } private FloatNdArray calcMom( @@ -265,8 +262,7 @@ private FloatNdArray calcMom( FloatNdArray dividend = ND.mul(lr, gradNp); FloatNdArray divisor = ND.sqrt(ND.add(denomT, epsilon)); FloatNdArray quotient = ND.div(dividend, divisor); - FloatNdArray result = ND.add(moMo, quotient); - return result; + return ND.add(moMo, quotient); } private FloatNdArray calcVar( @@ -275,7 +271,6 @@ private FloatNdArray calcVar( FloatNdArray dividend = ND.mul(lr, gradNp); FloatNdArray divisor = ND.add(ND.sqrt(denomT), epsilon); FloatNdArray quotient = ND.div(dividend, divisor); - FloatNdArray result = ND.sub(varNp, quotient); - return result; + return ND.sub(varNp, quotient); } } diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/SGDTest.java b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/SGDTest.java index b36851a561e..a8e363b4332 100644 --- a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/SGDTest.java +++ b/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/SGDTest.java @@ -24,6 +24,7 @@ import org.tensorflow.op.core.Constant; import org.tensorflow.op.core.Variable; import org.tensorflow.types.TFloat32; +import org.tensorflow.types.family.TType; import java.util.ArrayList; import java.util.List; @@ -70,9 +71,6 @@ public void testBasic() { float[] grads1Init = {0.01F, 0.01F}; float learningRate = 3.0F; - float epsilon = 1e-6F; - float epsilon1 = 1e-2F; - try (TestSession session = TestSession.createTestSession(tfMode)) { Ops tf = session.getTF(); @@ -88,7 +86,7 @@ public void testBasic() { Constant grads1 = tf.constant(grads1Init); /* build the GradsAnvVars */ - List gradsAndVars = new ArrayList<>(); + List> gradsAndVars = new ArrayList<>(); gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); @@ -99,10 +97,10 @@ public void testBasic() { session.run(var0Initializer); session.run(var1Initializer); - /** initialize the accumulators */ + /* initialize the accumulators */ session.run(tf.init()); - /** make sure the variables were initialized properly */ + /* make sure the variables were initialized properly */ session.evaluate(var0Init, var0); session.evaluate(var1Init, var1); @@ -125,9 +123,6 @@ public void testMomentum() { float learningRate = 2.0F; float momentum = 0.9F; - float epsilon = 1e-6F; - float epsilon1 = 1e-2F; - try (TestSession session = TestSession.createTestSession(tfMode)) { Ops tf = session.getTF(); @@ -143,7 +138,7 @@ public void testMomentum() { Constant grads1 = tf.constant(grads1Init); /* build the GradsAnvVars */ - List gradsAndVars = new ArrayList<>(); + List> gradsAndVars = new ArrayList<>(); gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); @@ -159,10 +154,10 @@ public void testMomentum() { session.run(var0Initializer); session.run(var1Initializer); - /** initialize the accumulators */ + /* initialize the accumulators */ session.run(tf.init()); - /** make sure the variables were initialized properly */ + /* make sure the variables were initialized properly */ session.evaluate(var0Init, var0); session.evaluate(var1Init, var1); From e9c3134742e9155e457be157515d67b5c0bb7ac4 Mon Sep 17 00:00:00 2001 From: Jim Clarke Date: Wed, 9 Sep 2020 16:14:20 -0400 Subject: [PATCH 29/33] Added Adamax, Ftrl, and Nadam Optimizers. Added Optimizers enum for easy inclusion of a default optimizer. Cleaned up JavaDoc --- .../framework/optimizers/AdaDelta.java | 113 ++++++- .../framework/optimizers/AdaGrad.java | 97 +++++- .../framework/optimizers/AdaGradDA.java | 174 ++++++++-- .../tensorflow/framework/optimizers/Adam.java | 153 +++++++-- .../framework/optimizers/Adamax.java | 190 +++++++++++ .../framework}/optimizers/Ftrl.java | 219 ++++--------- .../framework/optimizers/GradientDescent.java | 38 ++- .../framework/optimizers/Momentum.java | 106 ++++-- .../framework/optimizers/Nadam.java | 302 ++++++++++++++++++ .../framework/optimizers/Optimizer.java | 164 ++++++---- .../framework/optimizers/Optimizers.java | 41 +++ .../framework/optimizers/RMSProp.java | 164 ++++++++-- 12 files changed, 1420 insertions(+), 341 deletions(-) create mode 100644 tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/Adamax.java rename {tensorflow-keras/src/main/java/org/tensorflow/keras => tensorflow-framework/src/main/java/org/tensorflow/framework}/optimizers/Ftrl.java (55%) create mode 100644 tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/Nadam.java create mode 100644 tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/Optimizers.java diff --git a/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/AdaDelta.java b/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/AdaDelta.java index b5dc2434d60..1bdeffe4dcb 100644 --- a/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/AdaDelta.java +++ b/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/AdaDelta.java @@ -15,7 +15,6 @@ */ package org.tensorflow.framework.optimizers; -import java.util.List; import org.tensorflow.Graph; import org.tensorflow.Operand; import org.tensorflow.Output; @@ -23,15 +22,51 @@ import org.tensorflow.op.core.Variable; import org.tensorflow.types.family.TType; +import java.util.List; + /** * Optimizer that implements the Adadelta algorithm. - *

- * See the paper. + * + *

Adadelta optimization is a stochastic gradient descent method that is based on adaptive + * learning rate per dimension to address two drawbacks: + * + *

+ *

  • the continual decay of learning rates throughout training + *
  • the need for a manually selected global learning rate + * + *

    + * + *

    Adadelta is a more robust extension of Adagrad that adapts learning rates based on a + * moving window of gradient updates, instead of accumulating all past gradients. This way, + * Adadelta continues learning even when many updates have been done. Compared to Adagrad, in + * the original version of Adadelta you don't have to set an initial learning rate. In this + * version, initial learning rate can be set, as in most other optimizers. + * + *

    + * + *

    According to section 4.3 ("Effective Learning rates"), near the end of training step sizes + * converge to 1 which is effectively a high learning rate which would cause divergence. This + * occurs only near the end of the training as gradients and step sizes are small, and the + * epsilon constant in the numerator and denominator dominate past gradients and parameter + * updates which converge the learning rate to 1. + * + *

    + * + *

    According to section 4.4("Speech Data"),where a large neural network with 4 hidden layers + * was trained on a corpus of US English data, ADADELTA was used with 100 network replicas.The + * epsilon used is 1e-6 with rho=0.95 which converged faster than ADAGRAD, by the following + * construction: new AdaDelta(graph, 1.0f, 0.95f, 1e-6f); + * + * @see Zeiler, M., 2012 ADADELTA: An Adaptive Learning + * Rate Method. */ public class AdaDelta extends Optimizer { public static final String ACCUMULATOR = "accum"; public static final String ACCUMULATOR_UPDATE = "accum_update"; + public static final float LEARNING_RATE_DEFAULT = 0.001f; + public static final float RHO_DEFAULT = 0.95f; + public static final float EPSILON_DEFAULT = 1e-7f; private final float learningRate; @@ -39,10 +74,28 @@ public class AdaDelta extends Optimizer { private final float epsilon; + public AdaDelta(Graph graph) { + this(graph, LEARNING_RATE_DEFAULT, RHO_DEFAULT, EPSILON_DEFAULT); + } + + /** + * Creates an AdaDelta Optimizer + * + * @param graph the TensorFlow Graph + * @param learningRate the learning rate + */ public AdaDelta(Graph graph, float learningRate) { - this(graph, learningRate, 0.95f, 1e-8f); + this(graph, learningRate, RHO_DEFAULT, EPSILON_DEFAULT); } + /** + * Creates an AdaDelta Optimizer + * + * @param graph the TensorFlow Graph + * @param learningRate the learning rate + * @param rho The decay factor + * @param epsilon A constant epsilon used to better conditioning the grad update + */ public AdaDelta(Graph graph, float learningRate, float rho, float epsilon) { super(graph); this.learningRate = learningRate; @@ -50,10 +103,26 @@ public AdaDelta(Graph graph, float learningRate, float rho, float epsilon) { this.epsilon = epsilon; } + /** + * Creates an AdaDelta Optimizer + * + * @param graph the TensorFlow Graph + * @param name the name for this Optimizer (defaults to 'Adadelta') + * @param learningRate the learning rate + */ public AdaDelta(Graph graph, String name, float learningRate) { this(graph, name, learningRate, 0.95f, 1e-8f); } + /** + * Creates an AdaDelta Optimizer + * + * @param graph the TensorFlow Graph + * @param name the name for this Optimizer (defaults to 'Adadelta') + * @param learningRate the learning rate + * @param rho The decay factor + * @param epsilon A constant epsilon used to better conditioning the grad update + */ public AdaDelta(Graph graph, String name, float learningRate, float rho, float epsilon) { super(graph, name); this.learningRate = learningRate; @@ -61,6 +130,7 @@ public AdaDelta(Graph graph, String name, float learningRate, float rho, float e this.epsilon = epsilon; } + /** {@inheritDoc} */ @Override protected void createSlots(List> variables) { for (Output v : variables) { @@ -68,35 +138,50 @@ protected void createSlots(List> variables) { } } + /** + * Creates an AdaDelta Slot + * + * @param v the variable to install in the slot + * @param the datatype of the variable. + */ private void createAdaDeltaSlot(Output v) { - Operand accumulatorInitializer = tf - .fill(tf.shape(v), tf.dtypes.cast(tf.constant(0.0f), v.dataType())); + Operand accumulatorInitializer = + tf.fill(tf.shape(v), tf.dtypes.cast(tf.constant(0.0f), v.dataType())); createSlot(v.asOutput(), ACCUMULATOR, accumulatorInitializer); - Operand updateInitializer = tf - .fill(tf.shape(v), tf.dtypes.cast(tf.constant(0.0f), v.dataType())); + Operand updateInitializer = + tf.fill(tf.shape(v), tf.dtypes.cast(tf.constant(0.0f), v.dataType())); createSlot(v.asOutput(), ACCUMULATOR_UPDATE, updateInitializer); } + /** {@inheritDoc} */ @Override protected Op applyDense(Output gradient, Output variable) { Variable accumSlot = getSlot(variable, ACCUMULATOR).get(); Variable accumUpdateSlot = getSlot(variable, ACCUMULATOR_UPDATE).get(); - return tf.train.applyAdadelta(variable, accumSlot, accumUpdateSlot, + return tf.train.applyAdadelta( + variable, + accumSlot, + accumUpdateSlot, tf.dtypes.cast(tf.constant(learningRate), gradient.dataType()), tf.dtypes.cast(tf.constant(rho), gradient.dataType()), tf.dtypes.cast(tf.constant(epsilon), gradient.dataType()), gradient); } + /** {@inheritDoc} */ @Override public String toString() { - return "AdaDelta{" + - "learningRate=" + learningRate + - ", rho=" + rho + - ", epsilon=" + epsilon + - '}'; + return "AdaDelta{" + + "learningRate=" + + learningRate + + ", rho=" + + rho + + ", epsilon=" + + epsilon + + '}'; } + /** {@inheritDoc} */ @Override public String getOptimizerName() { return "Adadelta"; diff --git a/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/AdaGrad.java b/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/AdaGrad.java index 4dfabb21357..6855be30759 100644 --- a/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/AdaGrad.java +++ b/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/AdaGrad.java @@ -15,7 +15,6 @@ */ package org.tensorflow.framework.optimizers; -import java.util.List; import org.tensorflow.Graph; import org.tensorflow.Operand; import org.tensorflow.Output; @@ -23,40 +22,102 @@ import org.tensorflow.op.core.Variable; import org.tensorflow.types.family.TType; +import java.util.List; + /** * Optimizer that implements the Adagrad algorithm. + * + *

    Adagrad is an optimizer with parameter-specific learning rates, which are adapted relative to + * how frequently a parameter gets updated during training. The more updates a parameter receives, + * the smaller the updates. + * *

    - * See the paper or this intro. + * + * @see Duchi, J, et al., 2011, + * Adaptive Subgradient Methods for Online Learning and Stochastic Optimization + * @see Duchi, J, et al., + * 2013, Proximal and First-Order Methods for Convex Optimization, Introduction Section 1. */ public class AdaGrad extends Optimizer { public static final String ACCUMULATOR = "accumulator"; + public static final float LEARNING_RATE_DEFAULT = 0.001f; + public static final float INITIAL_ACCUMULATOR_DEFAULT = 0.01f; private final float learningRate; private final float initialAccumulatorValue; + /** + * Creates an AdaGrad Optimizer + * + * @param graph the TensorFlow Graph + */ + public AdaGrad(Graph graph) { + this(graph, LEARNING_RATE_DEFAULT, INITIAL_ACCUMULATOR_DEFAULT); + } + + /** + * Creates an AdaGrad Optimizer + * + * @param graph the TensorFlow Graph + * @param learningRate the learning rate + */ public AdaGrad(Graph graph, float learningRate) { - this(graph, learningRate, 0.01f); + this(graph, learningRate, INITIAL_ACCUMULATOR_DEFAULT); } + /** + * Creates an AdaGrad Optimizer + * + * @param graph the TensorFlow Graph + * @param learningRate the learning rate + * @param initialAccumulatorValue Starting value for the accumulators, must be non-negative. + * @throws java.lang.IllegalArgumentException if initialAccumulatorValue is negative + */ public AdaGrad(Graph graph, float learningRate, float initialAccumulatorValue) { super(graph); + if (initialAccumulatorValue < 0F) { + throw new IllegalArgumentException( + String.format( + "initialAccumulatorValue must be non-negative: %f", initialAccumulatorValue)); + } this.learningRate = learningRate; this.initialAccumulatorValue = initialAccumulatorValue; } + /** + * Creates an AdaGrad Optimizer + * + * @param graph the TensorFlow Graph + * @param name the name for this Optimizer (defaults to 'Adagrad') + * @param learningRate the learning rate + */ public AdaGrad(Graph graph, String name, float learningRate) { this(graph, name, learningRate, 0.01f); } + /** + * Creates an AdaGrad Optimizer + * + * @param graph the TensorFlow Graph + * @param name the name for this Optimizer (defaults to 'Adagrad') + * @param learningRate the learning rate + * @param initialAccumulatorValue Starting value for the accumulators, must be non-negative. + * @throws java.lang.IllegalArgumentException if initialAccumulatorValue is negative + */ public AdaGrad(Graph graph, String name, float learningRate, float initialAccumulatorValue) { super(graph, name); + if (initialAccumulatorValue < 0F) { + throw new IllegalArgumentException( + String.format( + "initialAccumulatorValue must be non-negative: %f", initialAccumulatorValue)); + } this.learningRate = learningRate; this.initialAccumulatorValue = initialAccumulatorValue; } + /** {@inheritDoc} */ @Override protected void createSlots(List> variables) { for (Output v : variables) { @@ -64,28 +125,38 @@ protected void createSlots(List> variables) { } } + /** + * Creates an AdaGrad Slot + * + * @param v the variable to install in the slot + * @param the datatype of the variable. + */ private void createAdaGradSlot(Output v) { - Operand initializer = tf.fill(tf.shape(v), - tf.dtypes.cast(tf.constant(initialAccumulatorValue), v.dataType())); + Operand initializer = + tf.fill(tf.shape(v), tf.dtypes.cast(tf.constant(initialAccumulatorValue), v.dataType())); createSlot(v.asOutput(), ACCUMULATOR, initializer); } + /** {@inheritDoc} */ @Override protected Op applyDense(Output gradient, Output variable) { Variable slot = getSlot(variable, ACCUMULATOR).get(); - return tf.train - .applyAdagrad(variable, slot, tf.dtypes.cast(tf.constant(learningRate), gradient.dataType()), - gradient); + return tf.train.applyAdagrad( + variable, slot, tf.dtypes.cast(tf.constant(learningRate), gradient.dataType()), gradient); } + /** {@inheritDoc} */ @Override public String toString() { - return "AdaGrad{" + - "learningRate=" + learningRate + - ", initialAccumulatorValue=" + initialAccumulatorValue + - '}'; + return "AdaGrad{" + + "learningRate=" + + learningRate + + ", initialAccumulatorValue=" + + initialAccumulatorValue + + '}'; } + /** {@inheritDoc} */ @Override public String getOptimizerName() { return "Adagrad"; diff --git a/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/AdaGradDA.java b/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/AdaGradDA.java index 0544309dc7f..e74a1d85359 100644 --- a/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/AdaGradDA.java +++ b/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/AdaGradDA.java @@ -15,64 +15,175 @@ */ package org.tensorflow.framework.optimizers; -import java.util.List; -import java.util.Optional; import org.tensorflow.Graph; import org.tensorflow.Operand; import org.tensorflow.Output; +import org.tensorflow.ndarray.Shape; import org.tensorflow.op.Op; import org.tensorflow.op.core.Assign; import org.tensorflow.op.core.Variable; -import org.tensorflow.ndarray.Shape; import org.tensorflow.types.TInt64; import org.tensorflow.types.family.TType; +import java.util.List; +import java.util.Optional; + /** * Optimizer that implements the Adagrad Dual-Averaging algorithm. + * + *

    This optimizer takes care of regularization of unseen features in a mini batch by updating + * them when they are seen with a closed form update rule that is equivalent to having updated them + * on every mini-batch. + * + *

    AdagradDA is typically used when there is a need for large sparsity in the trained model. This + * optimizer only guarantees sparsity for linear models. Be careful when using AdagradDA for deep + * networks as it will require careful initialization of the gradient accumulators for it to train. + * *

    - * See the paper. + * + * @see Duchi, J, et al., 2011, + * Adaptive Subgradient Methods for Online Learning and Stochastic Optimization. */ public class AdaGradDA extends Optimizer { public static final String ACCUMULATOR = "gradient_accumulator"; public static final String SQUARED_ACCUMULATOR = "gradient_squared_accumulator"; + public static final float LEARNING_RATE_DEFAULT = 0.001F; + public static final float INITIAL_ACCUMULATOR_DEFAULT = 0.1f; + public static final float L1_STRENGTH_DEFAULT = 0.0F; + public static final float L2_STRENGTH_DEFAULT = 0.0F; + private final float learningRate; private final float initialAccumulatorValue; private final float l1Strength; private final float l2Strength; private Variable globalStep; + /** + * Creates an AdaGradDA Optimizer + * + * @param graph the TensorFlow Graph + */ + public AdaGradDA(Graph graph) { + this( + graph, + LEARNING_RATE_DEFAULT, + INITIAL_ACCUMULATOR_DEFAULT, + L1_STRENGTH_DEFAULT, + L2_STRENGTH_DEFAULT); + } + + /** + * Creates an AdaGradDA Optimizer + * + * @param graph the TensorFlow Graph + * @param learningRate the learning rate + */ public AdaGradDA(Graph graph, float learningRate) { - this(graph, learningRate, 0.1f, 0.0f, 0.0f); + this( + graph, learningRate, INITIAL_ACCUMULATOR_DEFAULT, L1_STRENGTH_DEFAULT, L2_STRENGTH_DEFAULT); } - public AdaGradDA(Graph graph, float learningRate, float initialAccumulatorValue, float l1Strength, + /** + * Creates an AdaGradDA Optimizer + * + * @param graph the TensorFlow Graph + * @param learningRate the learning rate + * @param initialAccumulatorValue Starting value for the accumulators, must be greater than zero. + * @param l1Strength l1 regularization strength, must be greater than or equal to zero. + * @param l2Strength l2 regularization strength, must be greater than or equal to zero. + * @throws java.lang.IllegalArgumentException if initialAccumulatorValue is not greater than zero, + * or l1Strength or l2Strength is less than zero + */ + public AdaGradDA( + Graph graph, + float learningRate, + float initialAccumulatorValue, + float l1Strength, float l2Strength) { super(graph); + if (initialAccumulatorValue <= 0F) { + throw new IllegalArgumentException( + String.format( + "initialAccumulatorValue must be greater than zero: %f", initialAccumulatorValue)); + } + if (l1Strength < 0F) { + throw new IllegalArgumentException( + String.format("l1Strength must not be negative: %f", l1Strength)); + } + if (l2Strength < 0F) { + throw new IllegalArgumentException( + String.format("l2Strength must not be negative: %f", l2Strength)); + } this.learningRate = learningRate; this.initialAccumulatorValue = initialAccumulatorValue; this.l1Strength = l1Strength; this.l2Strength = l2Strength; } + /** + * Creates an AdaGradDA Optimizer + * + * @param graph the TensorFlow Graph + * @param name the name for this Optimizer (defaults to 'adagrad-da') + * @param learningRate the learning rate + */ public AdaGradDA(Graph graph, String name, float learningRate) { - this(graph, name, learningRate, 0.1f, 0.0f, 0.0f); + this( + graph, + name, + learningRate, + INITIAL_ACCUMULATOR_DEFAULT, + L1_STRENGTH_DEFAULT, + L2_STRENGTH_DEFAULT); } - public AdaGradDA(Graph graph, String name, float learningRate, float initialAccumulatorValue, float l1Strength, + /** + * Creates an AdaGradDA Optimizer + * + * @param graph the TensorFlow Graph + * @param name the name for this Optimizer (defaults to 'adagrad-da') + * @param learningRate the learning rate + * @param initialAccumulatorValue Starting value for the accumulators, must be positive + * @param l1Strength l1 regularization strength, must be greater than or equal to zero. + * @param l2Strength l2 regularization strength, must be greater than or equal to zero. + * @throws java.lang.IllegalArgumentException if initialAccumulatorValue is not greater than zero, + * or * l1Strength or l2Strength is less than zero + */ + public AdaGradDA( + Graph graph, + String name, + float learningRate, + float initialAccumulatorValue, + float l1Strength, float l2Strength) { super(graph, name); + if (initialAccumulatorValue <= 0F) { + throw new IllegalArgumentException( + String.format( + "initialAccumulatorValue must be greater than zero: %f", initialAccumulatorValue)); + } + if (l1Strength < 0F) { + throw new IllegalArgumentException( + String.format("l1Strength must not be negative: %f", l1Strength)); + } + if (l2Strength < 0F) { + throw new IllegalArgumentException( + String.format("l2Strength must not be negative: %f", l2Strength)); + } this.learningRate = learningRate; this.initialAccumulatorValue = initialAccumulatorValue; this.l1Strength = l1Strength; this.l2Strength = l2Strength; } + /** {@inheritDoc} */ @Override protected Optional prepare(String name) { return Optional.of(tf.assignAdd(globalStep, tf.constant(1L))); } + /** {@inheritDoc} */ @Override protected void createSlots(List> variables) { for (Output v : variables) { @@ -83,20 +194,30 @@ protected void createSlots(List> variables) { graph.addInitializer(globalStepInitializer); } + /** + * Creates an AdaGradDA Slot + * + * @param v the variable to install in the slot + * @param the datatype of the variable. + */ private void createAdaGradDASlot(Output v) { - Operand initializer = tf - .fill(tf.shape(v), tf.dtypes.cast(tf.constant(0.0f), v.dataType())); + Operand initializer = tf.fill(tf.shape(v), tf.dtypes.cast(tf.constant(0.0f), v.dataType())); createSlot(v.asOutput(), ACCUMULATOR, initializer); - Operand sqInitializer = tf.fill(tf.shape(v), - tf.dtypes.cast(tf.constant(initialAccumulatorValue), v.dataType())); + Operand sqInitializer = + tf.fill(tf.shape(v), tf.dtypes.cast(tf.constant(initialAccumulatorValue), v.dataType())); createSlot(v.asOutput(), SQUARED_ACCUMULATOR, sqInitializer); } + /** {@inheritDoc} */ @Override protected Op applyDense(Output gradient, Output variable) { Variable gradSlot = getSlot(variable, ACCUMULATOR).get(); Variable gradSquaredSlot = getSlot(variable, SQUARED_ACCUMULATOR).get(); - return tf.train.applyAdagradDa(variable, gradSlot, gradSquaredSlot, gradient, + return tf.train.applyAdagradDa( + variable, + gradSlot, + gradSquaredSlot, + gradient, tf.dtypes.cast(tf.constant(learningRate), gradient.dataType()), tf.dtypes.cast(tf.constant(l1Strength), gradient.dataType()), tf.dtypes.cast(tf.constant(l2Strength), gradient.dataType()), @@ -105,11 +226,11 @@ protected Op applyDense(Output gradient, Output variable /** * Gathers up the update operations into a single op that can be used as a run target. - *

    - * Adds the global step update to the end of the updates list. + * + *

    Adds the global step update to the end of the updates list. * * @param updateOperations The update operations. - * @param name The name of the run target. + * @param name The name of the run target. * @return A NoOp with a control dependency on each update operation. */ @Override @@ -118,17 +239,24 @@ protected Op finish(List updateOperations, String name) { return super.finish(updateOperations, name); } + /** {@inheritDoc} */ @Override public String toString() { - return "AdaGradDA{" + - "globalStep=" + globalStep + - ", learningRate=" + learningRate + - ", initialAccumulatorValue=" + initialAccumulatorValue + - ", l1Strength=" + l1Strength + - ", l2Strength=" + l2Strength + - '}'; + return "AdaGradDA{" + + "globalStep=" + + globalStep + + ", learningRate=" + + learningRate + + ", initialAccumulatorValue=" + + initialAccumulatorValue + + ", l1Strength=" + + l1Strength + + ", l2Strength=" + + l2Strength + + '}'; } + /** {@inheritDoc} */ @Override public String getOptimizerName() { return "adagrad-da"; diff --git a/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/Adam.java b/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/Adam.java index 11ab4be6b64..8f620678781 100644 --- a/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/Adam.java +++ b/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/Adam.java @@ -15,11 +15,10 @@ */ package org.tensorflow.framework.optimizers; -import java.util.List; -import java.util.Optional; import org.tensorflow.Graph; import org.tensorflow.Operand; import org.tensorflow.Output; +import org.tensorflow.ndarray.Shape; import org.tensorflow.op.Op; import org.tensorflow.op.Scope; import org.tensorflow.op.annotation.Endpoint; @@ -27,14 +26,24 @@ import org.tensorflow.op.core.Assign; import org.tensorflow.op.core.Constant; import org.tensorflow.op.core.Variable; -import org.tensorflow.ndarray.Shape; import org.tensorflow.types.TFloat32; import org.tensorflow.types.family.TType; +import java.util.List; +import java.util.Optional; + /** * Optimizer that implements the Adam algorithm. - *

    - * See the paper. + * + *

    Adam optimization is a stochastic gradient descent method that is based on adaptive estimation + * of first-order and second-order moments. + * + *

    According to Kingma et al., 2014, the method is "computationally efficient, has little memory + * requirement, invariant to diagonal rescaling of gradients, and is well suited for problems that + * are large in terms of data/parameters". + * + *

    @see Kingma et al., 2014, Adam: A Method for + * Stochastic Optimization. */ @Operator public class Adam extends Optimizer { @@ -42,6 +51,11 @@ public class Adam extends Optimizer { public static final String FIRST_MOMENT = "m"; public static final String SECOND_MOMENT = "v"; + public static final float LEARNING_RATE_DEFAULT = 0.001f; + public static final float EPSILON_DEFAULT = 1e-8f; + public static final float BETA_ONE_DEFAULT = 0.9f; + public static final float BETA_TWO_DEFAULT = 0.999f; + private final float learningRate; private final float betaOne; @@ -57,10 +71,36 @@ public class Adam extends Optimizer { private Variable betaOnePower; private Variable betaTwoPower; + /** + * Creates an Adam optimizer + * + * @param graph the TensorFlow graph + */ + public Adam(Graph graph) { + this(graph, LEARNING_RATE_DEFAULT, BETA_ONE_DEFAULT, BETA_TWO_DEFAULT, EPSILON_DEFAULT); + } + + /** + * Creates an Adam optimizer + * + * @param graph the TensorFlow graph + * @param learningRate the learning rate + */ public Adam(Graph graph, float learningRate) { - this(graph, learningRate, 0.9f, 0.999f, 1e-8f); + this(graph, learningRate, BETA_ONE_DEFAULT, BETA_TWO_DEFAULT, EPSILON_DEFAULT); } + /** + * Creates an Adam optimizer + * + * @param graph the TensorFlow graph + * @param learningRate the learning rate + * @param betaOne The exponential decay rate for the 1st moment estimates. Defaults to 0.9. + * @param betaTwo The exponential decay rate for the 2nd moment estimates. Defaults to 0.999. + * @param epsilon A small constant for numerical stability. This epsilon is "epsilon hat" in the + * Kingma and Ba paper (in the formula just before Section 2.1), not the epsilon in Algorithm + * 1 of the paper. Defaults to 1e-8. + */ public Adam(Graph graph, float learningRate, float betaOne, float betaTwo, float epsilon) { super(graph); this.learningRate = learningRate; @@ -69,11 +109,31 @@ public Adam(Graph graph, float learningRate, float betaOne, float betaTwo, float this.epsilon = epsilon; } + /** + * Creates an Adam optimizer + * + * @param graph the TensorFlow graph + * @param name the Optimizer name, defaults to "Adam" + * @param learningRate the learning rate + */ public Adam(Graph graph, String name, float learningRate) { - this(graph, name, learningRate, 0.9f, 0.999f, 1e-8f); + this(graph, name, learningRate, BETA_ONE_DEFAULT, BETA_TWO_DEFAULT, EPSILON_DEFAULT); } - public Adam(Graph graph, String name, float learningRate, float betaOne, float betaTwo, float epsilon) { + /** + * Creates an Adam optimizer + * + * @param graph the TensorFlow graph + * @param name the Optimizer name, defaults to "Adam" + * @param learningRate the learning rate + * @param betaOne The exponential decay rate for the 1st moment estimates. Defaults to 0.9. + * @param betaTwo The exponential decay rate for the 2nd moment estimates. Defaults to 0.999. + * @param epsilon A small constant for numerical stability. This epsilon is "epsilon hat" in the + * Kingma and Ba paper (in the formula just before Section 2.1), not the epsilon in Algorithm + * 1 of the paper. Defaults to 1e-8. + */ + public Adam( + Graph graph, String name, float learningRate, float betaOne, float betaTwo, float epsilon) { super(graph, name); this.learningRate = learningRate; this.betaOne = betaOne; @@ -81,9 +141,30 @@ public Adam(Graph graph, String name, float learningRate, float betaOne, float b this.epsilon = epsilon; } + /** + * Creates the Operation that minimizes the loss + * + * @param scope the TensorFlow scope + * @param loss the loss to minimize + * @param learningRate the learning rate + * @param betaOne The exponential decay rate for the 1st moment estimates. + * @param betaTwo The exponential decay rate for the 2nd moment estimates. + * @param epsilon A small constant for numerical stability. This epsilon is "epsilon hat" in the + * Kingma and Ba paper (in the formula just before Section 2.1), not the epsilon in Algorithm + * 1 of the paper. + * @param options Optional Optimizer attributes + * @param the data type for the loss + * @return the Operation that minimizes the loss + * @throws java.lang.IllegalArgumentException if scope does not represent a Graph + */ @Endpoint(name = "adam_minimize") - public static Op createAdamMinimize(Scope scope, Operand loss, - float learningRate, float betaOne, float betaTwo, float epsilon, + public static Op createAdamMinimize( + Scope scope, + Operand loss, + float learningRate, + float betaOne, + float betaTwo, + float epsilon, Optimizer.Options... options) { if (!(scope.env() instanceof Graph)) { throw new IllegalArgumentException("Optimizers are only supported on Graphs"); @@ -102,21 +183,21 @@ public static Op createAdamMinimize(Scope scope, Operand lo } } + /** {@inheritDoc} */ @Override protected void createSlots(List> variables) { for (Output v : variables) { createAdamSlot(v.asOutput()); } betaOnePower = tf.withName("beta1_power").variable(Shape.scalar(), TFloat32.DTYPE); - Assign betaOnePowerInit = tf - .assign(betaOnePower, tf.constant(betaOne)); + Assign betaOnePowerInit = tf.assign(betaOnePower, tf.constant(betaOne)); graph.addInitializer(betaOnePowerInit); betaTwoPower = tf.withName("beta2_power").variable(Shape.scalar(), TFloat32.DTYPE); - Assign betaTwoPowerInit = tf - .assign(betaTwoPower, tf.constant(betaTwo)); + Assign betaTwoPowerInit = tf.assign(betaTwoPower, tf.constant(betaTwo)); graph.addInitializer(betaTwoPowerInit); } + /** {@inheritDoc} */ @Override protected Optional prepare(String scopeName) { betaOneConst = tf.constant(betaOne); @@ -126,20 +207,30 @@ protected Optional prepare(String scopeName) { return Optional.empty(); } + /** + * Creates an Adam Slot + * + * @param v the variable to install in the slot + * @param the datatype of the variable. + */ private void createAdamSlot(Output v) { - Operand firstMomentInitializer = tf - .fill(tf.shape(v), tf.dtypes.cast(tf.constant(0.0f), v.dataType())); + Operand firstMomentInitializer = + tf.fill(tf.shape(v), tf.dtypes.cast(tf.constant(0.0f), v.dataType())); createSlot(v.asOutput(), FIRST_MOMENT, firstMomentInitializer); - Operand secondMomentInitializer = tf - .fill(tf.shape(v), tf.dtypes.cast(tf.constant(0.0f), v.dataType())); + Operand secondMomentInitializer = + tf.fill(tf.shape(v), tf.dtypes.cast(tf.constant(0.0f), v.dataType())); createSlot(v.asOutput(), SECOND_MOMENT, secondMomentInitializer); } + /** {@inheritDoc} */ @Override protected Op applyDense(Output gradient, Output variable) { Variable firstMomentSlot = getSlot(variable, FIRST_MOMENT).get(); Variable secondMomentSlot = getSlot(variable, SECOND_MOMENT).get(); - return tf.train.applyAdam(variable, firstMomentSlot, secondMomentSlot, + return tf.train.applyAdam( + variable, + firstMomentSlot, + secondMomentSlot, tf.dtypes.cast(betaOnePower, gradient.dataType()), tf.dtypes.cast(betaTwoPower, gradient.dataType()), tf.dtypes.cast(learningRateConst, gradient.dataType()), @@ -151,11 +242,11 @@ protected Op applyDense(Output gradient, Output variable /** * Gathers up the update operations into a single op that can be used as a run target. - *

    - * Adds the betaOne and betaTwo updates to the end of the updates list. + * + *

    Adds the betaOne and betaTwo updates to the end of the updates list. * * @param updateOperations The update operations. - * @param name The name of the run target. + * @param name The name of the run target. * @return A NoOp with a control dependency on each update operation. */ @Override @@ -165,16 +256,22 @@ protected Op finish(List updateOperations, String name) { return super.finish(updateOperations, name); } + /** {@inheritDoc} */ @Override public String toString() { - return "Adam{" + - "learningRate=" + learningRate + - ", betaOne=" + betaOne + - ", betaTwo=" + betaTwo + - ", epsilon=" + epsilon + - '}'; + return "Adam{" + + "learningRate=" + + learningRate + + ", betaOne=" + + betaOne + + ", betaTwo=" + + betaTwo + + ", epsilon=" + + epsilon + + '}'; } + /** {@inheritDoc} */ @Override public String getOptimizerName() { return "Adam"; diff --git a/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/Adamax.java b/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/Adamax.java new file mode 100644 index 00000000000..335d83cedfa --- /dev/null +++ b/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/Adamax.java @@ -0,0 +1,190 @@ +package org.tensorflow.framework.optimizers; + +import org.tensorflow.Graph; +import org.tensorflow.Operand; +import org.tensorflow.Output; +import org.tensorflow.ndarray.Shape; +import org.tensorflow.op.Op; +import org.tensorflow.op.core.Assign; +import org.tensorflow.op.core.Constant; +import org.tensorflow.op.core.Variable; +import org.tensorflow.op.train.ApplyAdaMax; +import org.tensorflow.types.TFloat32; +import org.tensorflow.types.family.TType; + +import java.util.List; +import java.util.Optional; + +/** + * Optimizer that implements the Adamax algorithm. + * + *

    It is a variant of Adam based on the infinity norm. Default parameters follow those provided + * in the paper. Adamax is sometimes superior to adam, specially in models with embeddings. + * + * @see Kingma et al., 2014 + */ +public class Adamax extends Optimizer { + + public static final String FIRST_MOMENT = "m"; + public static final String SECOND_MOMENT = "v"; + + public static final float LEARNING_RATE_DEFAULT = 0.001f; + public static final float EPSILON_DEFAULT = 1e-07f; + public static final float BETA_ONE_DEFAULT = 0.9f; + public static final float BETA_TWO_DEFAULT = 0.999f; + + private float learningRate; + private final float betaOne; + private final float betaTwo; + private final float epsilon; + + private Constant learningRateConst; + private Constant epsilonConst; + private Constant betaOneConst; + private Constant betaTwoConst; + private Variable betaOnePower; + + /** + * Creates an Optimizer that implements the Adamax algorithm. + * + * @param graph the TensorFlow graph + */ + public Adamax(Graph graph) { + this(graph, LEARNING_RATE_DEFAULT, BETA_ONE_DEFAULT, BETA_TWO_DEFAULT, EPSILON_DEFAULT); + } + + /** + * Creates an Optimizer that implements the Adamax algorithm. + * + * @param graph the TensorFlow graph + * @param name name for the operations Created when applying gradients. Defaults to "Adamax". + */ + public Adamax(Graph graph, String name) { + this(graph, name, LEARNING_RATE_DEFAULT, BETA_ONE_DEFAULT, BETA_TWO_DEFAULT, EPSILON_DEFAULT); + } + + /** + * Creates an Optimizer that implements the Adamax algorithm. + * + * @param graph the TensorFlow graph + * @param learningRate The learning rate. + */ + public Adamax(Graph graph, float learningRate) { + this(graph, learningRate, BETA_ONE_DEFAULT, BETA_TWO_DEFAULT, EPSILON_DEFAULT); + } + + /** + * Creates an Optimizer that implements the Adamax algorithm. + * + * @param graph the TensorFlow graph + * @param name name for the operations Created when applying gradients. Defaults to "Adamax". + * @param learningRate The learning rate. + */ + public Adamax(Graph graph, String name, float learningRate) { + this(graph, name, learningRate, BETA_ONE_DEFAULT, BETA_TWO_DEFAULT, EPSILON_DEFAULT); + } + + /** + * Creates an Optimizer that implements the Adamax algorithm. + * + * @param graph the TensorFlow graph + * @param learningRate The learning rate. + * @param betaOne The exponential decay rate for the 1st moment estimates. + * @param betaTwo The exponential decay rate for the exponentially weighted infinity norm. + * @param epsilon A small constant for numerical stability. + */ + public Adamax(Graph graph, float learningRate, float betaOne, float betaTwo, float epsilon) { + super(graph); + this.learningRate = learningRate; + this.betaOne = betaOne; + this.betaTwo = betaTwo; + this.epsilon = epsilon; + } + + /** + * Creates an Optimizer that implements the Adamax algorithm. + * + * @param graph the TensorFlow graph + * @param name name for the operations Created when applying gradients. Defaults to "Adamax". + * @param learningRate The learning rate. + * @param betaOne The exponential decay rate for the 1st moment estimates. + * @param betaTwo The exponential decay rate for the exponentially weighted infinity norm. + * @param epsilon A small constant for numerical stability. + */ + public Adamax( + Graph graph, String name, float learningRate, float betaOne, float betaTwo, float epsilon) { + super(graph, name); + this.learningRate = learningRate; + this.betaOne = betaOne; + this.betaTwo = betaTwo; + this.epsilon = epsilon; + } + + /** {@inheritDoc} */ + @Override + protected Optional prepare(String scopeName) { + betaOneConst = tf.constant(betaOne); + betaTwoConst = tf.constant(betaTwo); + learningRateConst = tf.constant(learningRate); + epsilonConst = tf.constant(epsilon); + + return Optional.empty(); + } + + /** {@inheritDoc} */ + @Override + protected void createSlots(List> variables) { + for (Output v : variables) { + createAdamaxSlot(v.asOutput()); + } + betaOnePower = tf.withName("beta1_power").variable(Shape.scalar(), TFloat32.DTYPE); + Assign betaOnePowerInit = tf.assign(betaOnePower, tf.constant(betaOne)); + ((Graph) tf.scope().env()).addInitializer(betaOnePowerInit); + } + + /** + * Creates the first and second moment slots + * + * @param v the variable + * @param the datatype of the variable + */ + private void createAdamaxSlot(Output v) { + Operand firstMomentInitializer = + tf.fill(tf.shape(v), tf.dtypes.cast(tf.constant(0.0f), v.dataType())); + createSlot(v.asOutput(), FIRST_MOMENT, firstMomentInitializer); + Operand secondMomentInitializer = + tf.fill(tf.shape(v), tf.dtypes.cast(tf.constant(0.0f), v.dataType())); + createSlot(v.asOutput(), SECOND_MOMENT, secondMomentInitializer); + } + + /** {@inheritDoc} */ + @Override + protected Op applyDense(Output gradient, Output variable) { + Variable firstMomentSlot = getSlot(variable, FIRST_MOMENT).get(); + Variable secondMomentSlot = getSlot(variable, SECOND_MOMENT).get(); + return ApplyAdaMax.create( + this.tf.scope(), + variable, + firstMomentSlot, + secondMomentSlot, + tf.dtypes.cast(betaOnePower, gradient.dataType()), + tf.dtypes.cast(learningRateConst, gradient.dataType()), + tf.dtypes.cast(betaOneConst, gradient.dataType()), + tf.dtypes.cast(betaTwoConst, gradient.dataType()), + tf.dtypes.cast(epsilonConst, gradient.dataType()), + gradient); + } + + /** {@inheritDoc} */ + @Override + protected Op finish(List updateOperations, String name) { + updateOperations.add(tf.assign(betaOnePower, tf.math.mul(betaOnePower, betaOneConst))); + return super.finish(updateOperations, name); + } + + /** {@inheritDoc} */ + @Override + public String getOptimizerName() { + return "Adamax"; + } +} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/Ftrl.java b/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/Ftrl.java similarity index 55% rename from tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/Ftrl.java rename to tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/Ftrl.java index db73f60c77e..13f68e4bbef 100644 --- a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/Ftrl.java +++ b/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/Ftrl.java @@ -1,59 +1,35 @@ -/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. +package org.tensorflow.framework.optimizers; -Licensed under the Apache License, Version 2.0 (the ); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -=======================================================================*/ -package org.tensorflow.keras.optimizers; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import org.tensorflow.Graph; import org.tensorflow.Operand; import org.tensorflow.Output; -import org.tensorflow.Session; -import static org.tensorflow.keras.optimizers.OptimizerInterface.assertGraph; -import org.tensorflow.ndarray.Shape; import org.tensorflow.op.Op; -import org.tensorflow.op.Ops; -import org.tensorflow.op.core.Assign; -import org.tensorflow.op.core.Placeholder; import org.tensorflow.op.core.Variable; import org.tensorflow.op.train.ApplyFtrl; -import org.tensorflow.types.TFloat32; import org.tensorflow.types.family.TType; -/** Ftrl (Follow the Regularized Leader) Optimizer that implements the FTRL algorithm. */ -public class Ftrl extends org.tensorflow.framework.optimizers.Optimizer - implements OptimizerInterface { - - public static final String LEARNING_RATE_KEY = "learning_rate"; - public static final String LEARNING_RATE_POWER_KEY = "learning_rate_power"; - public static final String INITIAL_ACCUM_VALUE_KEY = "initial_accumulator_value"; - public static final String L1STRENGTH_KEY = "l1_regularization_strength"; - public static final String L2STRENGTH_KEY = "l2_regularization_strength"; - public static final String L2_SHRINKAGE_REGULARIZATION_STRENGTH_KEY = - "l2_shrinkage_regularization_strength"; +import java.util.List; - public static final float LEARNING_RATE_DEFAULT = 0.001F; - public static final float LEARNING_RATE_POWER_DEFAULT = -0.5F; - public static final float INITIAL_ACCUM_VALUE_DEFAULT = 0.1F; - public static final float L1STRENGTH_DEFAULT = 0.0F; - public static final float L2STRENGTH_DEFAULT = 0.0F; - public static final float L2_SHRINKAGE_REGULARIZATION_STRENGTH_DEFAULT = 0.0F; +/** + * Optimizer that implements the FTRL algorithm. + * + * @see McMahan, et + * al., 2013, Algorithm 1 + *

    This version has support for both online L2 (the L2 penalty given in the paper above) and + * shrinkage-type L2 (which is the addition of an L2 penalty to the loss function). + */ +public class Ftrl extends Optimizer { public static final String ACCUMULATOR = "gradient_accumulator"; public static final String LINEAR_ACCUMULATOR = "linear_accumulator"; - private final String name; + public static final float LEARNING_RATE_DEFAULT = 0.001f; + public static final float LEARNING_RATE_POWER_DEFAULT = -0.5f; + public static final float INITIAL_ACCUMULATOR_VALUE_DEFAULT = 0.1f; + public static final float L1STRENGTH_DEFAULT = 0.0f; + public static final float L2STRENGTH_DEFAULT = 0.0f; + public static final float L2_SHRINKAGE_REGULARIZATION_STRENGTH_DEFAULT = 0.0f; + private float learningRate; private final float learningRatePower; private final float initialAccumulatorValue; @@ -61,84 +37,80 @@ public class Ftrl extends org.tensorflow.framework.optimizers.Optimizer private final float l2RegularizationStrength; private final float l2ShrinkageRegularizationStrength; - private Map config = new HashMap<>(); - - private boolean useLocking = true; - /** - * Create a Ftrl Optimizer + * Creates a Ftrl Optimizer * - * @param tf the TensorFlow Ops + * @param graph the TensorFlow Graph */ - public Ftrl(Ops tf) { + public Ftrl(Graph graph) { this( - tf, + graph, LEARNING_RATE_DEFAULT, LEARNING_RATE_POWER_DEFAULT, - INITIAL_ACCUM_VALUE_DEFAULT, + INITIAL_ACCUMULATOR_VALUE_DEFAULT, L1STRENGTH_DEFAULT, L2STRENGTH_DEFAULT, L2_SHRINKAGE_REGULARIZATION_STRENGTH_DEFAULT); } /** - * Create a Ftrl Optimizer + * Creates a Ftrl Optimizer * - * @param tf the TensorFlow Ops - * @param name the Optmizer name + * @param graph the TensorFlow Graph + * @param name the name of this Optimizer */ - public Ftrl(Ops tf, String name) { + public Ftrl(Graph graph, String name) { this( - tf, + graph, name, LEARNING_RATE_DEFAULT, LEARNING_RATE_POWER_DEFAULT, - INITIAL_ACCUM_VALUE_DEFAULT, + INITIAL_ACCUMULATOR_VALUE_DEFAULT, L1STRENGTH_DEFAULT, L2STRENGTH_DEFAULT, L2_SHRINKAGE_REGULARIZATION_STRENGTH_DEFAULT); } /** - * Create a Ftrl Optimizer + * Creates a Ftrl Optimizer * - * @param tf the TensorFlow Ops + * @param graph the TensorFlow Graph * @param learningRate the learning rate */ - public Ftrl(Ops tf, float learningRate) { + public Ftrl(Graph graph, float learningRate) { this( - tf, + graph, learningRate, LEARNING_RATE_POWER_DEFAULT, - INITIAL_ACCUM_VALUE_DEFAULT, + INITIAL_ACCUMULATOR_VALUE_DEFAULT, L1STRENGTH_DEFAULT, L2STRENGTH_DEFAULT, L2_SHRINKAGE_REGULARIZATION_STRENGTH_DEFAULT); } /** - * Create a Ftrl Optimizer + * Creates a Ftrl Optimizer * - * @param tf the TensorFlow Ops - * @param name the Optmizer name + * @param graph the TensorFlow Graph + * @param name the name of this Optimizer * @param learningRate the learning rate */ - public Ftrl(Ops tf, String name, float learningRate) { + public Ftrl(Graph graph, String name, float learningRate) { this( - tf, + graph, name, learningRate, LEARNING_RATE_POWER_DEFAULT, - INITIAL_ACCUM_VALUE_DEFAULT, + INITIAL_ACCUMULATOR_VALUE_DEFAULT, L1STRENGTH_DEFAULT, L2STRENGTH_DEFAULT, L2_SHRINKAGE_REGULARIZATION_STRENGTH_DEFAULT); } /** - * Create a Ftrl Optimizer + * Creates a Ftrl Optimizer * - * @param tf the TensorFlow Ops + * @param graph the TensorFlow Graph * @param learningRate the learning rate * @param learningRatePower Controls how the learning rate decreases during training. Use zero for * a fixed learning rate. @@ -149,17 +121,19 @@ public Ftrl(Ops tf, String name, float learningRate) { * @param l2ShrinkageRegularizationStrength This differs from L2 above in that the L2 above is a * stabilization penalty, whereas this L2 shrinkage is a magnitude penalty. must be greater * than or equal to zero. + * @throws java.lang.IllegalArgumentException if the initialAccumulatorValue, + * l1RegularizationStrength, l2RegularizationStrength, or l2ShrinkageRegularizationStrength + * are less than 0.0, or learningRatePower is greater than 0.0. */ public Ftrl( - Ops tf, + Graph graph, float learningRate, float learningRatePower, float initialAccumulatorValue, float l1Strength, float l2Strength, float l2ShrinkageRegularizationStrength) { - super(assertGraph(tf)); - this.name = getOptimizerName(); + super(graph); this.learningRate = learningRate; this.learningRatePower = learningRatePower; this.initialAccumulatorValue = initialAccumulatorValue; @@ -167,14 +141,13 @@ public Ftrl( this.l2RegularizationStrength = l2Strength; this.l2ShrinkageRegularizationStrength = l2ShrinkageRegularizationStrength; validateParams(); - initConfig(); } /** - * Create a Ftrl Optimizer + * Creates a Ftrl Optimizer * - * @param tf the TensorFlow Ops - * @param name the name of this Ftrl Optimizer + * @param graph the TensorFlow Graph + * @param name the name of this Optimizer * @param learningRate the learning rate * @param learningRatePower Controls how the learning rate decreases during training. Use zero for * a fixed learning rate. @@ -185,9 +158,12 @@ public Ftrl( * @param l2ShrinkageRegularizationStrength This differs from L2 above in that the L2 above is a * stabilization penalty, whereas this L2 shrinkage is a magnitude penalty. must be greater * than or equal to zero. + * @throws java.lang.IllegalArgumentException if the initialAccumulatorValue, + * l1RegularizationStrength, l2RegularizationStrength, or l2ShrinkageRegularizationStrength + * are less than 0.0, or learningRatePower is greater than 0.0. */ public Ftrl( - Ops tf, + Graph graph, String name, float learningRate, float learningRatePower, @@ -195,8 +171,7 @@ public Ftrl( float l1Strength, float l2Strength, float l2ShrinkageRegularizationStrength) { - super(assertGraph(tf), name); - this.name = name; + super(graph, name); this.learningRate = learningRate; this.learningRatePower = learningRatePower; this.initialAccumulatorValue = initialAccumulatorValue; @@ -204,67 +179,9 @@ public Ftrl( this.l2RegularizationStrength = l2Strength; this.l2ShrinkageRegularizationStrength = l2ShrinkageRegularizationStrength; validateParams(); - initConfig(); - } - - /** - * Create a Ftrl Optmizer - * - * @param tf the TensorFlow Ops - * @param config a config object to initialize - * @return a new Frtl Optimizer - */ - public static Ftrl create(Ops tf, Map config) { - String name = (String) config.get(NAME_KEY); - float learningRate = (float) config.getOrDefault(LEARNING_RATE_KEY, LEARNING_RATE_DEFAULT); - float learningRatePower = - (float) config.getOrDefault(LEARNING_RATE_POWER_KEY, LEARNING_RATE_POWER_DEFAULT); - float initialAccumulatorValue = - (float) config.getOrDefault(INITIAL_ACCUM_VALUE_KEY, INITIAL_ACCUM_VALUE_DEFAULT); - float l1RegularizationStrength = - (float) config.getOrDefault(L1STRENGTH_KEY, L1STRENGTH_DEFAULT); - float l2RegularizationStrength = - (float) config.getOrDefault(L2STRENGTH_KEY, L2STRENGTH_DEFAULT); - float l2ShrinkageRegularizationStrength = - (float) - config.getOrDefault( - L2_SHRINKAGE_REGULARIZATION_STRENGTH_KEY, - L2_SHRINKAGE_REGULARIZATION_STRENGTH_DEFAULT); - - if (name == null) { - return new Ftrl( - tf, - learningRate, - learningRatePower, - initialAccumulatorValue, - l1RegularizationStrength, - l2RegularizationStrength, - l2ShrinkageRegularizationStrength); - } else { - return new Ftrl( - tf, - name, - learningRate, - learningRatePower, - initialAccumulatorValue, - l1RegularizationStrength, - l2RegularizationStrength, - l2ShrinkageRegularizationStrength); - } } - /** Initialize the Config object from the current settings */ - protected void initConfig() { - config.put(NAME_KEY, this.name); - config.put(LEARNING_RATE_KEY, learningRate); - config.put(LEARNING_RATE_POWER_KEY, learningRatePower); - config.put(INITIAL_ACCUM_VALUE_KEY, initialAccumulatorValue); - config.put(L1STRENGTH_KEY, l1RegularizationStrength); - config.put(L2STRENGTH_KEY, l2RegularizationStrength); - config.put(L2_SHRINKAGE_REGULARIZATION_STRENGTH_KEY, l2ShrinkageRegularizationStrength); - } - - /** Validate all the settings of the Frtl Optmizer */ + /** Validates all the settings of the Frtl Optmizer */ private void validateParams() { if (this.initialAccumulatorValue < 0.0F) { throw new IllegalArgumentException( @@ -306,7 +223,7 @@ protected void createSlots(List> variables) { } /** - * Create a slot variables for the accumulators + * Creates a slot variables for the accumulators * * @param v the variable * @param the data type of the variable @@ -325,7 +242,7 @@ private void createFtrlSlot(Output v) { protected Op applyDense(Output gradient, Output variable) { Variable accumSlot = getSlot(variable, ACCUMULATOR).get(); Variable linearSlot = getSlot(variable, LINEAR_ACCUMULATOR).get(); - ApplyFtrl.Options options = ApplyFtrl.useLocking(useLocking); + ApplyFtrl.Options options = ApplyFtrl.useLocking(true); return this.tf.train.applyFtrl( variable, accumSlot, // accum @@ -345,22 +262,4 @@ protected Op applyDense(Output gradient, Output variable public String getOptimizerName() { return "Ftrl"; } - - /** {@inheritDoc} */ - @Override - public Map getConfig() { - return config; - } - - /** {@inheritDoc} */ - @Override - public float getLearningRate() { - return this.learningRate; - } - - /** {@inheritDoc} */ - @Override - public void setLearningRate(float learningRate) { - this.learningRate = learningRate; - } } diff --git a/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/GradientDescent.java b/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/GradientDescent.java index 7ed90c846f1..e307855e636 100644 --- a/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/GradientDescent.java +++ b/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/GradientDescent.java @@ -21,35 +21,61 @@ import org.tensorflow.types.family.TType; /** - * Basic SGD. + * Basic Stochastic gradient descent optimizer. GradientDescent updates the current weight using the + * current gradient ?L/?w multiplied by the learning rate. */ public class GradientDescent extends Optimizer { + public static final float LEARNING_RATE_DEFAULT = 0.01f; + private final float learningRate; + /** + * Creates a GradientDescent Optimizer + * + * @param graph the TensorFlow graph + */ + public GradientDescent(Graph graph) { + this(graph, LEARNING_RATE_DEFAULT); + } + + /** + * Creates a GradientDescent Optimizer + * + * @param graph the TensorFlow graph + * @param learningRate the learning rate, defaults to 0.01 + */ public GradientDescent(Graph graph, float learningRate) { super(graph); this.learningRate = learningRate; } + /** + * Creates a GradientDescent Optimizer + * + * @param graph the TensorFlow graph + * @param name the name for this Optimizer, default is "GradientDescent" + * @param learningRate the learning rate, defaults to 0.01 + */ public GradientDescent(Graph graph, String name, float learningRate) { super(graph, name); this.learningRate = learningRate; } + /** {@inheritDoc} */ @Override protected Op applyDense(Output gradient, Output variable) { - return tf.train.applyGradientDescent(variable, - tf.dtypes.cast(tf.constant(learningRate), gradient.dataType()), gradient); + return tf.train.applyGradientDescent( + variable, tf.dtypes.cast(tf.constant(learningRate), gradient.dataType()), gradient); } + /** {@inheritDoc} */ @Override public String toString() { - return "GradientDescent{" + - "learningRate=" + learningRate + - '}'; + return "GradientDescent{" + "learningRate=" + learningRate + '}'; } + /** {@inheritDoc} */ @Override public String getOptimizerName() { return "GradientDescent"; diff --git a/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/Momentum.java b/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/Momentum.java index b8582b4e278..111727d26fa 100644 --- a/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/Momentum.java +++ b/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/Momentum.java @@ -15,7 +15,6 @@ */ package org.tensorflow.framework.optimizers; -import java.util.List; import org.tensorflow.Graph; import org.tensorflow.Operand; import org.tensorflow.Output; @@ -24,14 +23,20 @@ import org.tensorflow.op.train.ApplyMomentum; import org.tensorflow.types.family.TType; +import java.util.List; + /** - * SGD plus momentum, either nesterov or traditional. - *

    - * See the paper for details of - * nesterov momentum. + * Stochastic gradient descent plus momentum, either nesterov or traditional. + * + *

    See the paper for details + * of nesterov momentum. */ public class Momentum extends Optimizer { + public static final float LEARNING_RATE_DEFAULT = 0.01F; + public static final float MOMENTUM_DEFAULT = 0.0F; + public static final boolean NESTEROV_DEFAULT = false; + public static final String MOMENTUM = "momentum"; private final float learningRate; @@ -40,6 +45,46 @@ public class Momentum extends Optimizer { private final boolean useNesterov; + /** + * Creates a Momentum Optimizer + * + * @param graph the TensorFlow graph + */ + public Momentum(Graph graph) { + this(graph, LEARNING_RATE_DEFAULT, MOMENTUM_DEFAULT, NESTEROV_DEFAULT); + } + + /** + * Creates a Momentum Optimizer + * + * @param graph the TensorFlow graph + * @param learningRate the learning rate + */ + public Momentum(Graph graph, float learningRate) { + this(graph, learningRate, MOMENTUM_DEFAULT, NESTEROV_DEFAULT); + } + + /** + * Creates a Momentum Optimizer + * + * @param graph the TensorFlow graph + * @param learningRate the learning rate + * @param momentum hyperparameter that accelerates gradient descent in the relevant direction and + * dampens oscillations, Must be greater than or equal to zero. Default is 0. + */ + public Momentum(Graph graph, float learningRate, float momentum) { + this(graph, learningRate, momentum, NESTEROV_DEFAULT); + } + + /** + * Creates a Momentum Optimizer + * + * @param graph the TensorFlow graph + * @param learningRate the learning rate + * @param momentum hyperparameter that accelerates gradient descent in the relevant direction and + * dampens oscillations, Must be greater than or equal to zero. Default is 0. + * @param useNesterov Whether to apply Nesterov momentum. Defaults to false. + */ public Momentum(Graph graph, float learningRate, float momentum, boolean useNesterov) { super(graph); this.learningRate = learningRate; @@ -47,13 +92,25 @@ public Momentum(Graph graph, float learningRate, float momentum, boolean useNest this.useNesterov = useNesterov; } - public Momentum(Graph graph, String name, float learningRate, float momentum, boolean useNesterov) { + /** + * Creates a Momentum Optimizer + * + * @param graph the TensorFlow graph + * @param name the name for this Optimizer + * @param learningRate the learning rate + * @param momentum hyperparameter that accelerates gradient descent in the relevant direction and + * dampens oscillations, Must be greater than or equal to zero. Default is 0. + * @param useNesterov Whether to apply Nesterov momentum. Defaults to false. + */ + public Momentum( + Graph graph, String name, float learningRate, float momentum, boolean useNesterov) { super(graph, name); this.learningRate = learningRate; this.momentum = momentum; this.useNesterov = useNesterov; } + /** {@inheritDoc} */ @Override protected void createSlots(List> variables) { for (Output v : variables) { @@ -61,31 +118,44 @@ protected void createSlots(List> variables) { } } + /** + * Creates a slot for the momentum variable + * + * @param v the variable + * @param the data type of the variable + */ private void createMomentumSlot(Output v) { - Operand initializer = tf - .fill(tf.shape(v), tf.dtypes.cast(tf.constant(0.0f), v.dataType())); + Operand initializer = tf.fill(tf.shape(v), tf.dtypes.cast(tf.constant(0.0f), v.dataType())); createSlot(v.asOutput(), MOMENTUM, initializer); } + /** {@inheritDoc} */ @Override protected Op applyDense(Output gradient, Output variable) { Variable slot = getSlot(variable, MOMENTUM).get(); - return tf.train - .applyMomentum(variable, slot, tf.dtypes.cast(tf.constant(learningRate), gradient.dataType()), - gradient, - tf.dtypes.cast(tf.constant(momentum), gradient.dataType()), - ApplyMomentum.useNesterov(useNesterov)); + return tf.train.applyMomentum( + variable, + slot, + tf.dtypes.cast(tf.constant(learningRate), gradient.dataType()), + gradient, + tf.dtypes.cast(tf.constant(momentum), gradient.dataType()), + ApplyMomentum.useNesterov(useNesterov)); } + /** {@inheritDoc} */ @Override public String toString() { - return "Momentum{" + - "learningRate=" + learningRate + - ", momentum=" + momentum + - ", useNesterov=" + useNesterov + - '}'; + return "Momentum{" + + "learningRate=" + + learningRate + + ", momentum=" + + momentum + + ", useNesterov=" + + useNesterov + + '}'; } + /** {@inheritDoc} */ @Override public String getOptimizerName() { return "Momentum"; diff --git a/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/Nadam.java b/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/Nadam.java new file mode 100644 index 00000000000..48e5135c952 --- /dev/null +++ b/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/Nadam.java @@ -0,0 +1,302 @@ +package org.tensorflow.framework.optimizers; + +import org.tensorflow.DataType; +import org.tensorflow.Graph; +import org.tensorflow.Operand; +import org.tensorflow.Output; +import org.tensorflow.ndarray.Shape; +import org.tensorflow.op.Op; +import org.tensorflow.op.core.Assign; +import org.tensorflow.op.core.Constant; +import org.tensorflow.op.core.Variable; +import org.tensorflow.types.TFloat32; +import org.tensorflow.types.TInt64; +import org.tensorflow.types.family.TType; + +import java.util.List; +import java.util.Optional; + +/** + * Nadam Optimizer that implements the NAdam algorithm. + * + *

    Much like Adam is essentially RMSprop with momentum, Nadam is Adam with Nesterov momentum. + * + * @see Dozat, 2015 + */ +public class Nadam extends Optimizer { + + private static final float DECAY_BASE = 0.96f; + private static final float DECAY = 0.004f; + public static final float LEARNING_RATE_DEFAULT = 0.001f; + public static final float EPSILON_DEFAULT = 1e-8f; + public static final float BETA_ONE_DEFAULT = 0.9f; + public static final float BETA_TWO_DEFAULT = 0.999f; + public static final String FIRST_MOMENT = "m"; + public static final String SECOND_MOMENT = "v"; + public static final String MOMENTUM = "momentum"; + + /** The learning rate. */ + private final float learningRate; + + /** The exponential decay rate for the 1st moment estimates. */ + private final float betaOne; + + /** The exponential decay rate for the exponentially weighted infinity norm. */ + private final float betaTwo; + + /** A small constant for numerical stability. */ + private final float epsilon; + + private Constant learningRateConst; + private Constant epsilonConst; + private Constant betaOneConst; + private Constant betaTwoConst; + + private Variable betaOnePower; + private Variable betaTwoPower; + private Variable momentum; + + private long iterations = 0; + + // private Operand mT; + private Operand mT1; + + private Operand oneMinusBeta1; + private Operand oneMinusBeta2; + private Operand oneMinusMT; + private Operand oneMinusMScheduleNew; + private Operand oneMinusMScheduleNext; + private Operand vTPrimeDenominator; + + /** + * Creates a Nadam Optimizer + * + * @param graph the TensorFlow graph + */ + public Nadam(Graph graph) { + this(graph, LEARNING_RATE_DEFAULT, BETA_ONE_DEFAULT, BETA_TWO_DEFAULT, EPSILON_DEFAULT); + } + + /** + * Creates a Nadam Optimizer + * + * @param graph the TensorFlow graph + * @param learningRate the learning rate, defaults to 0.001 + */ + public Nadam(Graph graph, float learningRate) { + this(graph, learningRate, BETA_ONE_DEFAULT, BETA_TWO_DEFAULT, EPSILON_DEFAULT); + } + + /** + * Creates a Nadam Optimizer + * + * @param graph the TensorFlow graph + * @param learningRate the learning rate, defaults to 0.001 + * @param betaOne The exponential decay rate for the 1st moment estimates. Default is 0.9. + * @param betaTwo The exponential decay rate for the exponentially weighted infinity norm. Default + * is 0.999. + * @param epsilon A small constant for numerical stability. Default is 1e-8. + */ + public Nadam(Graph graph, float learningRate, float betaOne, float betaTwo, float epsilon) { + super(graph); + this.learningRate = learningRate; + this.betaOne = betaOne; + this.betaTwo = betaTwo; + this.epsilon = epsilon; + } + + /** + * Creates a Nadam Optimizer + * + * @param graph the TensorFlow graph + * @param name the name for this Optimizer, defaults to "Nadam" + * @param learningRate the learning rate, defaults to 0.001 + */ + public Nadam(Graph graph, String name, float learningRate) { + this(graph, name, learningRate, BETA_ONE_DEFAULT, BETA_TWO_DEFAULT, EPSILON_DEFAULT); + } + + /** + * Creates a Nadam Optimizer + * + * @param graph the TensorFlow graph + * @param name the name for this Optimizer, defaults to "Nadam" + * @param learningRate the learning rate, defaults to 0.001 + * @param betaOne The exponential decay rate for the 1st moment estimates. Default is 0.9. + * @param betaTwo The exponential decay rate for the exponentially weighted infinity norm. Default + * is 0.999. + * @param epsilon A small constant for numerical stability. Default is 1e-8. + */ + public Nadam( + Graph graph, String name, float learningRate, float betaOne, float betaTwo, float epsilon) { + super(graph, name); + this.learningRate = learningRate; + this.betaOne = betaOne; + this.betaTwo = betaTwo; + this.epsilon = epsilon; + } + + /** {@inheritDoc} */ + @Override + protected void createSlots(List> variables) { + for (Output v : variables) { + createNadamSlot(v.asOutput()); + } + betaOnePower = tf.withName("beta1_power").variable(Shape.scalar(), TFloat32.DTYPE); + Assign betaOnePowerInit = tf.assign(betaOnePower, tf.constant(betaOne)); + ((Graph) tf.scope().env()).addInitializer(betaOnePowerInit); + + betaTwoPower = tf.withName("beta2_power").variable(Shape.scalar(), TFloat32.DTYPE); + Assign betaTwoPowerInit = tf.assign(betaTwoPower, tf.constant(betaTwo)); + ((Graph) tf.scope().env()).addInitializer(betaTwoPowerInit); + + momentum = tf.withName("momentum").variable(Shape.scalar(), TFloat32.DTYPE); + Assign momentumInit = tf.assign(momentum, tf.constant(1.0F)); + ((Graph) tf.scope().env()).addInitializer(momentumInit); + } + + /** + * Creates slots for first and second moments and momentum + * + * @param v the variable + * @param the data type or the Variable + */ + private void createNadamSlot(Output v) { + Operand firstMomentInitializer = + tf.fill(tf.shape(v), tf.dtypes.cast(tf.constant(0.0f), v.dataType())); + createSlot(v.asOutput(), FIRST_MOMENT, firstMomentInitializer); + Operand secondMomentInitializer = + tf.fill(tf.shape(v), tf.dtypes.cast(tf.constant(0.0f), v.dataType())); + createSlot(v.asOutput(), SECOND_MOMENT, secondMomentInitializer); + + Operand momentumInitializer = + tf.fill(tf.shape(v), tf.dtypes.cast(tf.constant(1.0f), v.dataType())); + createSlot(v.asOutput(), MOMENTUM, momentumInitializer); + } + + /** {@inheritDoc} */ + @Override + protected Optional prepare(String scopeName) { + Constant one = tf.constant(1.0F); + Constant point5 = tf.constant(0.5F); + + learningRateConst = tf.constant(learningRate); + betaOneConst = tf.constant(betaOne); + betaTwoConst = tf.constant(betaTwo); + Constant localStepConst = tf.constant(this.iterations + 1); + Constant nextStepConst = tf.constant(this.iterations + 2); + Constant decayConst = tf.constant(DECAY); + Constant decayBaseConst = tf.constant(DECAY_BASE); + epsilonConst = tf.constant(this.epsilon); + + Operand mT = + tf.math.mul( + betaOneConst, + tf.math.sub( + one, + tf.math.mul( + point5, + tf.math.pow( + decayBaseConst, + tf.math.mul(decayConst, tf.dtypes.cast(localStepConst, TFloat32.DTYPE)))))); + + mT1 = + tf.math.mul( + betaOneConst, + tf.math.sub( + one, + tf.math.mul( + point5, + tf.math.pow( + decayBaseConst, + tf.math.mul(decayConst, tf.dtypes.cast(nextStepConst, TFloat32.DTYPE)))))); + + Operand mScheduleNew = tf.math.mul(momentum, mT); + + mScheduleNew = tf.assign(momentum, mScheduleNew, Assign.useLocking(true)); + Operand mScheduleNext = tf.math.mul(mScheduleNew, mT1); + + oneMinusBeta1 = tf.math.sub(one, betaOneConst); + oneMinusBeta2 = tf.math.sub(one, betaTwoConst); + oneMinusMT = tf.math.sub(one, mT); + oneMinusMScheduleNew = tf.math.sub(one, mScheduleNew); + oneMinusMScheduleNext = tf.math.sub(one, mScheduleNext); + vTPrimeDenominator = + tf.math.sub(one, tf.math.pow(betaTwoConst, tf.dtypes.cast(localStepConst, TFloat32.DTYPE))); + return Optional.empty(); + } + + /** {@inheritDoc} */ + @Override + protected Op applyDense(Output gradient, Output variable) { + DataType dType = gradient.dataType(); + Variable m = getSlot(variable, FIRST_MOMENT).get(); // first Moment + Variable v = getSlot(variable, SECOND_MOMENT).get(); // Second Moment + + // gPrime = grad / coefficients['oneMinusMScheduleNew'] + Operand gPrime = tf.math.div(gradient, tf.dtypes.cast(oneMinusMScheduleNew, dType)); + // mT = (coefficients['beta_1_t'] * m + coefficients['one_minus_beta_1_t'] * grad) + Operand mT = + tf.math.add( + tf.math.mul(tf.dtypes.cast(betaOneConst, dType), m), + tf.math.mul(tf.dtypes.cast(oneMinusBeta1, dType), gradient)); + // mT = state_ops.assign(m, mT, use_locking=self._use_locking) + // update m + mT = tf.assign(m, mT, Assign.useLocking(true)); + + // mTPrime = mT / coefficients['oneMinusMScheduleNext'] + Operand mTPrime = tf.math.div(mT, tf.dtypes.cast(oneMinusMScheduleNext, dType)); + + // vT = (coefficients['beta_2_t'] * v + coefficients['one_minus_beta_2_t'] * + // math_ops.square(grad)) + Operand vT = + tf.math.add( + tf.math.mul(tf.dtypes.cast(betaTwoConst, dType), v), + tf.math.mul(tf.dtypes.cast(oneMinusBeta2, dType), tf.math.square(gradient))); + // vT = state_ops.assign(v, vT, use_locking=self._use_locking) + // update v + vT = tf.assign(v, vT, Assign.useLocking(true)); + + // vTPrime = vT / coefficients['vTPrimeDenominator'] + Operand vTPrime = tf.math.div(vT, tf.dtypes.cast(vTPrimeDenominator, dType)); + + // m_t_bar = (coefficients['oneMinusMT'] * gPrime + coefficients['mT1'] * mTPrime) + Operand m_t_bar = + tf.math.add( + tf.math.mul(tf.dtypes.cast(oneMinusMT, dType), gPrime), + tf.math.mul(tf.dtypes.cast(mT1, dType), mTPrime)); + // varT = var - coefficients['lr_t'] * m_t_bar / (math_ops.sqrt(vTPrime) + + // coefficients['epsilon']) + Operand varT = + tf.math.sub( + variable, + tf.math.div( + tf.math.mul(tf.dtypes.cast(learningRateConst, dType), m_t_bar), + tf.math.add(tf.math.sqrt(vTPrime), tf.dtypes.cast(epsilonConst, dType)))); + + return tf.assign(variable, varT, Assign.useLocking(true)); + } + + /** + * Gathers up the update operations into a single op that can be used as a run target. + * + *

    Adds the betaOne, betaTwo and mu updates to the end of the updates list. + * + * @param updateOperations The update operations. + * @param name The name of the run target. + * @return A NoOp with a control dependency on each update operation. + */ + @Override + protected Op finish(List updateOperations, String name) { + iterations++; // increment the step; + updateOperations.add(tf.assign(betaOnePower, tf.math.mul(betaOnePower, betaOneConst))); + updateOperations.add(tf.assign(betaTwoPower, tf.math.mul(betaTwoPower, betaTwoConst))); + return super.finish(updateOperations, name); + } + + /** {@inheritDoc} */ + @Override + public String getOptimizerName() { + return "Nadam"; + } +} diff --git a/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/Optimizer.java b/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/Optimizer.java index ffff35a8ddd..f7032d18b38 100644 --- a/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/Optimizer.java +++ b/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/Optimizer.java @@ -15,12 +15,6 @@ */ package org.tensorflow.framework.optimizers; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.stream.Collectors; import org.tensorflow.Graph; import org.tensorflow.Operand; import org.tensorflow.Operation; @@ -33,34 +27,28 @@ import org.tensorflow.op.core.Variable; import org.tensorflow.types.family.TType; -/** - * Base class for gradient optimizers. - */ +import java.util.*; +import java.util.stream.Collectors; + +/** Base class for gradient optimizers. */ public abstract class Optimizer { public static final String VARIABLE_V2 = "VariableV2"; - /** - * Global state variables - */ - //TODO make this be used. + /** Global state variables */ + // TODO make this be used. protected final List> globals; - /** - * The Graph this optimizer is operating on. - */ + /** The Graph this optimizer is operating on. */ protected final Graph graph; - /** - * The ops builder for the graph. - */ + /** The ops builder for the graph. */ protected final Ops tf; - /** - * Top level map key is the variable name, lower level map key is the slot name. - */ + /** Top level map key is the variable name, lower level map key is the slot name. */ private final Map>> slots; /** * Builds an optimizer for the supplied graph. - *

    - * Uses the name from {@link Optimizer#getOptimizerName()} to name the operations. + * + *

    Uses the name from {@link Optimizer#getOptimizerName()} to name the operations. + * * @param graph The graph to optimize. */ protected Optimizer(Graph graph) { @@ -72,6 +60,7 @@ protected Optimizer(Graph graph) { /** * Builds an optimizer for the supplied graph. + * * @param graph The graph to optimize. * @param name The base name for the operations. */ @@ -82,27 +71,57 @@ protected Optimizer(Graph graph, String name) { this.globals = new ArrayList<>(); } + /** + * Creates a name by combining a variable name and a slot name + * + * @param variable the variable + * @param slotName the name of the slot + * @return the combined name + */ public static String createName(Output variable, String slotName) { return variable.op().name() + "-" + slotName; } + /** + * Minimizes the loss by updating the variables + * + * @param loss the loss operation that returns the value to minimize + * @return returns op that minimizes the loss by updating the listed variables + */ public Op minimize(Operand loss) { return minimize(loss, getOptimizerName() + "-minimize"); } + /** + * Minimizes the loss by updating the variables + * + * @param loss the loss operation that returns the value to minimize + * @param name the name for the minimize operation + * @return op that minimizes the loss by updating the listed variables + */ public Op minimize(Operand loss, String name) { List> gradsAndVars = computeGradients(loss); return applyGradients(gradsAndVars, name); } + /** + * Computes the gradients based on a loss operand. + * + * @param loss the loss operation + * @param the data type of the loss, gradients and variables. + * @return the computed gradients + */ public List> computeGradients(Operand loss) { List variables = new ArrayList<>(); - graph.operations().forEachRemaining((Operation op) -> { - if (op.type().equals(VARIABLE_V2)) { - variables.add(op); - } - }); + graph + .operations() + .forEachRemaining( + (Operation op) -> { + if (op.type().equals(VARIABLE_V2)) { + variables.add(op); + } + }); Output[] variableOutputArray = new Output[variables.size()]; for (int i = 0; i < variables.size(); i++) { @@ -124,9 +143,16 @@ public List> computeGradients(Operand loss) { return gradVarPairs; } + /** + * Applies gradients to variables + * + * @param gradsAndVars the list of (gradient, variable) pairs. + * @param name the name of the apply gradients operation + * @return an Op that applies the gradients to the variables. + */ public Op applyGradients(List> gradsAndVars, String name) { - List> variables = gradsAndVars.stream().map(GradAndVar::getVariable) - .collect(Collectors.toList()); + List> variables = + gradsAndVars.stream().map(GradAndVar::getVariable).collect(Collectors.toList()); createSlots(variables); @@ -144,7 +170,7 @@ public Op applyGradients(List> gradsAndVars, String /** * Gets the slot associated with the specified variable and slot name. * - * @param var The variable to lookup. + * @param var The variable to lookup. * @param slotName The slot name. * @return The slot or {@link Optional#empty}. */ @@ -155,7 +181,7 @@ public Optional> getSlot(Output var, String slo /** * Gets the slot associated with the specified variable and slot name. * - * @param varName The variable to lookup. + * @param varName The variable to lookup. * @param slotName The slot name. * @return The slot or {@link Optional#empty}. */ @@ -165,7 +191,7 @@ private Optional> getSlot(String varName, String s Variable slot = variables.get(varName); if (slot != null) { @SuppressWarnings("unchecked") // This method should only be called when the type is known. - Optional> opt = Optional.of((Variable) slot); + Optional> opt = Optional.of((Variable) slot); return opt; } return Optional.empty(); @@ -177,25 +203,25 @@ private Optional> getSlot(String varName, String s * Creates a slot in the graph for the specified variable with the specified name. Adds the slot's * initializer to the graph's initializers, and the slot to the Optimizer's slot map. * - * @param variable The variable to create the slot for. - * @param slotName The name of the slot. + * @param variable The variable to create the slot for. + * @param slotName The name of the slot. * @param initializer The initializer for the slot. - * @param The type of the variable. + * @param The type of the variable. */ - protected void createSlot(Output variable, String slotName, - Operand initializer) { - Variable slot = tf.withName(createName(variable, slotName)) - .variable(variable.shape(), variable.dataType()); + protected void createSlot( + Output variable, String slotName, Operand initializer) { + Variable slot = + tf.withName(createName(variable, slotName)).variable(variable.shape(), variable.dataType()); Assign slotInit = tf.assign(slot, initializer); graph.addInitializer(slotInit); String varName = variable.op().name(); - Map> variables = slots - .computeIfAbsent(slotName, (k) -> new HashMap<>()); + Map> variables = + slots.computeIfAbsent(slotName, (k) -> new HashMap<>()); variables.put(varName, slot); } /** - * No-op prepare method. + * Returns a No-op prepare. * * @param scopeName The scope name to use for any variable creations. */ @@ -204,13 +230,19 @@ protected Optional prepare(String scopeName) { } /** - * No-op slot creation method. + * Performs a No-op slot creation method. * * @param variables The variables to create slots for. */ - protected void createSlots(List> variables) { - } + protected void createSlots(List> variables) {} + /** + * Generates the gradient update operations for the specific variable and gradient. + * + * @param gradVarPair the list of (gradient, variable) pairs. + * @param the datatype of the gradients and variables. + * @return An operand which applies the desired optimizer update to the variable. + */ private Op applyDense(GradAndVar gradVarPair) { return applyDense(gradVarPair.getGradient(), gradVarPair.getVariable()); } @@ -220,7 +252,7 @@ private Op applyDense(GradAndVar gradVarPair) { * * @param gradient The gradient to use. * @param variable The variable to update. - * @param The type of the variable. + * @param The type of the variable. * @return An operand which applies the desired optimizer update to the variable. */ protected abstract Op applyDense(Output gradient, Output variable); @@ -229,7 +261,7 @@ private Op applyDense(GradAndVar gradVarPair) { * Gathers up the update operations into a single op that can be used as a run target. * * @param updateOperations The update operations. - * @param name The name of the run target. + * @param name The name of the run target. * @return A NoOp with a control dependency on each update operation. */ protected Op finish(List updateOperations, String name) { @@ -240,25 +272,24 @@ protected Op finish(List updateOperations, String name) { } /** - * Name of the optimizer. + * Get the Name of the optimizer. * * @return The optimizer name. */ public abstract String getOptimizerName(); - /** - * Optional attributes for {@link org.tensorflow.training.optimizers.Optimizer} - */ + /** Optional attributes for {@link org.tensorflow.framework.optimizers.Optimizer} */ public static class Options { protected String sharedName; - private Options() { - } + private Options() {} /** + * Sets the shared name + * * @param sharedName If non-empty, this variable is named in the given bucket with this - * shared_name. Otherwise, the node name is used instead. + * shared_name. Otherwise, the node name is used instead. */ public Optimizer.Options sharedName(String sharedName) { this.sharedName = sharedName; @@ -266,20 +297,41 @@ public Optimizer.Options sharedName(String sharedName) { } } + /** + * A class that holds a paired gradient and variable. + * + * @param the data type for the gradient and variable + */ public static class GradAndVar { private final Output gradient; private final Output variable; + /** + * Creates a Gradient and Variable pair + * + * @param gradient the gradient + * @param variable the variable + */ public GradAndVar(Output gradient, Output variable) { this.gradient = gradient; this.variable = variable; } + /** + * Gets the gradient + * + * @return the gradient + */ public Output getGradient() { return gradient; } + /** + * Gets the variable + * + * @return the variable + */ public Output getVariable() { return variable; } diff --git a/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/Optimizers.java b/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/Optimizers.java new file mode 100644 index 00000000000..7099a050d3e --- /dev/null +++ b/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/Optimizers.java @@ -0,0 +1,41 @@ +package org.tensorflow.framework.optimizers; + +import org.tensorflow.Graph; + +import java.util.function.Function; + +/** Enumerator used to create a new Optimizer with default parameters. */ +public enum Optimizers { + ADADELTA(AdaDelta::new), + ADAGRAD(AdaGrad::new), + ADAGRAD_DA(AdaGradDA::new), + ADAM(Adam::new), + ADAMAX(Adamax::new), + FTRL(Ftrl::new), + NADAM(Nadam::new), + RMSPROP(RMSProp::new), + MOMENTUM(Momentum::new), + GRADIENT_DESCENT(Momentum::new); + + private final Function creator; + + /** + * Creates an Optimizers enum + * + * @param creator the lambda function that accepts a Graph argument used to create the default + * Optimizer + */ + Optimizers(Function creator) { + this.creator = creator; + } + + /** + * Creates an Optimizer with default settings. + * + * @param graph the TensorFlow Graph + * @return the Optimizer + */ + public Optimizer createOptimizer(Graph graph) { + return creator.apply(graph); + } +} diff --git a/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/RMSProp.java b/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/RMSProp.java index cc64a23de3d..8b71558e549 100644 --- a/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/RMSProp.java +++ b/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/RMSProp.java @@ -15,7 +15,6 @@ */ package org.tensorflow.framework.optimizers; -import java.util.List; import org.tensorflow.Graph; import org.tensorflow.Operand; import org.tensorflow.Output; @@ -23,14 +22,36 @@ import org.tensorflow.op.core.Variable; import org.tensorflow.types.family.TType; +import java.util.List; + /** * Optimizer that implements the RMSProp algorithm. - *

    - * See the lecture - * notes that is inexplicably the canonical reference. + * + *

    The gist of RMSprop is to: + *

  • Maintain a moving (discounted) average of the square of gradients + *
  • Divide the gradient by the root of this average + * + *

    + * + *

    This implementation of RMSprop uses plain momentum, not Nesterov momentum. + * + *

    + * + *

    The centered version additionally maintains a moving average of the gradients, and uses + * that average to estimate the variance. + * + *

    + * + * @see Hinton G, + * et al. 2012, lecture notes that is inexplicably the canonical reference. */ public class RMSProp extends Optimizer { + public static final float LEARNING_RATE_DEFAULT = 0.001f; + public static final float DECAY_DEFAULT = 0.9f; + public static final float MOMENTUM_DEFAULT = 0.0f; + public static final float EPSILON_DEFAULT = 1e-10f; + public static final boolean CENTERED_DEFAULT = false; public static final String RMS = "rms"; public static final String MG = "mg"; // mean gradient? public static final String MOMENTUM = "momentum"; @@ -41,11 +62,50 @@ public class RMSProp extends Optimizer { private final float epsilon; private final boolean centered; + /** + * Creates an RMSPRrop Optimizer + * + * @param graph the TensorFlow Graph + */ + public RMSProp(Graph graph) { + this( + graph, + LEARNING_RATE_DEFAULT, + DECAY_DEFAULT, + MOMENTUM_DEFAULT, + EPSILON_DEFAULT, + CENTERED_DEFAULT); + } + + /** + * Creates an RMSPRrop Optimizer + * + * @param graph the TensorFlow Graph + * @param learningRate the learning rate + */ public RMSProp(Graph graph, float learningRate) { - this(graph, learningRate, 0.9f, 0.0f, 1e-10f, false); + this(graph, learningRate, DECAY_DEFAULT, MOMENTUM_DEFAULT, EPSILON_DEFAULT, CENTERED_DEFAULT); } - public RMSProp(Graph graph, float learningRate, float decay, float momentum, float epsilon, + /** + * Creates an RMSPRrop Optimizer + * + * @param graph the TensorFlow Graph + * @param learningRate the learning rate + * @param decay Discounting factor for the history/coming gradient. Defaults to 0.9. + * @param momentum the acceleration factor, default is 0. + * @param epsilon A small constant for numerical stability + * @param centered If true, gradients are normalized by the estimated variance of the + * gradient; if false>, by the uncentered second moment. Setting this to + * true> may help with training, but is slightly more expensive in terms of computation + * and memory. Defaults to false. + */ + public RMSProp( + Graph graph, + float learningRate, + float decay, + float momentum, + float epsilon, boolean centered) { super(graph); this.learningRate = learningRate; @@ -55,11 +115,45 @@ public RMSProp(Graph graph, float learningRate, float decay, float momentum, flo this.centered = centered; } + /** + * Creates an RMSPRrop Optimizer + * + * @param graph the TensorFlow Graph + * @param name the name of this Optimizer. Defaults to "RMSProp". + * @param learningRate the learning rate + */ public RMSProp(Graph graph, String name, float learningRate) { - this(graph, name, learningRate, 0.9f, 0.0f, 1e-10f, false); + this( + graph, + name, + learningRate, + DECAY_DEFAULT, + MOMENTUM_DEFAULT, + EPSILON_DEFAULT, + CENTERED_DEFAULT); } - public RMSProp(Graph graph, String name, float learningRate, float decay, float momentum, float epsilon, + /** + * Creates an RMSPRrop Optimizer + * + * @param graph the TensorFlow Graph + * @param name the name of this Optimizer. Defaults to "RMSProp". + * @param learningRate the learning rate + * @param decay Discounting factor for the history/coming gradient. Defaults to 0.9. + * @param momentum The acceleration factor, default is 0. + * @param epsilon A small constant for numerical stability + * @param centered If true, gradients are normalized by the estimated variance of the + * gradient; if false>, by the uncentered second moment. Setting this to + * true> may help with training, but is slightly more expensive in terms of computation + * and memory. Defaults to false. + */ + public RMSProp( + Graph graph, + String name, + float learningRate, + float decay, + float momentum, + float epsilon, boolean centered) { super(graph, name); this.learningRate = learningRate; @@ -69,6 +163,7 @@ public RMSProp(Graph graph, String name, float learningRate, float decay, float this.centered = centered; } + /** {@inheritDoc} */ @Override protected void createSlots(List> variables) { for (Output v : variables) { @@ -76,34 +171,50 @@ protected void createSlots(List> variables) { } } + + /** + * Creates the RMSProp Slots for Root Mean Squared (RMS), + * MOMENTUM, and Mean Gradient (MG) + * + * @param v the variable to install in the slot + * @param the datatype of the variable. + */ private void createRMSPropSlot(Output v) { - Operand rmsInitializer = tf - .fill(tf.shape(v), tf.dtypes.cast(tf.constant(1.0f), v.dataType())); + Operand rmsInitializer = + tf.fill(tf.shape(v), tf.dtypes.cast(tf.constant(1.0f), v.dataType())); createSlot(v.asOutput(), RMS, rmsInitializer); - Operand momentumInitializer = tf - .fill(tf.shape(v), tf.dtypes.cast(tf.constant(0.0f), v.dataType())); + Operand momentumInitializer = + tf.fill(tf.shape(v), tf.dtypes.cast(tf.constant(0.0f), v.dataType())); createSlot(v.asOutput(), MOMENTUM, momentumInitializer); if (centered) { - Operand mgInitializer = tf - .fill(tf.shape(v), tf.dtypes.cast(tf.constant(0.0f), v.dataType())); + Operand mgInitializer = + tf.fill(tf.shape(v), tf.dtypes.cast(tf.constant(0.0f), v.dataType())); createSlot(v.asOutput(), MG, mgInitializer); } } + /** {@inheritDoc} */ @Override protected Op applyDense(Output gradient, Output variable) { Variable rmsSlot = getSlot(variable, RMS).get(); Variable momentumSlot = getSlot(variable, MOMENTUM).get(); if (centered) { Variable mgSlot = getSlot(variable, MG).get(); - return tf.train.applyCenteredRmsProp(variable, mgSlot, rmsSlot, momentumSlot, + return tf.train.applyCenteredRmsProp( + variable, + mgSlot, + rmsSlot, + momentumSlot, tf.dtypes.cast(tf.constant(learningRate), gradient.dataType()), tf.dtypes.cast(tf.constant(decay), gradient.dataType()), tf.dtypes.cast(tf.constant(momentum), gradient.dataType()), tf.dtypes.cast(tf.constant(epsilon), gradient.dataType()), gradient); } - return tf.train.applyRmsProp(variable, rmsSlot, momentumSlot, + return tf.train.applyRmsProp( + variable, + rmsSlot, + momentumSlot, tf.dtypes.cast(tf.constant(learningRate), gradient.dataType()), tf.dtypes.cast(tf.constant(decay), gradient.dataType()), tf.dtypes.cast(tf.constant(momentum), gradient.dataType()), @@ -111,17 +222,24 @@ protected Op applyDense(Output gradient, Output variable gradient); } + /** {@inheritDoc} */ @Override public String toString() { - return "RMSProp{" + - "learningRate=" + learningRate + - ", decay=" + decay + - ", momentum=" + momentum + - ", epsilon=" + epsilon + - ", centered=" + centered + - '}'; + return "RMSProp{" + + "learningRate=" + + learningRate + + ", decay=" + + decay + + ", momentum=" + + momentum + + ", epsilon=" + + epsilon + + ", centered=" + + centered + + '}'; } + /** {@inheritDoc} */ @Override public String getOptimizerName() { return "RMSProp"; From 5c30a72fa335f338727358b4299e4796a211403d Mon Sep 17 00:00:00 2001 From: Jim Clarke Date: Wed, 9 Sep 2020 16:17:16 -0400 Subject: [PATCH 30/33] Removed optimize classes from tensorflow-keras, moved optimizer test cases to framework. Created Tests for GradientDescent and Momentum --- .../framework}/optimizers/AdaDeltaTest.java | 38 +- .../framework}/optimizers/AdaGradDATest.java | 9 +- .../framework}/optimizers/AdaGradTest.java | 11 +- .../framework}/optimizers/AdamTest.java | 12 +- .../framework}/optimizers/AdamaxTest.java | 23 +- .../framework}/optimizers/FtrlTest.java | 22 +- .../optimizers/GradientDescentTest.java | 100 +++++ .../framework/optimizers/MomentumTest.java | 22 +- .../framework}/optimizers/NadamTest.java | 25 +- .../framework/optimizers/OptimizersTest.java | 145 +++++++ .../framework}/optimizers/RMSPropTest.java | 13 +- .../framework}/utils/EagerTestSession.java | 30 +- .../framework}/utils/GraphTestSession.java | 35 +- .../org/tensorflow/framework}/utils/ND.java | 38 +- .../framework}/utils/TestSession.java | 30 +- .../tensorflow/keras/optimizers/AdaDelta.java | 200 --------- .../tensorflow/keras/optimizers/AdaGrad.java | 167 -------- .../keras/optimizers/AdaGradDA.java | 196 --------- .../org/tensorflow/keras/optimizers/Adam.java | 182 -------- .../tensorflow/keras/optimizers/Adamax.java | 283 ------------- .../tensorflow/keras/optimizers/Nadam.java | 399 ------------------ .../keras/optimizers/OptimizerInterface.java | 61 --- .../keras/optimizers/Optimizers.java | 125 ------ .../tensorflow/keras/optimizers/RMSProp.java | 201 --------- .../org/tensorflow/keras/optimizers/SGD.java | 200 --------- 25 files changed, 389 insertions(+), 2178 deletions(-) rename {tensorflow-keras/src/test/java/org/tensorflow/keras => tensorflow-framework/src/test/java/org/tensorflow/framework}/optimizers/AdaDeltaTest.java (85%) rename {tensorflow-keras/src/test/java/org/tensorflow/keras => tensorflow-framework/src/test/java/org/tensorflow/framework}/optimizers/AdaGradDATest.java (93%) rename {tensorflow-keras/src/test/java/org/tensorflow/keras => tensorflow-framework/src/test/java/org/tensorflow/framework}/optimizers/AdaGradTest.java (94%) rename {tensorflow-keras/src/test/java/org/tensorflow/keras => tensorflow-framework/src/test/java/org/tensorflow/framework}/optimizers/AdamTest.java (96%) rename {tensorflow-keras/src/test/java/org/tensorflow/keras => tensorflow-framework/src/test/java/org/tensorflow/framework}/optimizers/AdamaxTest.java (91%) rename {tensorflow-keras/src/test/java/org/tensorflow/keras => tensorflow-framework/src/test/java/org/tensorflow/framework}/optimizers/FtrlTest.java (95%) create mode 100644 tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/GradientDescentTest.java rename tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/SGDTest.java => tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/MomentumTest.java (92%) rename {tensorflow-keras/src/test/java/org/tensorflow/keras => tensorflow-framework/src/test/java/org/tensorflow/framework}/optimizers/NadamTest.java (90%) create mode 100644 tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/OptimizersTest.java rename {tensorflow-keras/src/test/java/org/tensorflow/keras => tensorflow-framework/src/test/java/org/tensorflow/framework}/optimizers/RMSPropTest.java (96%) rename {tensorflow-keras/src/test/java/org/tensorflow/keras => tensorflow-framework/src/test/java/org/tensorflow/framework}/utils/EagerTestSession.java (97%) rename {tensorflow-keras/src/test/java/org/tensorflow/keras => tensorflow-framework/src/test/java/org/tensorflow/framework}/utils/GraphTestSession.java (98%) rename {tensorflow-keras/src/test/java/org/tensorflow/keras => tensorflow-framework/src/test/java/org/tensorflow/framework}/utils/ND.java (96%) rename {tensorflow-keras/src/test/java/org/tensorflow/keras => tensorflow-framework/src/test/java/org/tensorflow/framework}/utils/TestSession.java (98%) delete mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/AdaDelta.java delete mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/AdaGrad.java delete mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/AdaGradDA.java delete mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/Adam.java delete mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/Adamax.java delete mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/Nadam.java delete mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/OptimizerInterface.java delete mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/Optimizers.java delete mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/RMSProp.java delete mode 100644 tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/SGD.java diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaDeltaTest.java b/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/AdaDeltaTest.java similarity index 85% rename from tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaDeltaTest.java rename to tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/AdaDeltaTest.java index 52de6b6b0e1..5c4ce542c65 100644 --- a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaDeltaTest.java +++ b/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/AdaDeltaTest.java @@ -12,11 +12,12 @@ See the License for the specific language governing permissions and limitations under the License. =======================================================================*/ -package org.tensorflow.keras.optimizers; +package org.tensorflow.framework.optimizers; import org.junit.jupiter.api.*; +import org.tensorflow.Graph; import org.tensorflow.framework.optimizers.Optimizer.GradAndVar; -import org.tensorflow.keras.utils.TestSession; +import org.tensorflow.framework.utils.TestSession; import org.tensorflow.ndarray.Shape; import org.tensorflow.op.Op; import org.tensorflow.op.Ops; @@ -55,10 +56,10 @@ public void tearDown() {} @Test public void testConstructAdadeltaWithLR() { try (TestSession session = TestSession.createTestSession(tfMode)) { - Ops tf = session.getTF(); - AdaDelta opt = new AdaDelta(tf, 1.0F, 0.9F, 1.F); - AdaDelta opt2 = new AdaDelta(tf, 0.1F, 0.9F, 1.F); - AdaDelta opt3 = new AdaDelta(tf, 0.1F, 0.9F, 1e-8F); + Graph graph = session.getGraph(); + AdaDelta opt = new AdaDelta(graph, 1.0F, 0.9F, 1.F); + AdaDelta opt2 = new AdaDelta(graph, 0.1F, 0.9F, 1.F); + AdaDelta opt3 = new AdaDelta(graph, 0.1F, 0.9F, 1e-8F); String format = "AdaDelta{learningRate=%s, rho=%s, epsilon=%s}"; String optExpected = String.format(format, 1.0F, 0.9F, 1.F); String opt2Expected = String.format(format, 0.1F, 0.9F, 1.F); @@ -74,28 +75,6 @@ public void testConstructAdadeltaWithLR() { } } - @Test - public void testConstructOptions() { - try (TestSession session = TestSession.createTestSession(tfMode)) { - Ops tf = session.getTF(); - AdaDelta.Options options = - AdaDelta.Options.builder() - .name("myAdaDelta") - .learningRate(1.0F) - .rho(0.9F) - .epsilon(1.F) - .build(); - AdaDelta opt = new AdaDelta(tf, options); - - String format = "AdaDelta{learningRate=%s, rho=%s, epsilon=%s}"; - String optExpected = String.format(format, 1.0F, 0.9F, 1.F); - - String optString = opt.toString(); - - assertEquals(optExpected, optString); - } - } - @Test public void testBasic() { int numUpdates = 4; // # number of ADADELTA steps to perform @@ -105,6 +84,7 @@ public void testBasic() { for (float lr : lrs) { try (TestSession session = TestSession.createTestSession(tfMode)) { Ops tf = session.getTF(); + Graph graph = session.getGraph(); float[] var0Init = {1.0F, 2.0F}; float[] var1Init = {3.0F, 4.0F}; float[] fgrads = {grad, grad}; @@ -128,7 +108,7 @@ public void testBasic() { gradsAndVars.add(new GradAndVar<>(cgrads.asOutput(), var1.asOutput())); /* get the Optimizer */ - AdaDelta adaDelta = new AdaDelta(tf, lr, rho, epsilon); + AdaDelta adaDelta = new AdaDelta(graph, lr, rho, epsilon); /*apply gradients */ Op adadeltaUpdate = adaDelta.applyGradients(gradsAndVars, "AdaDeltaTest"); diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaGradDATest.java b/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/AdaGradDATest.java similarity index 93% rename from tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaGradDATest.java rename to tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/AdaGradDATest.java index 7275e9f8113..e1a12fb00fe 100644 --- a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaGradDATest.java +++ b/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/AdaGradDATest.java @@ -12,11 +12,11 @@ See the License for the specific language governing permissions and limitations under the License. =======================================================================*/ -package org.tensorflow.keras.optimizers; +package org.tensorflow.framework.optimizers; import org.junit.jupiter.api.*; -import org.tensorflow.framework.optimizers.Optimizer; -import org.tensorflow.keras.utils.TestSession; +import org.tensorflow.Graph; +import org.tensorflow.framework.utils.TestSession; import org.tensorflow.ndarray.Shape; import org.tensorflow.op.Op; import org.tensorflow.op.Ops; @@ -56,6 +56,7 @@ public void testBasic() { float[] grads1Init = {0.01F, 0.02F}; try (TestSession session = TestSession.createTestSession(tfMode)) { Ops tf = session.getTF(); + Graph graph = session.getGraph(); Shape shape0 = Shape.of(var0Init.length); Shape shape1 = Shape.of(var1Init.length); @@ -75,7 +76,7 @@ public void testBasic() { float learningRate = 3.0F; - AdaGrad instance = new AdaGrad(tf, learningRate); + AdaGrad instance = new AdaGrad(graph, learningRate); /* build the GradsAnvVars */ List> gradsAndVars = new ArrayList<>(); diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaGradTest.java b/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/AdaGradTest.java similarity index 94% rename from tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaGradTest.java rename to tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/AdaGradTest.java index d407209b87a..efbdd7be585 100644 --- a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdaGradTest.java +++ b/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/AdaGradTest.java @@ -12,12 +12,12 @@ See the License for the specific language governing permissions and limitations under the License. =======================================================================*/ -package org.tensorflow.keras.optimizers; +package org.tensorflow.framework.optimizers; import org.junit.jupiter.api.*; -import org.tensorflow.framework.optimizers.Optimizer; -import org.tensorflow.keras.utils.ND; -import org.tensorflow.keras.utils.TestSession; +import org.tensorflow.Graph; +import org.tensorflow.framework.utils.ND; +import org.tensorflow.framework.utils.TestSession; import org.tensorflow.ndarray.FloatNdArray; import org.tensorflow.ndarray.NdArrays; import org.tensorflow.ndarray.Shape; @@ -72,6 +72,7 @@ public void testBasic() { try (TestSession session = TestSession.createTestSession(tfMode)) { Ops tf = session.getTF(); + Graph graph = session.getGraph(); Shape shape0 = Shape.of(var0Init.length); Shape shape1 = Shape.of(var1Init.length); @@ -86,7 +87,7 @@ public void testBasic() { float learningRate = 3.0F; - AdaGrad instance = new AdaGrad(tf, learningRate); + AdaGrad instance = new AdaGrad(graph, learningRate); /* build the GradsAnvVars */ List> gradsAndVars = new ArrayList<>(); diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdamTest.java b/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/AdamTest.java similarity index 96% rename from tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdamTest.java rename to tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/AdamTest.java index 82a47afbbbb..dbcc7c0dae2 100644 --- a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdamTest.java +++ b/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/AdamTest.java @@ -12,13 +12,13 @@ See the License for the specific language governing permissions and limitations under the License. =======================================================================*/ -package org.tensorflow.keras.optimizers; +package org.tensorflow.framework.optimizers; import org.junit.jupiter.api.*; +import org.tensorflow.Graph; import org.tensorflow.Tensor; -import org.tensorflow.framework.optimizers.Optimizer; -import org.tensorflow.keras.utils.ND; -import org.tensorflow.keras.utils.TestSession; +import org.tensorflow.framework.utils.ND; +import org.tensorflow.framework.utils.TestSession; import org.tensorflow.ndarray.FloatNdArray; import org.tensorflow.ndarray.NdArrays; import org.tensorflow.ndarray.Shape; @@ -70,7 +70,7 @@ public void testBasic() { try (TestSession session = TestSession.createTestSession(tfMode)) { Ops tf = session.getTF(); - + Graph graph = session.getGraph(); session.setEpsilon(epsilon1); Shape shape0 = Shape.of(var0Init.length); @@ -97,7 +97,7 @@ public void testBasic() { gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); - Adam instance = new Adam(tf, learningRate); + Adam instance = new Adam(graph, learningRate); Op update = instance.applyGradients(gradsAndVars, "AdamTest"); diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdamaxTest.java b/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/AdamaxTest.java similarity index 91% rename from tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdamaxTest.java rename to tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/AdamaxTest.java index 3376d65aab4..1b12a2f76a1 100644 --- a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/AdamaxTest.java +++ b/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/AdamaxTest.java @@ -12,13 +12,13 @@ See the License for the specific language governing permissions and limitations under the License. =======================================================================*/ -package org.tensorflow.keras.optimizers; +package org.tensorflow.framework.optimizers; import org.junit.jupiter.api.*; +import org.tensorflow.Graph; import org.tensorflow.Tensor; -import org.tensorflow.framework.optimizers.Optimizer; -import org.tensorflow.keras.utils.ND; -import org.tensorflow.keras.utils.TestSession; +import org.tensorflow.framework.utils.ND; +import org.tensorflow.framework.utils.TestSession; import org.tensorflow.ndarray.FloatNdArray; import org.tensorflow.ndarray.NdArrays; import org.tensorflow.ndarray.Shape; @@ -34,7 +34,7 @@ import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.tensorflow.keras.optimizers.Adamax.*; +import static org.tensorflow.framework.optimizers.Adamax.*; /** Test cases for Adamax Optimizer */ public class AdamaxTest { @@ -62,8 +62,8 @@ public void tearDown() {} @Test public void testGetOptimizerName() { try (TestSession session = TestSession.createTestSession(tfMode)) { - Ops tf = session.getTF(); - Adamax instance = new Adamax(tf); + Graph graph = session.getGraph(); + Adamax instance = new Adamax(graph); String expResult = "Adamax"; String result = instance.getOptimizerName(); assertEquals(expResult, result); @@ -95,6 +95,7 @@ public void testBasic() { try (TestSession session = TestSession.createTestSession(tfMode)) { Ops tf = session.getTF(); + Graph graph = session.getGraph(); Shape shape0 = Shape.of(var0Init.length); Shape shape1 = Shape.of(var1Init.length); @@ -111,11 +112,11 @@ public void testBasic() { session.run(var0Initializer); session.run(var1Initializer); - Adamax instance = new Adamax(tf); + Adamax instance = new Adamax(graph); /* build the GradsAnvVars */ - List> gradsAndVars = new ArrayList<>(); - gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); - gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); + List> gradsAndVars = new ArrayList<>(); + gradsAndVars.add(new GradAndVar<>(grads0.asOutput(), var0.asOutput())); + gradsAndVars.add(new GradAndVar<>(grads1.asOutput(), var1.asOutput())); Op update = instance.applyGradients(gradsAndVars, "AdamTest"); diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/FtrlTest.java b/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/FtrlTest.java similarity index 95% rename from tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/FtrlTest.java rename to tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/FtrlTest.java index cda32704506..597f8e52bcd 100644 --- a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/FtrlTest.java +++ b/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/FtrlTest.java @@ -12,11 +12,11 @@ See the License for the specific language governing permissions and limitations under the License. =======================================================================*/ -package org.tensorflow.keras.optimizers; +package org.tensorflow.framework.optimizers; import org.junit.jupiter.api.*; -import org.tensorflow.framework.optimizers.Optimizer; -import org.tensorflow.keras.utils.TestSession; +import org.tensorflow.Graph; +import org.tensorflow.framework.utils.TestSession; import org.tensorflow.ndarray.Shape; import org.tensorflow.op.Op; import org.tensorflow.op.Ops; @@ -53,8 +53,8 @@ public void tearDown() {} @Test public void testGetOptimizerName() { try (TestSession session = TestSession.createTestSession(tfMode)) { - Ops tf = session.getTF(); - Ftrl instance = new Ftrl(tf); + Graph graph = session.getGraph(); + Ftrl instance = new Ftrl(graph); String expResult = "Ftrl"; String result = instance.getOptimizerName(); assertEquals(expResult, result); @@ -72,6 +72,7 @@ public void testFtrlWithL1L2L2Shrinkage() { try (TestSession session = TestSession.createTestSession(tfMode)) { Ops tf = session.getTF(); + Graph graph = session.getGraph(); Shape shape0 = Shape.of(var0Init.length); Shape shape1 = Shape.of(var1Init.length); @@ -88,7 +89,7 @@ public void testFtrlWithL1L2L2Shrinkage() { Ftrl instance = new Ftrl( - tf, + graph, learningRate, -0.5F, // learningRatePower 0.1F, // initialAccumulatorValue @@ -136,6 +137,7 @@ public void testFtrlWithL1() { try (TestSession session = TestSession.createTestSession(tfMode)) { Ops tf = session.getTF(); + Graph graph = session.getGraph(); Shape shape0 = Shape.of(var0Init.length); Shape shape1 = Shape.of(var1Init.length); @@ -152,7 +154,7 @@ public void testFtrlWithL1() { Ftrl instance = new Ftrl( - tf, + graph, learningRate, Ftrl.LEARNING_RATE_POWER_DEFAULT, // learningRatePower 0.1F, // initialAccumulatorValue @@ -201,6 +203,7 @@ public void testFtrlWithL1L2() { try (TestSession session = TestSession.createTestSession(tfMode)) { Ops tf = session.getTF(); + Graph graph = session.getGraph(); Shape shape0 = Shape.of(var0Init.length); Shape shape1 = Shape.of(var1Init.length); @@ -217,7 +220,7 @@ public void testFtrlWithL1L2() { Ftrl instance = new Ftrl( - tf, + graph, learningRate, Ftrl.LEARNING_RATE_POWER_DEFAULT, // learningRatePower 0.1F, // initialAccumulatorValue @@ -266,6 +269,7 @@ public void doTestFtrlwithoutRegularization() { try (TestSession session = TestSession.createTestSession(tfMode)) { Ops tf = session.getTF(); + Graph graph = session.getGraph(); Shape shape0 = Shape.of(var0Init.length); Shape shape1 = Shape.of(var1Init.length); @@ -280,7 +284,7 @@ public void doTestFtrlwithoutRegularization() { float learningRate = 3.0F; - Ftrl instance = new Ftrl(tf, learningRate); + Ftrl instance = new Ftrl(graph, learningRate); /* build the GradsAnvVars */ List> gradsAndVars = new ArrayList<>(); diff --git a/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/GradientDescentTest.java b/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/GradientDescentTest.java new file mode 100644 index 00000000000..4362c54d815 --- /dev/null +++ b/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/GradientDescentTest.java @@ -0,0 +1,100 @@ +package org.tensorflow.framework.optimizers; + +import org.junit.jupiter.api.*; +import org.tensorflow.Graph; +import org.tensorflow.framework.utils.TestSession; +import org.tensorflow.ndarray.Shape; +import org.tensorflow.op.Op; +import org.tensorflow.op.Ops; +import org.tensorflow.op.core.Assign; +import org.tensorflow.op.core.Constant; +import org.tensorflow.op.core.Variable; +import org.tensorflow.types.TFloat32; +import org.tensorflow.types.family.TType; + +import java.util.ArrayList; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +/** Test cases for GradientDescent Optimizer */ +public class GradientDescentTest { + private final TestSession.Mode tfMode = TestSession.Mode.GRAPH; + + public GradientDescentTest() {} + + @BeforeAll + public static void setUpClass() {} + + @AfterAll + public static void tearDownClass() {} + + @BeforeEach + public void setUp() {} + + @AfterEach + public void tearDown() {} + + /** Test of getOptimizerName method, of class Nadam. */ + @Test + public void testGetOptimizerName() { + try (TestSession session = TestSession.createTestSession(tfMode)) { + Graph graph = session.getGraph(); + GradientDescent instance = new GradientDescent(graph); + String expResult = "GradientDescent"; + String result = instance.getOptimizerName(); + assertEquals(expResult, result); + } + } + + @Test + public void testBasic() { + float[] var0Init = {1.0F, 2.0F}; + float[] var1Init = {3.0F, 4.0F}; + float[] grads0Init = {0.1F, 0.1F}; + float[] grads1Init = {0.01F, 0.01F}; + float learningRate = 3.0F; + + try (TestSession session = TestSession.createTestSession(tfMode)) { + Ops tf = session.getTF(); + Graph graph = session.getGraph(); + + Shape shape0 = Shape.of(var0Init.length); + Shape shape1 = Shape.of(var1Init.length); + Variable var0 = tf.withName("var0").variable(shape0, TFloat32.DTYPE); + Variable var1 = tf.withName("var1").variable(shape1, TFloat32.DTYPE); + + Assign var0Initializer = tf.assign(var0, tf.constant(var0Init)); + Assign var1Initializer = tf.assign(var1, tf.constant(var1Init)); + + Constant grads0 = tf.constant(grads0Init); + Constant grads1 = tf.constant(grads1Init); + + /* build the GradsAnvVars */ + List> gradsAndVars = new ArrayList<>(); + gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); + gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); + + GradientDescent instance = new GradientDescent(graph, learningRate); + Op update = instance.applyGradients(gradsAndVars, "SGDTest"); + + /* initialize the local variables */ + session.run(var0Initializer); + session.run(var1Initializer); + + /* initialize the accumulators */ + session.run(tf.init()); + + /* make sure the variables were initialized properly */ + session.evaluate(var0Init, var0); + session.evaluate(var1Init, var1); + + session.run(update); // 1 step + + float[] expectedVar0 = {1.0F - 3.0F * 0.1F, 2.0F - 3.0F * 0.1F}; + float[] expectedVar1 = {3.0F - 3.0F * 0.01F, 4.0F - 3.0F * 0.01F}; + session.evaluate(expectedVar0, var0); + session.evaluate(expectedVar1, var1); + } + } +} diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/SGDTest.java b/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/MomentumTest.java similarity index 92% rename from tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/SGDTest.java rename to tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/MomentumTest.java index a8e363b4332..bcfff97773d 100644 --- a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/SGDTest.java +++ b/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/MomentumTest.java @@ -12,11 +12,11 @@ See the License for the specific language governing permissions and limitations under the License. =======================================================================*/ -package org.tensorflow.keras.optimizers; +package org.tensorflow.framework.optimizers; import org.junit.jupiter.api.*; -import org.tensorflow.framework.optimizers.Optimizer; -import org.tensorflow.keras.utils.TestSession; +import org.tensorflow.Graph; +import org.tensorflow.framework.utils.TestSession; import org.tensorflow.ndarray.Shape; import org.tensorflow.op.Op; import org.tensorflow.op.Ops; @@ -33,11 +33,11 @@ import static org.tensorflow.framework.optimizers.Momentum.MOMENTUM; /** Test cases for SGD Optimizer */ -public class SGDTest { +public class MomentumTest { private final TestSession.Mode tfMode = TestSession.Mode.GRAPH; - public SGDTest() {} + public MomentumTest() {} @BeforeAll public static void setUpClass() {} @@ -55,9 +55,9 @@ public void tearDown() {} @Test public void testGetOptimizerName() { try (TestSession session = TestSession.createTestSession(tfMode)) { - Ops tf = session.getTF(); - SGD instance = new SGD(tf); - String expResult = "SGD"; + Graph graph = session.getGraph(); + Momentum instance = new Momentum(graph); + String expResult = "Momentum"; String result = instance.getOptimizerName(); assertEquals(expResult, result); } @@ -73,6 +73,7 @@ public void testBasic() { try (TestSession session = TestSession.createTestSession(tfMode)) { Ops tf = session.getTF(); + Graph graph = session.getGraph(); Shape shape0 = Shape.of(var0Init.length); Shape shape1 = Shape.of(var1Init.length); @@ -90,7 +91,7 @@ public void testBasic() { gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); - SGD instance = new SGD(tf, learningRate); + Momentum instance = new Momentum(graph, learningRate); Op update = instance.applyGradients(gradsAndVars, "SGDTest"); /* initialize the local variables */ @@ -125,6 +126,7 @@ public void testMomentum() { try (TestSession session = TestSession.createTestSession(tfMode)) { Ops tf = session.getTF(); + Graph graph = session.getGraph(); Shape shape0 = Shape.of(var0Init.length); Shape shape1 = Shape.of(var1Init.length); @@ -142,7 +144,7 @@ public void testMomentum() { gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); - SGD instance = new SGD(tf, learningRate, momentum); + Momentum instance = new Momentum(graph, learningRate, momentum); Op update = instance.applyGradients(gradsAndVars, "SGDTest"); Variable momentumSlot0 = instance.getSlot(var0.asOutput(), MOMENTUM).get(); diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/NadamTest.java b/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/NadamTest.java similarity index 90% rename from tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/NadamTest.java rename to tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/NadamTest.java index d720460b2f2..a583d74246b 100644 --- a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/NadamTest.java +++ b/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/NadamTest.java @@ -12,13 +12,13 @@ See the License for the specific language governing permissions and limitations under the License. =======================================================================*/ -package org.tensorflow.keras.optimizers; +package org.tensorflow.framework.optimizers; import org.junit.jupiter.api.*; +import org.tensorflow.Graph; import org.tensorflow.Tensor; -import org.tensorflow.framework.optimizers.Optimizer; -import org.tensorflow.keras.utils.ND; -import org.tensorflow.keras.utils.TestSession; +import org.tensorflow.framework.utils.ND; +import org.tensorflow.framework.utils.TestSession; import org.tensorflow.ndarray.FloatNdArray; import org.tensorflow.ndarray.NdArrays; import org.tensorflow.ndarray.Shape; @@ -34,8 +34,6 @@ import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.tensorflow.keras.optimizers.Nadam.FIRST_MOMENT; -import static org.tensorflow.keras.optimizers.Nadam.SECOND_MOMENT; /** Test cases for Nadam Optimizer */ public class NadamTest { @@ -65,8 +63,8 @@ public void tearDown() {} @Test public void testGetOptimizerName() { try (TestSession session = TestSession.createTestSession(tfMode)) { - Ops tf = session.getTF(); - Nadam instance = new Nadam(tf); + Graph graph = session.getGraph(); + Nadam instance = new Nadam(graph); String expResult = "Nadam"; String result = instance.getOptimizerName(); assertEquals(expResult, result); @@ -100,6 +98,7 @@ public void testBasic() { try (TestSession session = TestSession.createTestSession(tfMode)) { Ops tf = session.getTF(); + Graph graph = session.getGraph(); Shape shape0 = Shape.of(var0Init.length); Shape shape1 = Shape.of(var1Init.length); @@ -112,7 +111,7 @@ public void testBasic() { Constant grads0 = tf.constant(grads0Init); Constant grads1 = tf.constant(grads1Init); - Nadam instance = new Nadam(tf); + Nadam instance = new Nadam(graph); /* build the GradsAnvVars */ List> gradsAndVars = new ArrayList<>(); gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); @@ -124,16 +123,16 @@ public void testBasic() { Variable[] firstMomentSlots = new Variable[2]; Variable[] secondMomentSlots = new Variable[2]; - firstMomentSlots[0] = instance.getSlot(var0.asOutput(), FIRST_MOMENT).get(); + firstMomentSlots[0] = instance.getSlot(var0.asOutput(), Nadam.FIRST_MOMENT).get(); assertEquals(firstMomentSlots[0].asOutput().shape(), var0.asOutput().shape()); - secondMomentSlots[0] = instance.getSlot(var0.asOutput(), SECOND_MOMENT).get(); + secondMomentSlots[0] = instance.getSlot(var0.asOutput(), Nadam.SECOND_MOMENT).get(); assertEquals(secondMomentSlots[0].asOutput().shape(), var0.asOutput().shape()); - firstMomentSlots[1] = instance.getSlot(var1.asOutput(), FIRST_MOMENT).get(); + firstMomentSlots[1] = instance.getSlot(var1.asOutput(), Nadam.FIRST_MOMENT).get(); assertEquals(firstMomentSlots[1].asOutput().shape(), var1.asOutput().shape()); - secondMomentSlots[1] = instance.getSlot(var1.asOutput(), SECOND_MOMENT).get(); + secondMomentSlots[1] = instance.getSlot(var1.asOutput(), Nadam.SECOND_MOMENT).get(); assertEquals(secondMomentSlots[1].asOutput().shape(), var1.asOutput().shape()); /* initialize the local variables */ diff --git a/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/OptimizersTest.java b/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/OptimizersTest.java new file mode 100644 index 00000000000..78b56c8289e --- /dev/null +++ b/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/OptimizersTest.java @@ -0,0 +1,145 @@ +package org.tensorflow.framework.optimizers; + +import org.junit.jupiter.api.*; +import org.tensorflow.Graph; +import org.tensorflow.framework.utils.TestSession; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class OptimizersTest { + private final TestSession.Mode tfMode = TestSession.Mode.GRAPH; + + public OptimizersTest() {} + + @BeforeAll + public static void setUpClass() {} + + @AfterAll + public static void tearDownClass() {} + + @BeforeEach + public void setUp() {} + + @AfterEach + public void tearDown() {} + + /** Test ADADELTA enum */ + @Test + public void testADADELTA() { + try (TestSession session = TestSession.createTestSession(tfMode)) { + Graph graph = session.getGraph(); + Optimizer instance = Optimizers.ADADELTA.createOptimizer(graph); + String expResult = "Adadelta"; + String result = instance.getOptimizerName(); + assertEquals(expResult, result); + } + } + + /** Test ADAGRAD enum */ + @Test + public void testADAGRAD() { + try (TestSession session = TestSession.createTestSession(tfMode)) { + Graph graph = session.getGraph(); + Optimizer instance = Optimizers.ADAGRAD.createOptimizer(graph); + String expResult = "Adagrad"; + String result = instance.getOptimizerName(); + assertEquals(expResult, result); + } + } + + /** Test ADAGRAD_DA enum */ + @Test + public void testADAGRAD_DA() { + try (TestSession session = TestSession.createTestSession(tfMode)) { + Graph graph = session.getGraph(); + Optimizer instance = Optimizers.ADAGRAD_DA.createOptimizer(graph); + String expResult = "adagrad-da"; + String result = instance.getOptimizerName(); + assertEquals(expResult, result); + } + } + + /** Test ADAM enum */ + @Test + public void testADAM() { + try (TestSession session = TestSession.createTestSession(tfMode)) { + Graph graph = session.getGraph(); + Optimizer instance = Optimizers.ADAM.createOptimizer(graph); + String expResult = "Adam"; + String result = instance.getOptimizerName(); + assertEquals(expResult, result); + } + } + + /** Test ADAMAX enum */ + @Test + public void testADAMAX() { + try (TestSession session = TestSession.createTestSession(tfMode)) { + Graph graph = session.getGraph(); + Optimizer instance = Optimizers.ADAMAX.createOptimizer(graph); + String expResult = "Adamax"; + String result = instance.getOptimizerName(); + assertEquals(expResult, result); + } + } + + /** Test FTRL enum */ + @Test + public void testFTRL() { + try (TestSession session = TestSession.createTestSession(tfMode)) { + Graph graph = session.getGraph(); + Optimizer instance = Optimizers.FTRL.createOptimizer(graph); + String expResult = "Ftrl"; + String result = instance.getOptimizerName(); + assertEquals(expResult, result); + } + } + + /** Test NADAM enum */ + @Test + public void testNADAM() { + try (TestSession session = TestSession.createTestSession(tfMode)) { + Graph graph = session.getGraph(); + Optimizer instance = Optimizers.NADAM.createOptimizer(graph); + String expResult = "Nadam"; + String result = instance.getOptimizerName(); + assertEquals(expResult, result); + } + } + + /** Test RMSPROP enum */ + @Test + public void testRMSPROP() { + try (TestSession session = TestSession.createTestSession(tfMode)) { + Graph graph = session.getGraph(); + Optimizer instance = Optimizers.RMSPROP.createOptimizer(graph); + String expResult = "RMSProp"; + String result = instance.getOptimizerName(); + assertEquals(expResult, result); + } + } + + /** Test MOMENTUM enum */ + @Test + public void testMOMENTUM() { + try (TestSession session = TestSession.createTestSession(tfMode)) { + Graph graph = session.getGraph(); + Optimizer instance = Optimizers.MOMENTUM.createOptimizer(graph); + String expResult = "Momentum"; + String result = instance.getOptimizerName(); + assertEquals(expResult, result); + } + } + + /** Test GRADIENT_DESCENT enum */ + @Test + public void testGRADIENT_DESCENT() { + try (TestSession session = TestSession.createTestSession(tfMode)) { + Graph graph = session.getGraph(); + Optimizer instance = Optimizers.GRADIENT_DESCENT.createOptimizer(graph); + String expResult = "GradientDescent"; + String result = instance.getOptimizerName(); + assertEquals(expResult, result); + } + } +} diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/RMSPropTest.java b/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/RMSPropTest.java similarity index 96% rename from tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/RMSPropTest.java rename to tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/RMSPropTest.java index 078288ed1e7..202fb21ef68 100644 --- a/tensorflow-keras/src/test/java/org/tensorflow/keras/optimizers/RMSPropTest.java +++ b/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/RMSPropTest.java @@ -12,12 +12,12 @@ See the License for the specific language governing permissions and limitations under the License. =======================================================================*/ -package org.tensorflow.keras.optimizers; +package org.tensorflow.framework.optimizers; import org.junit.jupiter.api.*; -import org.tensorflow.framework.optimizers.Optimizer; -import org.tensorflow.keras.utils.ND; -import org.tensorflow.keras.utils.TestSession; +import org.tensorflow.Graph; +import org.tensorflow.framework.utils.ND; +import org.tensorflow.framework.utils.TestSession; import org.tensorflow.ndarray.FloatNdArray; import org.tensorflow.ndarray.NdArrays; import org.tensorflow.ndarray.Shape; @@ -73,6 +73,7 @@ public void testDense() { for (Object[] testParamValue : TestParamValues) { try (TestSession session = TestSession.createTestSession(tfMode)) { Ops tf = session.getTF(); + Graph graph = session.getGraph(); session.setEpsilon(1e-2f); float[] var0Init = {1.0F, 2.0F}; float[] var1Init = {3.0F, 4.0F}; @@ -102,10 +103,10 @@ public void testDense() { float epsilon = (float) testParamValue[3]; boolean centered = (boolean) testParamValue[4]; - RMSProp instance = new RMSProp(tf, learningRate, decay, momentum, epsilon, centered); + RMSProp instance = new RMSProp(graph, learningRate, decay, momentum, epsilon, centered); /* build the GradsAnvVars */ - List> gradsAndVars = new ArrayList<>(); + List> gradsAndVars = new ArrayList<>(); gradsAndVars.add(new GradAndVar<>(grads0.asOutput(), var0.asOutput())); gradsAndVars.add(new GradAndVar<>(grads1.asOutput(), var1.asOutput())); diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/utils/EagerTestSession.java b/tensorflow-framework/src/test/java/org/tensorflow/framework/utils/EagerTestSession.java similarity index 97% rename from tensorflow-keras/src/test/java/org/tensorflow/keras/utils/EagerTestSession.java rename to tensorflow-framework/src/test/java/org/tensorflow/framework/utils/EagerTestSession.java index 6b7ebf9e2f2..c52168e1f11 100644 --- a/tensorflow-keras/src/test/java/org/tensorflow/keras/utils/EagerTestSession.java +++ b/tensorflow-framework/src/test/java/org/tensorflow/framework/utils/EagerTestSession.java @@ -12,32 +12,23 @@ See the License for the specific language governing permissions and limitations under the License. =======================================================================*/ -package org.tensorflow.keras.utils; +package org.tensorflow.framework.utils; -import java.io.PrintWriter; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.concurrent.atomic.AtomicLong; -import java.util.function.Predicate; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.junit.jupiter.api.Assertions.fail; -import org.tensorflow.DataType; -import org.tensorflow.EagerSession; -import org.tensorflow.Operand; -import org.tensorflow.Output; -import org.tensorflow.Session; +import org.tensorflow.*; import org.tensorflow.ndarray.FloatNdArray; import org.tensorflow.ndarray.Shape; import org.tensorflow.op.Ops; -import org.tensorflow.types.TBool; -import org.tensorflow.types.TFloat32; -import org.tensorflow.types.TFloat64; -import org.tensorflow.types.TInt32; -import org.tensorflow.types.TInt64; -import org.tensorflow.types.TString; +import org.tensorflow.types.*; import org.tensorflow.types.family.TNumber; import org.tensorflow.types.family.TType; +import java.io.PrintWriter; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicLong; +import java.util.function.Predicate; + +import static org.junit.jupiter.api.Assertions.*; + /** Eaager Mode Test Session */ public class EagerTestSession extends TestSession { @@ -58,6 +49,7 @@ public Ops getTF() { /** * Get the TensorFlow EagerSession instance + * * @return the TensorFlow EagerSession instance */ public EagerSession getSession() { diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/utils/GraphTestSession.java b/tensorflow-framework/src/test/java/org/tensorflow/framework/utils/GraphTestSession.java similarity index 98% rename from tensorflow-keras/src/test/java/org/tensorflow/keras/utils/GraphTestSession.java rename to tensorflow-framework/src/test/java/org/tensorflow/framework/utils/GraphTestSession.java index 1a22289f4bf..3231b0f50cd 100644 --- a/tensorflow-keras/src/test/java/org/tensorflow/keras/utils/GraphTestSession.java +++ b/tensorflow-framework/src/test/java/org/tensorflow/framework/utils/GraphTestSession.java @@ -12,35 +12,24 @@ See the License for the specific language governing permissions and limitations under the License. =======================================================================*/ -package org.tensorflow.keras.utils; +package org.tensorflow.framework.utils; -import java.io.PrintWriter; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.concurrent.atomic.AtomicLong; -import java.util.function.Predicate; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.junit.jupiter.api.Assertions.fail; -import org.tensorflow.DataType; -import org.tensorflow.EagerSession; -import org.tensorflow.Graph; -import org.tensorflow.Operand; -import org.tensorflow.Output; -import org.tensorflow.Session; -import org.tensorflow.Tensor; +import org.tensorflow.*; import org.tensorflow.ndarray.FloatNdArray; import org.tensorflow.ndarray.Shape; import org.tensorflow.op.Op; import org.tensorflow.op.Ops; -import org.tensorflow.types.TBool; -import org.tensorflow.types.TFloat32; -import org.tensorflow.types.TFloat64; -import org.tensorflow.types.TInt32; -import org.tensorflow.types.TInt64; -import org.tensorflow.types.TString; +import org.tensorflow.types.*; import org.tensorflow.types.family.TNumber; import org.tensorflow.types.family.TType; +import java.io.PrintWriter; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicLong; +import java.util.function.Predicate; + +import static org.junit.jupiter.api.Assertions.*; + /** Graph Mode Test Session */ public class GraphTestSession extends TestSession { @@ -66,9 +55,9 @@ public Graph getGraph() { return graph; } - /** - * Get the TensorFlow Session instance + * Get the TensorFlow Session instance + * * @return the TensorFlow Session instance */ public Session getSession() { diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/utils/ND.java b/tensorflow-framework/src/test/java/org/tensorflow/framework/utils/ND.java similarity index 96% rename from tensorflow-keras/src/test/java/org/tensorflow/keras/utils/ND.java rename to tensorflow-framework/src/test/java/org/tensorflow/framework/utils/ND.java index 2855af5af25..0503a41dfc2 100644 --- a/tensorflow-keras/src/test/java/org/tensorflow/keras/utils/ND.java +++ b/tensorflow-framework/src/test/java/org/tensorflow/framework/utils/ND.java @@ -12,18 +12,20 @@ See the License for the specific language governing permissions and limitations under the License. =======================================================================*/ -package org.tensorflow.keras.utils; +package org.tensorflow.framework.utils; -import java.util.Arrays; -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.concurrent.atomic.AtomicReference; import org.tensorflow.ndarray.FloatNdArray; import org.tensorflow.ndarray.NdArray; import org.tensorflow.ndarray.NdArrays; import org.tensorflow.ndarray.Shape; +import java.util.Arrays; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicReference; + // TODO used in the Callbacks, this should be a part of NDArray? + /** NDArray math Utilities */ public class ND { @@ -126,7 +128,7 @@ public static FloatNdArray square(FloatNdArray a) { * @return the resulting array from the add operation */ public static FloatNdArray add(FloatNdArray a, FloatNdArray b) { - if(a.shape().size() != b.shape().size()) + if (a.shape().size() != b.shape().size()) throw new IllegalArgumentException("a and b muse have the same number of dimensions"); FloatNdArray result = NdArrays.ofFloats(a.shape()); int nDims = a.shape().numDimensions(); @@ -176,7 +178,7 @@ public static FloatNdArray add(float scalar, FloatNdArray a) { * @return the resulting array from the subtraction operation */ public static FloatNdArray sub(FloatNdArray a, FloatNdArray b) { - if(a.shape().size() != b.shape().size()) + if (a.shape().size() != b.shape().size()) throw new IllegalArgumentException("a and b muse have the same number of dimensions"); FloatNdArray result = NdArrays.ofFloats(a.shape()); int nDims = a.shape().numDimensions(); @@ -232,9 +234,10 @@ public static FloatNdArray sub(float scalar, FloatNdArray a) { * @return the resulting array from the muliply operation */ public static FloatNdArray mul(FloatNdArray a, FloatNdArray b) { - if(!a.shape().equals(b.shape())) - throw new IllegalArgumentException(String.format( - "ValueError: operands do not have same shapes %s %s ", a.shape(), b.shape())); + if (!a.shape().equals(b.shape())) + throw new IllegalArgumentException( + String.format( + "ValueError: operands do not have same shapes %s %s ", a.shape(), b.shape())); boolean sameSize = a.shape().size() == b.shape().size(); FloatNdArray result = NdArrays.ofFloats(a.shape()); int nDims = a.shape().numDimensions(); @@ -289,7 +292,7 @@ public static FloatNdArray mul(float scalar, FloatNdArray a) { * @return the resulting array from the Divide operation */ public static FloatNdArray div(FloatNdArray a, FloatNdArray b) { - if(a.shape().size() != b.shape().size()) + if (a.shape().size() != b.shape().size()) throw new IllegalArgumentException("a and b muse have the same number of dimensions"); FloatNdArray result = NdArrays.ofFloats(a.shape()); int nDims = a.shape().numDimensions(); @@ -309,8 +312,7 @@ public static FloatNdArray div(FloatNdArray a, FloatNdArray b) { * @return the resulting array from the Divide operation */ public static FloatNdArray div(FloatNdArray a, float scalar) { - if(scalar == 0) - throw new IllegalArgumentException("Cannot divide by zero"); + if (scalar == 0) throw new IllegalArgumentException("Cannot divide by zero"); FloatNdArray result = NdArrays.ofFloats(a.shape()); int nDims = a.shape().numDimensions(); a.elements(nDims - 1) @@ -348,7 +350,7 @@ public static FloatNdArray div(float scalar, FloatNdArray a) { * @return the array result of the power operation */ public static FloatNdArray pow(FloatNdArray a, FloatNdArray b) { - if(a.shape().size() != b.shape().size()) + if (a.shape().size() != b.shape().size()) throw new IllegalArgumentException("a and b muse have the same number of dimensions"); FloatNdArray result = NdArrays.ofFloats(a.shape()); int nDims = a.shape().numDimensions(); @@ -444,10 +446,10 @@ public static float min(FloatNdArray a) { * @param a the first array * @param a the second array * @return the resulting array with the maximum values between each element of the arrays. - * @throws java.lang.AssertionError if the two arrays are not the same size. + * @throws AssertionError if the two arrays are not the same size. */ public static FloatNdArray max(FloatNdArray a, FloatNdArray b) { - if(a.shape().size() != b.shape().size()) + if (a.shape().size() != b.shape().size()) throw new IllegalArgumentException("a and b muse have the same number of dimensions"); FloatNdArray result = NdArrays.ofFloats(a.shape()); int nDims = a.shape().numDimensions(); @@ -496,10 +498,10 @@ public static FloatNdArray max(float scalar, FloatNdArray a) { * @param a the first array * @param a the second array * @return the resulting array with the minimum values between each element of the arrays. - * @throws java.lang.AssertionError if the two arrays are not the same size. + * @throws AssertionError if the two arrays are not the same size. */ public static FloatNdArray min(FloatNdArray a, FloatNdArray b) { - if(a.shape().size() != b.shape().size()) + if (a.shape().size() != b.shape().size()) throw new IllegalArgumentException("a and b muse have the same number of dimensions"); FloatNdArray result = NdArrays.ofFloats(a.shape()); int nDims = a.shape().numDimensions(); diff --git a/tensorflow-keras/src/test/java/org/tensorflow/keras/utils/TestSession.java b/tensorflow-framework/src/test/java/org/tensorflow/framework/utils/TestSession.java similarity index 98% rename from tensorflow-keras/src/test/java/org/tensorflow/keras/utils/TestSession.java rename to tensorflow-framework/src/test/java/org/tensorflow/framework/utils/TestSession.java index 1e5393aa2af..3758c832db5 100644 --- a/tensorflow-keras/src/test/java/org/tensorflow/keras/utils/TestSession.java +++ b/tensorflow-framework/src/test/java/org/tensorflow/framework/utils/TestSession.java @@ -12,18 +12,9 @@ See the License for the specific language governing permissions and limitations under the License. =======================================================================*/ -package org.tensorflow.keras.utils; +package org.tensorflow.framework.utils; -import java.io.OutputStream; -import java.io.OutputStreamWriter; -import java.io.PrintWriter; -import java.io.Writer; -import java.util.function.Predicate; -import static org.junit.jupiter.api.Assertions.assertTrue; -import org.tensorflow.EagerSession; -import org.tensorflow.Operand; -import org.tensorflow.Output; -import org.tensorflow.Session; +import org.tensorflow.*; import org.tensorflow.ndarray.FloatNdArray; import org.tensorflow.op.Op; import org.tensorflow.op.Ops; @@ -32,6 +23,14 @@ import org.tensorflow.types.family.TNumber; import org.tensorflow.types.family.TType; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.PrintWriter; +import java.io.Writer; +import java.util.function.Predicate; + +import static org.junit.jupiter.api.Assertions.assertTrue; + /** Base class for Test Session */ public abstract class TestSession implements AutoCloseable { @@ -86,6 +85,15 @@ public void run(Op op) { // empty } + /** + * Get the Graph + * + * @return the graph if in Graph Mode, otherwise null. + */ + public Graph getGraph() { + return null; + } + /** * Evaluate the input against the expected value * diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/AdaDelta.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/AdaDelta.java deleted file mode 100644 index b0a9dcf7d68..00000000000 --- a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/AdaDelta.java +++ /dev/null @@ -1,200 +0,0 @@ -/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the ); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -=======================================================================*/ -package org.tensorflow.keras.optimizers; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import static org.tensorflow.keras.optimizers.OptimizerInterface.assertGraph; -import org.tensorflow.op.Op; -import org.tensorflow.op.Ops; - -/** - * AdaDelta Optimizer that implements the AdaDelta algorithm. Keras wrapper around the Tensorflow - * Framework optimizer. Adadelta optimization is a stochastic gradient descent method that is based - * on adaptive learning rate per dimension to address two drawbacks: 1) the continual decay of - * learning rates throughout training 2) the need for a manually selected global learning rate - * - *

    Two accumulation steps are required: 1) the accumulation of gradients squared, 2) the - * accumulation of updates squared. - * - */ -public class AdaDelta extends org.tensorflow.framework.optimizers.AdaDelta - implements OptimizerInterface { - - public static final String LEARNING_RATE_KEY = "learning_rate"; - public static final String RHO_RATE_KEY = "rho"; - public static final String EPSILON_KEY = "epsilon"; - - public static final float LEARNING_RATE_DEFAULT = 0.001F; - public static final float RHO_DEFAULT = 0.95F; - public static final float EPSILON_DEFAULT = 1e-7F; - - private Map config = new HashMap<>(); - private float learningRate; - - private List initializers = new ArrayList<>(); - - - /** - * Create an Adadelta optimizer with default name="Adadelta", learning_rate=0.001F, rho=0.95F, and - * epsilon=1e-7F - * - * @param tf the tensorflow Ops - */ - public AdaDelta(Ops tf) { - this(tf, LEARNING_RATE_DEFAULT, RHO_DEFAULT, EPSILON_DEFAULT); - } - - /** - * Create an Adadelta optimizer with default learning_rate=0.001F, rho=0.95F, and epsilon=1e-7F - * - * @param tf the tensorflow Ops - * @param name the name of the Optimizer, defaults to "Adadelta" - */ - public AdaDelta(Ops tf, String name) { - this(tf, name, LEARNING_RATE_DEFAULT, RHO_DEFAULT, EPSILON_DEFAULT); - } - - /** - * Create an Adadelta optimizer with default name="Adadelta", rho=0.95F, and epsilon=1e-7F - * - * @param tf the tensorflow Ops - * @param learningRate The learning rate - */ - public AdaDelta(Ops tf, float learningRate) { - this(tf, learningRate, RHO_DEFAULT, EPSILON_DEFAULT); - } - - /** - * Create an Adadelta optimizer with default rho=0.95F, and epsilon=1e-7F - * - * @param tf the tensorflow Ops - * @param name the name of the Optimizer, defaults to "Adadelta" - * @param learningRate The learning rate - */ - public AdaDelta(Ops tf, String name, float learningRate) { - this(tf, name, learningRate, RHO_DEFAULT, EPSILON_DEFAULT); - } - - /** - * Create an Adadelta optimizer with default name="Adadelta", - * - * @param tf the tensorflow Ops - * @param learningRate The learning rate - * @param rho The decay rate. - * @param epsilon A constant epsilon used to better conditioning the grad update. - */ - public AdaDelta(Ops tf, float learningRate, float rho, float epsilon) { - super(assertGraph(tf), learningRate, rho, epsilon); - initConfig(learningRate, rho, epsilon); - } - - /** - * Create an Adadelta optimizer - * - * @param tf the tensorflow Ops - * @param name the name of the Optimizer, defaults to "Adadelta" - * @param learningRate The learning rate - * @param rho The decay rate. - * @param epsilon A constant epsilon used to better conditioning the grad update. - */ - public AdaDelta(Ops tf, String name, float learningRate, float rho, float epsilon) { - super(assertGraph(tf), name, learningRate, rho, epsilon); - initConfig(learningRate, rho, epsilon); - } - - /** {@inheritDoc} */ - @Override - protected Optional prepare(String name) { - switch (initializers.size()) { - case 0: - return Optional.empty(); - case 1: - return Optional.of(initializers.get(0)); - default: - return Optional.of( tf.withSubScope(name).withControlDependencies(initializers).noOp()); - } - } - - /** - * Create an Adam Optimizer from a config object - * - * @param tf the tensorflow Ops - * @param config a config object to initialize, he config object has keys for "name", - * "learning_rate", "rho" and "epsilon". If a key is missing the default value is used. - */ - public static AdaDelta fromConfig(Ops tf, Map config) { - return create(tf, config); - } - - /** - * Create an Adadelta optimizer - * - * @param tf the tensorflow Ops - * @param config a config object to initialize, the config - * object has keys for "name", "learning_rate", "rho" and "epsilon". If a key is missing the - * default value is used. - */ - public static AdaDelta create(Ops tf, Map config) { - String name = (String) config.get(NAME_KEY); - float learningRate = (float) config.getOrDefault(LEARNING_RATE_KEY, LEARNING_RATE_DEFAULT); - float rho = (float) config.getOrDefault(RHO_RATE_KEY, RHO_DEFAULT); - float epsilon = (float) config.getOrDefault(EPSILON_KEY, EPSILON_DEFAULT); - if (name == null) // doe this to get the default name - { - return new AdaDelta(tf, learningRate, rho, epsilon); - } else { - return new AdaDelta(tf, name, learningRate, rho, epsilon); - } - } - - /** - * Initialize the configuration based on which constructor is called. - * - * @param learningRate The learning rate - * @param rho The decay rate. - * @param epsilon A constant epsilon used to better conditioning the grad update. - */ - private void initConfig(float learningRate, float rho, float epsilon) { - this.learningRate = learningRate; - config.put(NAME_KEY, this.getOptimizerName()); - config.put(LEARNING_RATE_KEY, learningRate); - config.put(RHO_RATE_KEY, rho); - config.put(EPSILON_KEY, epsilon); - } - - /** {@inheritDoc} */ - @Override - public Map getConfig() { - return config; - } - - /** {@inheritDoc} */ - @Override - public float getLearningRate() { - return this.learningRate; - } - - /** {@inheritDoc} */ - @Override - public void setLearningRate(float learningRate) { - this.learningRate = learningRate; - } - - -} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/AdaGrad.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/AdaGrad.java deleted file mode 100644 index 039cf4a0d82..00000000000 --- a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/AdaGrad.java +++ /dev/null @@ -1,167 +0,0 @@ -/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the ); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -=======================================================================*/ -package org.tensorflow.keras.optimizers; - -import java.util.HashMap; -import java.util.Map; -import static org.tensorflow.keras.optimizers.OptimizerInterface.assertGraph; -import org.tensorflow.op.Ops; - -/** - * AdaGrad Optimizer that implements the AdaGrad algorithm. Adagrad is an optimizer with - * parameter-specific learning rates, which are adapted relative to how frequently a parameter gets - * updated during training. The more updates a parameter receives, the smaller the updates. - */ -public class AdaGrad extends org.tensorflow.framework.optimizers.AdaGrad - implements OptimizerInterface { - - public static final String LEARNING_RATE_KEY = "learning_rate"; - public static final String INITIAL_ACCUM_KEY = "accumulator"; - - public static final float LEARNING_RATE_DEFAULT = 0.001F; - public static final float INITIAL_ACCUM__DEFAULT = 0.1f; - - private Map config = new HashMap<>(); - private float learningRate; - - /** - * Create an AdaGrad Optimizer with name="Adagrad", learningRate=0.001F, and initial - * accumulator=0.1 - * - * @param tf the tensorflow Ops - */ - public AdaGrad(Ops tf) { - this(tf, LEARNING_RATE_DEFAULT, INITIAL_ACCUM__DEFAULT); - } - - /** - * Create an AdaGrad Optimizer with learningRate=0.001F, and initial accumulator=0.1 - * - * @param tf the tensorflow Ops - * @param name the name of the Optimizer, defaults to "Adagrad" - */ - public AdaGrad(Ops tf, String name) { - this(tf, name, LEARNING_RATE_DEFAULT, INITIAL_ACCUM__DEFAULT); - } - - /** - * Create an AdaGrad Optimizer with initial accumulator=0.1 - * - * @param tf the tensorflow Ops - * @param learningRate The learning rate. Defaults to 0.001. - */ - public AdaGrad(Ops tf, float learningRate) { - this(tf, learningRate, INITIAL_ACCUM__DEFAULT); - } - - /** - * Create an AdaGrad Optimizer - * - * @param tf the tensorflow Ops - * @param name the name of the Optimizer, defaults to "Adagrad" - * @param learningRate The learning rate. Defaults to 0.01. - */ - public AdaGrad(Ops tf, String name, float learningRate) { - this(tf, name, learningRate, INITIAL_ACCUM__DEFAULT); - } - - /** - * Create an AdaGrad Optimizer - * - * @param tf the tensorflow Ops - * @param learningRate The learning rate - * @param initialAccumulatorValue initial accumulator value - */ - public AdaGrad(Ops tf, float learningRate, float initialAccumulatorValue) { - super(assertGraph(tf), learningRate, initialAccumulatorValue); - initConfig(learningRate, initialAccumulatorValue); - } - - /** - * Create an AdaGrad Optimizer - * - * @param tf the tensorflow Ops - * @param name the name of the Optimizer, defaults to "Adagrad" - * @param learningRate The learning rate - * @param initialAccumulatorValue initial accumulator value, must be >= 0. - */ - public AdaGrad(Ops tf, String name, float learningRate, float initialAccumulatorValue) { - super(assertGraph(tf), name, learningRate, initialAccumulatorValue); - if(initialAccumulatorValue < 0.0F) - throw new IllegalArgumentException( "initial_accumulator_value must be non-negative: " + initialAccumulatorValue); - initConfig(learningRate, initialAccumulatorValue); - } - - /** - * Create an AdaGrad Optimizer from a config object - * - * @param tf the TensorFlow Ops - * @param config a config object to initialize, , the config object has keys for "name", - * "learning_rate" and "accumulator". If a key is missing the default value is used. - */ - public static AdaGrad fromConfig(Ops tf, Map config) { - return create(tf, config); - } - - /** - * Create an AdaGrad Optimizer from a config object - * - * @param tf the TensorFlow Ops - * @param config a config object to initialize, the config object has keys for "name", - * "learning_rate" and "accumulator". If a key is missing the default value is used. - */ - public static AdaGrad create(Ops tf, Map config) { - String name = (String) config.get(NAME_KEY); - float learningRate = (float) config.getOrDefault(LEARNING_RATE_KEY, LEARNING_RATE_DEFAULT); - float initialAccumulatorValue = - (float) config.getOrDefault(INITIAL_ACCUM_KEY, INITIAL_ACCUM__DEFAULT); - if (name != null) { - return new AdaGrad(tf, name, learningRate, initialAccumulatorValue); - } else { - return new AdaGrad(tf, learningRate, initialAccumulatorValue); - } - } - - /** - * Initialize the configuration - * - * @param learningRate the learning rate - * @param initialAccumulatorValue the initial Accumulator value - */ - private void initConfig(float learningRate, float initialAccumulatorValue) { - this.learningRate = learningRate; - config.put(NAME_KEY, this.getOptimizerName()); - config.put(LEARNING_RATE_KEY, learningRate); - config.put(INITIAL_ACCUM_KEY, initialAccumulatorValue); - } - - /** {@inheritDoc} */ - @Override - public Map getConfig() { - return config; - } - - /** {@inheritDoc} */ - @Override - public float getLearningRate() { - return this.learningRate; - } - - /** {@inheritDoc} */ - @Override - public void setLearningRate(float learningRate) { - this.learningRate = learningRate; - } -} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/AdaGradDA.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/AdaGradDA.java deleted file mode 100644 index 2f15024bf56..00000000000 --- a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/AdaGradDA.java +++ /dev/null @@ -1,196 +0,0 @@ -/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the ); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -=======================================================================*/ -package org.tensorflow.keras.optimizers; - -import java.util.HashMap; -import java.util.Map; -import static org.tensorflow.keras.optimizers.OptimizerInterface.assertGraph; -import org.tensorflow.op.Ops; - -/** Optimizer that implements the Adagrad Dual-Averaging algorithm. */ -public class AdaGradDA extends org.tensorflow.framework.optimizers.AdaGradDA - implements OptimizerInterface { - - public static final String LEARNING_RATE_KEY = "learning_rate"; - public static final String INITIAL_ACCUM_KEY = "accumulator"; - public static final String L1STRENGTH_KEY = "l1Strength"; - public static final String L2STRENGTH_KEY = "l2Strength"; - - public static final float LEARNING_RATE_DEFAULT = 0.001F; // arbitray number - public static final float INITIAL_ACCUM__DEFAULT = 0.1f; - public static final float L1STRENGTH_DEFAULT = 0.0F; - public static final float L2STRENGTH_DEFAULT = 0.0F; - - private Map config = new HashMap<>(); - private float learningRate; - - /** - * Create an AdagradDA Optimizer with default values name="adagrad-da". learning_rate=.001, - * initial accumulator= 0.1, l1Strength=0.0, l2Strength=0.0; - * - * @param tf the tensorflow tf - */ - public AdaGradDA(Ops tf) { - this(tf, LEARNING_RATE_DEFAULT, INITIAL_ACCUM__DEFAULT, L1STRENGTH_DEFAULT, L2STRENGTH_DEFAULT); - } - - /** - * Create an AdagradDA Optimizer with default values initial accumulator= 0.1, l1Strength=0.0, - * l2Strength=0.0; - * - * @param tf the tensorflow tf - * @param learningRate The learning rate. - */ - public AdaGradDA(Ops tf, float learningRate) { - this(tf, learningRate, INITIAL_ACCUM__DEFAULT, L1STRENGTH_DEFAULT, L2STRENGTH_DEFAULT); - } - - /** - * Create an AdagradDA Optimizer with default values initial accumulator= 0.1, l1Strength=0.0, - * l2Strength=0.0; - * - * @param tf the tensorflow tf - * @param name the name of the Optimizer, defaults to "adagrad-da" - * @param learningRate The learning rate. - */ - public AdaGradDA(Ops tf, String name, float learningRate) { - this(tf, name, learningRate, INITIAL_ACCUM__DEFAULT, L1STRENGTH_DEFAULT, L2STRENGTH_DEFAULT); - } - - /** - * Create an AdagradDA Optimizer - * - * @param tf the tensorflow tf - * @param learningRate the learning rate, default is 0.001 - * @param initialAccumulatorValue Starting value for the accumulators, must be >= 0.0. - * @param l1Strength L1 Regularization Strength - * @param l2Strength L2 Regularization Strength - */ - public AdaGradDA( - Ops tf, - float learningRate, - float initialAccumulatorValue, - float l1Strength, - float l2Strength) { - super(assertGraph(tf), learningRate, initialAccumulatorValue, l1Strength, l2Strength); - if( initialAccumulatorValue < 0.0F) - throw new IllegalArgumentException("initial_accumulator_value must be non-negative: " + initialAccumulatorValue); - if(l1Strength < 0) - throw new IllegalArgumentException("l1Strength must be non-negative: " + l1Strength); - if(l2Strength < 0) - throw new IllegalArgumentException("l2Strength must be non-negative: " + l2Strength); - initConfig(learningRate, initialAccumulatorValue, l1Strength, l2Strength); - } - - /** - * Create an AdagradDA Optimizer - * - * @param tf the tensorflow tf - * @param name the name of the Optimizer, defaults to "adagrad-da" - * @param learningRate the learning rate, default is 0.001 - * @param initialAccumulatorValue Starting value for the accumulators, must be positive. - * @param l1Strength L1 Regularization Strength - * @param l2Strength L2 Regularization Strength - */ - public AdaGradDA( - Ops tf, - String name, - float learningRate, - float initialAccumulatorValue, - float l1Strength, - float l2Strength) { - super(assertGraph(tf), name, learningRate, initialAccumulatorValue, l1Strength, l2Strength); - if( initialAccumulatorValue < 0.0F) - throw new IllegalArgumentException("initial_accumulator_value must be non-negative: " + initialAccumulatorValue); - if(l1Strength < 0) - throw new IllegalArgumentException("l1Strength must be non-negative: " + l1Strength); - if(l2Strength < 0) - throw new IllegalArgumentException("l2Strength must be non-negative: " + l2Strength); - initConfig(learningRate, initialAccumulatorValue, l1Strength, l2Strength); - initConfig(learningRate, initialAccumulatorValue, l1Strength, l2Strength); - } - - /** - * Create an AdaGrad Optimizer from a config object - * - * @param tf the tensorflow tf - * @param config a config object to initialize, , the config object has keys for "name", - * "learning_rate", "accumulator", "l1Strength" and "l2Strength". If a key is missing the - * default value is used. - * @return the new AdaGradDA Optimizer - */ - public static AdaGradDA fromConfig(Ops tf, Map config) { - return create(tf, config); - } - - /** - * Create an AdaGradDA Optimizer from a config object - * - * @param tf the tensorflow tf - * @param config a config object to initialize, the config object has keys for "name", - * "learning_rate", "accumulator", "l1Strength" and "l2Strength". If a key is missing the - * default value is used. - * @return the new AdaGradDA Optimizer - */ - public static AdaGradDA create(Ops tf, Map config) { - String name = (String) config.get(NAME_KEY); - float learningRate = (float) config.getOrDefault(LEARNING_RATE_KEY, LEARNING_RATE_DEFAULT); - float initialAccumulatorValue = - (float) config.getOrDefault(INITIAL_ACCUM_KEY, INITIAL_ACCUM__DEFAULT); - float l1Strength = (float) config.getOrDefault(L1STRENGTH_KEY, L2STRENGTH_DEFAULT); - float l2Strength = (float) config.getOrDefault(L2STRENGTH_KEY, L2STRENGTH_DEFAULT); - if (name != null) { - return new AdaGradDA(tf, name, learningRate, initialAccumulatorValue, l1Strength, l2Strength); - } else { - return new AdaGradDA(tf, learningRate, initialAccumulatorValue, l1Strength, l2Strength); - } - } - - /** - * Initialize the Optimizer from a config object based on which constructor is called. - * - * @param learningRate the learning rate, default is 0.001 - * @param initialAccumulatorValue Starting value for the accumulators, must be >= 0.0. - * @param l1Strength L1 Regularization Strength - * @param l2Strength L2 Regularization Strength - */ - private void initConfig( - float learningRate, float initialAccumulatorValue, float l1Strength, float l2Strength) { - this.learningRate = learningRate; - config.put(NAME_KEY, this.getOptimizerName()); - config.put(LEARNING_RATE_KEY, learningRate); - config.put(INITIAL_ACCUM_KEY, initialAccumulatorValue); - config.put(L1STRENGTH_KEY, l1Strength); - config.put(L2STRENGTH_KEY, l2Strength); - } - - /** {@inheritDoc} */ - @Override - public Map getConfig() { - return config; - } - - /** {@inheritDoc} */ - @Override - public float getLearningRate() { - return this.learningRate; - } - - /** {@inheritDoc} */ - @Override - public void setLearningRate(float learningRate) { - this.learningRate = learningRate; - } -} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/Adam.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/Adam.java deleted file mode 100644 index 5d74c7e27f4..00000000000 --- a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/Adam.java +++ /dev/null @@ -1,182 +0,0 @@ -/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the ); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -=======================================================================*/ -package org.tensorflow.keras.optimizers; - -import java.util.HashMap; -import java.util.Map; -import static org.tensorflow.keras.optimizers.OptimizerInterface.NAME_KEY; -import static org.tensorflow.keras.optimizers.OptimizerInterface.assertGraph; -import org.tensorflow.op.Ops; - -/** Adam Optimizer that implements the Adam algorithm. */ -public class Adam extends org.tensorflow.framework.optimizers.Adam implements OptimizerInterface { - - public static final String LEARNING_RATE_KEY = "learning_rate"; - public static final String EPSILON_KEY = "epsilon"; - public static final String BETA_ONE_KEY = "beta_1"; - public static final String BETA_TWO_KEY = "beta_2"; - - public static final float LEARNING_RATE_DEFAULT = 0.001F; - public static final float EPSILON_DEFAULT = 1e-07F; - public static final float BETA_ONE_DEFAULT = 0.9F; - public static final float BETA_TWO_DEFAULT = 0.999F; - - private float learningRate; - private Map config = new HashMap<>(); - - /** - * Create an Adam Optimizer - * - * @param tf the tensorflow Ops - */ - public Adam(Ops tf) { - this(tf, LEARNING_RATE_DEFAULT, BETA_ONE_DEFAULT, BETA_TWO_DEFAULT, EPSILON_DEFAULT); - } - - /** - * Create an Adam Optimizer - * - * @param tf the tensorflow Ops - * @param name the name of the Optimizer, defaults to "Adam" - */ - public Adam(Ops tf, String name) { - this(tf, name, LEARNING_RATE_DEFAULT, BETA_ONE_DEFAULT, BETA_TWO_DEFAULT, EPSILON_DEFAULT); - } - - /** - * Create an Adam Optimizer - * - * @param tf the tensorflow Ops - * @param learningRate The learning rate. Defaults to 0.001. - */ - public Adam(Ops tf, float learningRate) { - this(tf, learningRate, BETA_ONE_DEFAULT, BETA_TWO_DEFAULT, EPSILON_DEFAULT); - } - - /** - * Create an Adam Optimizer - * - * @param tf the tensorflow Ops - * @param name the name of the Optimizer, defaults to "Adam" - * @param learningRate The learning rate. Defaults to 0.001. - */ - public Adam(Ops tf, String name, float learningRate) { - this(tf, name, learningRate, BETA_ONE_DEFAULT, BETA_TWO_DEFAULT, EPSILON_DEFAULT); - } - - /** - * Create an Adam Optimizer - * - * @param tf the tensorflow Ops - * @param learningRate The learning rate. Defaults to 0.001. - * @param betaOne The exponential decay rate for the 1st moment estimates. Defaults to 0.9. - * @param betaTwo The exponential decay rate for the 2nd moment estimates. Defaults to 0.999. - * @param epsilon A small constant for numerical stability. This epsilon is "epsilon hat" in the - * Kingma and Ba paper (in the formula just before Section 2.1), not the epsilon in Algorithm - * 1 of the paper. Defaults to 1e-7. - */ - public Adam(Ops tf, float learningRate, float betaOne, float betaTwo, float epsilon) { - super(assertGraph(tf), learningRate, betaOne, betaTwo, epsilon); - initConfig(learningRate, betaOne, betaTwo, epsilon); - } - - /** - * Create an Adam Optimizer - * - * @param tf the tensorflow Ops - * @param name the name of the Optimizer, defaults to "Adam" - * @param learningRate The learning rate. Defaults to 0.001. - * @param betaOne The exponential decay rate for the 1st moment estimates. Defaults to 0.9. - * @param betaTwo The exponential decay rate for the 2nd moment estimates. Defaults to 0.999. - * @param epsilon A small constant for numerical stability. This epsilon is "epsilon hat" in the - * Kingma and Ba paper (in the formula just before Section 2.1), not the epsilon in Algorithm - * 1 of the paper. Defaults to 1e-7. - */ - public Adam( - Ops tf, String name, float learningRate, float betaOne, float betaTwo, float epsilon) { - super(assertGraph(tf), name, learningRate, betaOne, betaTwo, epsilon); - initConfig(learningRate, betaOne, betaTwo, epsilon); - } - - /** - * Create an Adam Optimizer from a config object - * - * @param tf the tensorflow Ops - * @param config a config object to initialize, the config object has keys for "name", - * "learning_rate", "epsilon", "beta_1", "beta_2". If a key is missing the default value is - * used. - */ - public static Adam fromConfig(Ops tf, Map config) { - return create(tf, config); - } - - /** - * Create an Adam Optimizer from a config object - * - * @param tf the tensorflow Ops - * @param config a config object to initialize, the config object has keys for "name", - * "learning_rate", "epsilon", "beta_1", "beta_2". If a key is missing the default value is - * used. - */ - public static Adam create(Ops tf, Map config) { - String name = (String) config.get(NAME_KEY); - float learningRate = (float) config.getOrDefault(LEARNING_RATE_KEY, LEARNING_RATE_DEFAULT); - float epsilon = (float) config.getOrDefault(EPSILON_KEY, EPSILON_DEFAULT); - float betaOne = (float) config.getOrDefault(BETA_ONE_KEY, BETA_ONE_DEFAULT); - float betaTwo = (float) config.getOrDefault(BETA_TWO_KEY, BETA_TWO_DEFAULT); - if (name == null) { - return new Adam(tf, learningRate, betaOne, betaTwo, epsilon); - } else { - return new Adam(tf, name, learningRate, betaOne, betaTwo, epsilon); - } - } - - /** - * Initialize the Optimizer from a config object based on which constructor is called. - * - * @param learningRate The learning rate. Defaults to 0.001. - * @param betaOne The exponential decay rate for the 1st moment estimates. Defaults to 0.9. - * @param betaTwo The exponential decay rate for the 2nd moment estimates. Defaults to 0.999. - * @param epsilon A small constant for numerical stability. This epsilon is "epsilon hat" in the - * Kingma and Ba paper (in the formula just before Section 2.1), not the epsilon in Algorithm - * 1 of the paper. Defaults to 1e-7. - */ - protected void initConfig(float learningRate, float betaOne, float betaTwo, float epsilon) { - this.learningRate = learningRate; - config.put(NAME_KEY, this.getOptimizerName()); - config.put(LEARNING_RATE_KEY, learningRate); - config.put(EPSILON_KEY, epsilon); - config.put(BETA_ONE_KEY, betaOne); - config.put(BETA_TWO_KEY, betaTwo); - } - - /** {@inheritDoc} */ - @Override - public Map getConfig() { - return config; - } - - /** {@inheritDoc} */ - @Override - public float getLearningRate() { - return this.learningRate; - } - - /** {@inheritDoc} */ - @Override - public void setLearningRate(float learningRate) { - this.learningRate = learningRate; - } -} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/Adamax.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/Adamax.java deleted file mode 100644 index a976a6e51dd..00000000000 --- a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/Adamax.java +++ /dev/null @@ -1,283 +0,0 @@ -/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the ); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -=======================================================================*/ -package org.tensorflow.keras.optimizers; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import org.tensorflow.Graph; -import org.tensorflow.Operand; -import org.tensorflow.Output; -import static org.tensorflow.keras.optimizers.OptimizerInterface.NAME_KEY; -import static org.tensorflow.keras.optimizers.OptimizerInterface.assertGraph; -import org.tensorflow.ndarray.Shape; -import org.tensorflow.op.Op; -import org.tensorflow.op.Ops; -import org.tensorflow.op.Scope; -import org.tensorflow.op.core.Assign; -import org.tensorflow.op.core.Constant; -import org.tensorflow.op.core.Variable; -import org.tensorflow.op.train.ApplyAdaMax; -import org.tensorflow.types.TFloat32; -import org.tensorflow.types.family.TType; - -/** Adamax Optimizer that implements the Adamax algorithm. */ -public class Adamax extends org.tensorflow.framework.optimizers.Optimizer - implements OptimizerInterface { - - public static final String FIRST_MOMENT = "m"; - public static final String SECOND_MOMENT = "v"; - - public static final String LEARNING_RATE_KEY = "learning_rate"; - public static final String EPSILON_KEY = "epsilon"; - public static final String BETA_ONE_KEY = "beta_1"; - public static final String BETA_TWO_KEY = "beta_2"; - - public static final float LEARNING_RATE_DEFAULT = 0.001F; - public static final float EPSILON_DEFAULT = 1e-07F; - public static final float BETA_ONE_DEFAULT = 0.9F; - public static final float BETA_TWO_DEFAULT = 0.999F; - - private Scope scope; - private Map config = new HashMap<>(); - - private float learningRate; - private final float betaOne; - private final float betaTwo; - private final float epsilon; - - private Constant learningRateConst; - private Constant epsilonConst; - private Constant betaOneConst; - private Constant betaTwoConst; - private Variable betaOnePower; - - /** - * Create an Optimizer that implements the Adamax algorithm. - * - * @param tf the TensoFlow Ops - */ - public Adamax(Ops tf) { - this(tf, LEARNING_RATE_DEFAULT, BETA_ONE_DEFAULT, BETA_TWO_DEFAULT, EPSILON_DEFAULT); - } - - /** - * Create an Optimizer that implements the Adamax algorithm. - * - * @param tf the TensoFlow Ops - * @param name name for the operations Created when applying gradients. Defaults to "Adamax". - */ - public Adamax(Ops tf, String name) { - this(tf, name, LEARNING_RATE_DEFAULT, BETA_ONE_DEFAULT, BETA_TWO_DEFAULT, EPSILON_DEFAULT); - } - - /** - * Create an Optimizer that implements the Adamax algorithm. - * - * @param tf the TensoFlow Ops - * @param learningRate The learning rate. - */ - public Adamax(Ops tf, float learningRate) { - this(tf, learningRate, BETA_ONE_DEFAULT, BETA_TWO_DEFAULT, EPSILON_DEFAULT); - } - - /** - * Create an Optimizer that implements the Adamax algorithm. - * - * @param tf the TensoFlow Ops - * @param name name for the operations Created when applying gradients. Defaults to "Adamax". - * @param learningRate The learning rate. - */ - public Adamax(Ops tf, String name, float learningRate) { - this(tf, name, learningRate, BETA_ONE_DEFAULT, BETA_TWO_DEFAULT, EPSILON_DEFAULT); - } - - /** - * Create an Optimizer that implements the Adamax algorithm. - * - * @param tf the TensoFlow Ops - * @param learningRate The learning rate. - * @param betaOne The exponential decay rate for the 1st moment estimates. - * @param betaTwo The exponential decay rate for the exponentially weighted infinity norm. - * @param epsilon A small constant for numerical stability. - */ - public Adamax(Ops tf, float learningRate, float betaOne, float betaTwo, float epsilon) { - super(assertGraph(tf)); - this.learningRate = learningRate; - this.betaOne = betaOne; - this.betaTwo = betaTwo; - this.epsilon = epsilon; - this.scope = tf.scope(); - initConfig(learningRate, betaOne, betaTwo, epsilon); - } - - /** - * Create an Optimizer that implements the Adamax algorithm. - * - * @param tf the TensoFlow Ops - * @param name name for the operations Created when applying gradients. Defaults to "Adamax". - * @param learningRate The learning rate. - * @param betaOne The exponential decay rate for the 1st moment estimates. - * @param betaTwo The exponential decay rate for the exponentially weighted infinity norm. - * @param epsilon A small constant for numerical stability. - */ - public Adamax( - Ops tf, String name, float learningRate, float betaOne, float betaTwo, float epsilon) { - super(assertGraph(tf), name); - this.learningRate = learningRate; - this.betaOne = betaOne; - this.betaTwo = betaTwo; - this.epsilon = epsilon; - this.scope = tf.scope(); - - initConfig(learningRate, betaOne, betaTwo, epsilon); - } - - /** - * Create an Optimizer that implements the Adamax algorithm from a config object - * - * @param tf the TensoFlow Ops - * @param config a config object to initialize, the config object has keys for "name", - * "learning_rate", "epsilon", "beta_1", "beta_2". If a key is missing the default value is - * used. - */ - public static Adamax fromConfig(Ops tf, Map config) { - return create(tf, config); - } - - /** - * Create an Optimizer that implements the Adamax algorithm from a config object - * - * @param tf the TensoFlow Ops - * @param config a config object to initialize - */ - public static Adamax create(Ops tf, Map config) { - String name = (String) config.get(NAME_KEY); - float learningRate = (float) config.getOrDefault(LEARNING_RATE_KEY, LEARNING_RATE_DEFAULT); - float epsilon = (float) config.getOrDefault(EPSILON_KEY, EPSILON_DEFAULT); - float betaOne = (float) config.getOrDefault(BETA_ONE_KEY, BETA_ONE_DEFAULT); - float betaTwo = (float) config.getOrDefault(BETA_TWO_KEY, BETA_TWO_DEFAULT); - if (name == null) { - return new Adamax(tf, learningRate, betaOne, betaTwo, epsilon); - } else { - return new Adamax(tf, name, learningRate, betaOne, betaTwo, epsilon); - } - } - - /** {@inheritDoc} */ - @Override - public Map getConfig() { - return config; - } - - /** {@inheritDoc} */ - @Override - public float getLearningRate() { - return this.learningRate; - } - - /** {@inheritDoc} */ - @Override - public void setLearningRate(float learningRate) { - this.learningRate = learningRate; - } - - /** {@inheritDoc} */ - @Override - protected Optional prepare(String scopeName) { - betaOneConst = tf.constant(betaOne); - betaTwoConst = tf.constant(betaTwo); - learningRateConst = tf.constant(learningRate); - epsilonConst = tf.constant(epsilon); - - return Optional.empty(); - } - - /** {@inheritDoc} */ - @Override - protected void createSlots(List> variables) { - for (Output v : variables) { - createAdamaxSlot(v.asOutput()); - } - betaOnePower = tf.withName("beta1_power").variable(Shape.scalar(), TFloat32.DTYPE); - Assign betaOnePowerInit = tf.assign(betaOnePower, tf.constant(betaOne)); - ((Graph) tf.scope().env()).addInitializer(betaOnePowerInit); - } - - /** - * Create the first and second moment slots - * - * @param v the variable - * @param the datatype of the variable - */ - private void createAdamaxSlot(Output v) { - Operand firstMomentInitializer = - tf.fill(tf.shape(v), tf.dtypes.cast(tf.constant(0.0f), v.dataType())); - createSlot(v.asOutput(), FIRST_MOMENT, firstMomentInitializer); - Operand secondMomentInitializer = - tf.fill(tf.shape(v), tf.dtypes.cast(tf.constant(0.0f), v.dataType())); - createSlot(v.asOutput(), SECOND_MOMENT, secondMomentInitializer); - } - - /** {@inheritDoc} */ - @Override - protected Op applyDense(Output gradient, Output variable) { - Variable firstMomentSlot = getSlot(variable, FIRST_MOMENT).get(); - Variable secondMomentSlot = getSlot(variable, SECOND_MOMENT).get(); - return ApplyAdaMax.create( - scope, - (Operand) variable, - (Operand) firstMomentSlot, - (Operand) secondMomentSlot, - (Operand) tf.dtypes.cast(betaOnePower, gradient.dataType()), - (Operand) tf.dtypes.cast(learningRateConst, gradient.dataType()), - (Operand) tf.dtypes.cast(betaOneConst, gradient.dataType()), - (Operand) tf.dtypes.cast(betaTwoConst, gradient.dataType()), - (Operand) tf.dtypes.cast(epsilonConst, gradient.dataType()), - (Operand) gradient); - } - - /** {@inheritDoc} */ - @Override - protected Op finish(List updateOperations, String name) { - updateOperations.add(tf.assign(betaOnePower, tf.math.mul(betaOnePower, betaOneConst))); - return super.finish(updateOperations, name); - } - - /** {@inheritDoc} */ - @Override - public String getOptimizerName() { - return "Adamax"; - } - - /** - * Initialize the Optimizer from a config object based on which constructor is called. - * - * @param learningRate The learning rate. Defaults to 0.001. - * @param betaOne The exponential decay rate for the 1st moment estimates. Defaults to 0.9. - * @param betaTwo The exponential decay rate for the 2nd moment estimates. Defaults to 0.999. - * @param epsilon A small constant for numerical stability. This epsilon is "epsilon hat" in the - * Kingma and Ba paper (in the formula just before Section 2.1), not the epsilon in Algorithm - * 1 of the paper. Defaults to 1e-7. - */ - protected void initConfig(float learningRate, float betaOne, float betaTwo, float epsilon) { - config.put(NAME_KEY, this.getOptimizerName()); - config.put(LEARNING_RATE_KEY, learningRate); - config.put(EPSILON_KEY, epsilon); - config.put(BETA_ONE_KEY, betaOne); - config.put(BETA_TWO_KEY, betaTwo); - } -} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/Nadam.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/Nadam.java deleted file mode 100644 index a2eba4ecb49..00000000000 --- a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/Nadam.java +++ /dev/null @@ -1,399 +0,0 @@ -/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the ); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -=======================================================================*/ -package org.tensorflow.keras.optimizers; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import org.tensorflow.DataType; -import org.tensorflow.Graph; -import org.tensorflow.Operand; -import org.tensorflow.Output; -import static org.tensorflow.keras.optimizers.OptimizerInterface.assertGraph; -import org.tensorflow.ndarray.Shape; -import org.tensorflow.op.Op; -import org.tensorflow.op.Ops; -import org.tensorflow.op.core.Assign; -import org.tensorflow.op.core.Constant; -import org.tensorflow.op.core.Variable; -import org.tensorflow.types.TFloat32; -import org.tensorflow.types.TInt64; -import org.tensorflow.types.family.TType; - -/** Nadam Optimizer that implements the NAdam algorithm. */ -public class Nadam extends org.tensorflow.framework.optimizers.Optimizer - implements OptimizerInterface { - - public static final String FIRST_MOMENT = "m"; - public static final String SECOND_MOMENT = "v"; - public static final String MOMENTUM = "momentum"; - - public static final String LEARNING_RATE_KEY = "learning_rate"; - public static final String EPSILON_KEY = "epsilon"; - public static final String BETA_ONE_KEY = "beta_1"; - public static final String BETA_TWO_KEY = "beta_2"; - - public static final float LEARNING_RATE_DEFAULT = 0.001F; - public static final float EPSILON_DEFAULT = 1e-07F; - public static final float BETA_ONE_DEFAULT = 0.9F; - public static final float BETA_TWO_DEFAULT = 0.999F; - - private final Map config = new HashMap<>(); - - private float learningRate; - private final float betaOne; - private final float betaTwo; - private final float epsilon; - private final float decayBase = 0.96F; - private final float decay = 0.004F; - - private long iterations = 0; - - private Constant learningRateConst; - private Constant betaOneConst; - private Constant betaTwoConst; - private Constant localStepConst; - private Constant nextStepConst; - - private Constant decayBaseConst; - private Constant decayConst; - private Constant epsilonConst; - - private Variable betaOnePower; - private Variable betaTwoPower; - private Variable momentum; - - private Operand m_t; - private Operand m_t_1; - private Operand m_schedule_new; - private Operand m_schedule_next; - private Operand one_minus_beta_1; - private Operand one_minus_beta_2; - private Operand one_minus_m_t; - private Operand one_minus_m_schedule_new; - private Operand one_minus_m_schedule_next; - private Operand v_t_prime_denominator; - - /** - * Create an Optimizer that implements the NAdam algorithm. - * - * @param tf the TensorFlow Ops - */ - public Nadam(Ops tf) { - this(tf, LEARNING_RATE_DEFAULT, BETA_ONE_DEFAULT, BETA_TWO_DEFAULT, EPSILON_DEFAULT); - } - - /** - * Create an Optimizer that implements the NAdam algorithm. - * - * @param tf the TensorFlow Ops - * @param name name for the operations created when applying gradients. Defaults to "Nadam". - */ - public Nadam(Ops tf, String name) { - this(tf, name, LEARNING_RATE_DEFAULT, BETA_ONE_DEFAULT, BETA_TWO_DEFAULT, EPSILON_DEFAULT); - } - - /** - * Create an Optimizer that implements the NAdam algorithm. - * - * @param tf the TensorFlow Ops - * @param learningRate The learning rate. - */ - public Nadam(Ops tf, float learningRate) { - this(tf, learningRate, BETA_ONE_DEFAULT, BETA_TWO_DEFAULT, EPSILON_DEFAULT); - } - - /** - * Create an Optimizer that implements the NAdam algorithm. - * - * @param tf the TensorFlow Ops - * @param name name for the operations created when applying gradients. Defaults to "Adamax". - * @param learningRate The learning rate. - */ - public Nadam(Ops tf, String name, float learningRate) { - this(tf, name, learningRate, BETA_ONE_DEFAULT, BETA_TWO_DEFAULT, EPSILON_DEFAULT); - } - - /** - * Create an Optimizer that implements the NAdam algorithm. - * - * @param tf the TensorFlow Ops - * @param learningRate The learning rate. - * @param betaOne The exponential decay rate for the 1st moment estimates. - * @param betaTwo The exponential decay rate for the exponentially weighted infinity norm. - * @param epsilon A small constant for numerical stability. - */ - public Nadam(Ops tf, float learningRate, float betaOne, float betaTwo, float epsilon) { - super(assertGraph(tf)); - this.learningRate = learningRate; - this.betaOne = betaOne; - this.betaTwo = betaTwo; - this.epsilon = epsilon; - initConfig(learningRate, betaOne, betaTwo, epsilon); - } - - /** - * Create an Optimizer that implements the NAdam algorithm. - * - * @param tf the TensorFlow Ops - * @param name name for the operations created when applying gradients. - * @param learningRate The learning rate. - * @param betaOne The exponential decay rate for the 1st moment estimates. - * @param betaTwo The exponential decay rate for the exponentially weighted infinity norm. - * @param epsilon A small constant for numerical stability. - */ - public Nadam( - Ops tf, String name, float learningRate, float betaOne, float betaTwo, float epsilon) { - super(assertGraph(tf), name); - this.learningRate = learningRate; - this.betaOne = betaOne; - this.betaTwo = betaTwo; - this.epsilon = epsilon; - - initConfig(learningRate, betaOne, betaTwo, epsilon); - } - - /** - * Create an Optimizer that implements the NAdam algorithm. - * - * @param tf the TensorFlow Ops - * @param config a config object to initialize - */ - public static Nadam create(Ops tf, Map config) { - String name = (String) config.get(NAME_KEY); - float learningRate = (float) config.getOrDefault(LEARNING_RATE_KEY, LEARNING_RATE_DEFAULT); - float epsilon = (float) config.getOrDefault(EPSILON_KEY, EPSILON_DEFAULT); - float betaOne = (float) config.getOrDefault(LEARNING_RATE_KEY, LEARNING_RATE_DEFAULT); - float betaTwo = (float) config.getOrDefault(LEARNING_RATE_KEY, LEARNING_RATE_DEFAULT); - if (name == null) { - return new Nadam(tf, learningRate, betaOne, betaTwo, epsilon); - } else { - return new Nadam(tf, name, learningRate, betaOne, betaTwo, epsilon); - } - } - - /** {@inheritDoc} */ - @Override - public Map getConfig() { - return config; - } - - /** {@inheritDoc} */ - @Override - public float getLearningRate() { - return this.learningRate; - } - - /** {@inheritDoc} */ - @Override - public void setLearningRate(float learningRate) { - this.learningRate = learningRate; - } - - /** {@inheritDoc} */ - @Override - protected void createSlots(List> variables) { - for (Output v : variables) { - createNadamSlot(v.asOutput()); - } - betaOnePower = tf.withName("beta1_power").variable(Shape.scalar(), TFloat32.DTYPE); - Assign betaOnePowerInit = tf.assign(betaOnePower, tf.constant(betaOne)); - ((Graph) tf.scope().env()).addInitializer(betaOnePowerInit); - - betaTwoPower = tf.withName("beta2_power").variable(Shape.scalar(), TFloat32.DTYPE); - Assign betaTwoPowerInit = tf.assign(betaTwoPower, tf.constant(betaTwo)); - ((Graph) tf.scope().env()).addInitializer(betaTwoPowerInit); - - momentum = tf.withName("momentum").variable(Shape.scalar(), TFloat32.DTYPE); - Assign momentumInit = tf.assign(momentum, tf.constant(1.0F)); - ((Graph) tf.scope().env()).addInitializer(momentumInit); - } - - /** - * Create slots for first and second momements and momentum - * - * @param v the variable - * @param the data type or the Variable - */ - private void createNadamSlot(Output v) { - Operand firstMomentInitializer = - tf.fill(tf.shape(v), tf.dtypes.cast(tf.constant(0.0f), v.dataType())); - createSlot(v.asOutput(), FIRST_MOMENT, firstMomentInitializer); - Operand secondMomentInitializer = - tf.fill(tf.shape(v), tf.dtypes.cast(tf.constant(0.0f), v.dataType())); - createSlot(v.asOutput(), SECOND_MOMENT, secondMomentInitializer); - - Operand momentumInitializer = - tf.fill(tf.shape(v), tf.dtypes.cast(tf.constant(1.0f), v.dataType())); - createSlot(v.asOutput(), MOMENTUM, momentumInitializer); - } - - /** {@inheritDoc} */ - @Override - protected Optional prepare(String scopeName) { - Constant one = tf.constant(1.0F); - Constant point5 = tf.constant(0.5F); - - learningRateConst = tf.constant(learningRate); - betaOneConst = tf.constant(betaOne); - betaTwoConst = tf.constant(betaTwo); - localStepConst = tf.constant(this.iterations + 1); - nextStepConst = tf.constant(this.iterations + 2); - decayConst = tf.constant(decay); - decayBaseConst = tf.constant(this.decayBase); - epsilonConst = tf.constant(this.epsilon); - - // m_t = beta_1_t * (1. - 0.5 * ( math_ops.pow(decay_base, self._initial_decay * local_step))) - m_t = - tf.math.mul( - betaOneConst, - tf.math.sub( - one, - tf.math.mul( - point5, - tf.math.pow( - decayBaseConst, - tf.math.mul(decayConst, tf.dtypes.cast(localStepConst, TFloat32.DTYPE)))))); - // m_t_1 = beta_1_t * (1. - 0.5 * ( math_ops.pow(decay_base, self._initial_decay * next_step))) - m_t_1 = - tf.math.mul( - betaOneConst, - tf.math.sub( - one, - tf.math.mul( - point5, - tf.math.pow( - decayBaseConst, - tf.math.mul(decayConst, tf.dtypes.cast(nextStepConst, TFloat32.DTYPE)))))); - - // m_schedule_new = math_ops.cast(self._m_cache_read, var_dtype) * m_t - m_schedule_new = tf.math.mul(momentum, m_t); - // if var_dtype is self._m_cache.dtype: - // m_schedule_new = array_ops.identity(state_ops.assign( - // self._m_cache, m_schedule_new, use_locking=self._use_locking)) - m_schedule_new = tf.identity(tf.assign(momentum, m_schedule_new, Assign.useLocking(true))); - // m_schedule_next = m_schedule_new * m_t_1 - m_schedule_next = tf.math.mul(m_schedule_new, m_t_1); - - // 1 - beta_1_t - one_minus_beta_1 = tf.math.sub(one, betaOneConst); - // 1 - beta_2_t, - one_minus_beta_2 = tf.math.sub(one, betaTwoConst); - // 1. - m_t, - one_minus_m_t = tf.math.sub(one, m_t); - // 1. - m_schedule_new - one_minus_m_schedule_new = tf.math.sub(one, m_schedule_new); - // 1. - m_schedule_next - one_minus_m_schedule_next = tf.math.sub(one, m_schedule_next); - // 1. - math_ops.pow(beta_2_t, local_step) - v_t_prime_denominator = - tf.math.sub(one, tf.math.pow(betaTwoConst, tf.dtypes.cast(localStepConst, TFloat32.DTYPE))); - return Optional.empty(); - } - - /** {@inheritDoc} */ - @Override - protected Op applyDense(Output gradient, Output variable) { - DataType dType = gradient.dataType(); - Variable m = getSlot(variable, FIRST_MOMENT).get(); // first Moment - Variable v = getSlot(variable, SECOND_MOMENT).get(); // Second Moment - - // g_prime = grad / coefficients['one_minus_m_schedule_new'] - Operand g_prime = tf.math.div(gradient, tf.dtypes.cast(one_minus_m_schedule_new, dType)); - // m_t = (coefficients['beta_1_t'] * m + coefficients['one_minus_beta_1_t'] * grad) - Operand m_t = - tf.math.add( - tf.math.mul(tf.dtypes.cast(betaOneConst, dType), m), - tf.math.mul(tf.dtypes.cast(one_minus_beta_1, dType), gradient)); - // m_t = state_ops.assign(m, m_t, use_locking=self._use_locking) - // update m - m_t = tf.assign(m, m_t, Assign.useLocking(true)); - - // m_t_prime = m_t / coefficients['one_minus_m_schedule_next'] - Operand m_t_prime = tf.math.div(m_t, tf.dtypes.cast(one_minus_m_schedule_next, dType)); - - // v_t = (coefficients['beta_2_t'] * v + coefficients['one_minus_beta_2_t'] * - // math_ops.square(grad)) - Operand v_t = - tf.math.add( - tf.math.mul(tf.dtypes.cast(betaTwoConst, dType), v), - tf.math.mul(tf.dtypes.cast(one_minus_beta_2, dType), tf.math.square(gradient))); - // v_t = state_ops.assign(v, v_t, use_locking=self._use_locking) - // update v - v_t = tf.assign(v, v_t, Assign.useLocking(true)); - - // v_t_prime = v_t / coefficients['v_t_prime_denominator'] - Operand v_t_prime = tf.math.div(v_t, tf.dtypes.cast(v_t_prime_denominator, dType)); - - // m_t_bar = (coefficients['one_minus_m_t'] * g_prime + coefficients['m_t_1'] * m_t_prime) - Operand m_t_bar = - tf.math.add( - tf.math.mul(tf.dtypes.cast(one_minus_m_t, dType), g_prime), - tf.math.mul(tf.dtypes.cast(m_t_1, dType), m_t_prime)); - // var_t = var - coefficients['lr_t'] * m_t_bar / (math_ops.sqrt(v_t_prime) + - // coefficients['epsilon']) - Operand var_t = - tf.math.sub( - variable, - tf.math.div( - tf.math.mul(tf.dtypes.cast(learningRateConst, dType), m_t_bar), - tf.math.add(tf.math.sqrt(v_t_prime), tf.dtypes.cast(epsilonConst, dType)))); - // assign(var, var_t, use_locking=self._use_locking) - return tf.assign(variable, var_t, Assign.useLocking(true)); - } - - /** - * Gathers up the update operations into a single op that can be used as a run target. - * - *

    Adds the betaOne, betaTwo and mu updates to the end of the updates list. - * - * @param updateOperations The update operations. - * @param name The name of the run target. - * @return A NoOp with a control dependency on each update operation. - */ - @Override - protected Op finish(List updateOperations, String name) { - iterations++; // increment the step; - updateOperations.add(tf.assign(betaOnePower, tf.math.mul(betaOnePower, betaOneConst))); - updateOperations.add(tf.assign(betaTwoPower, tf.math.mul(betaTwoPower, betaTwoConst))); - return super.finish(updateOperations, name); - } - - /** {@inheritDoc} */ - @Override - public String getOptimizerName() { - return "Nadam"; - } - - /** - * Sets the config object based on the current state of the Optmizer. - * - * @param learningRate The learning rate. Defaults to 0.001. - * @param betaOne The exponential decay rate for the 1st moment estimates. Defaults to 0.9. - * @param betaTwo The exponential decay rate for the 2nd moment estimates. Defaults to 0.999. - * @param epsilon A small constant for numerical stability. This epsilon is "epsilon hat" in the - * Kingma and Ba paper (in the formula just before Section 2.1), not the epsilon in Algorithm - * 1 of the paper. Defaults to 1e-7. - */ - private void initConfig(float learningRate, float betaOne, float betaTwo, float epsilon) { - config.put(NAME_KEY, this.getOptimizerName()); - config.put(LEARNING_RATE_KEY, learningRate); - config.put(EPSILON_KEY, epsilon); - config.put(BETA_ONE_KEY, betaOne); - config.put(BETA_TWO_KEY, betaTwo); - } -} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/OptimizerInterface.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/OptimizerInterface.java deleted file mode 100644 index 0074ecb0f0a..00000000000 --- a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/OptimizerInterface.java +++ /dev/null @@ -1,61 +0,0 @@ -/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -=======================================================================*/ -package org.tensorflow.keras.optimizers; - -import java.util.Map; -import org.tensorflow.Graph; -import org.tensorflow.op.Ops; - -/** The main Interface for Keras Optimizers */ -public interface OptimizerInterface { - - /** The value for the name key in the Config object */ - String NAME_KEY = "name"; - - /** - * Get a TensorFlow Graph from the Ops. - * - * @param tf the TensorFlow Ops - * @return the graph - * @throws java.lang.IllegalArgumentException if the TensorFlow Ops does not represent Graph mode - */ - static Graph assertGraph(Ops tf) { - if(!tf.scope().env().isGraph()) { - throw new IllegalArgumentException("Invalid environment, Optimizers can only be used in Graph Mode"); - } - return (Graph) tf.scope().env(); - } - - /** - * Return the config object used to initialize the Optimizer - * - * @return the config object used to initialize the Optimizer - */ - Map getConfig(); - - /** - * Return the current learning rate - * - * @return the current learning rate - */ - float getLearningRate(); - - /** - * Set the learning rate - * - * @param learningRate the learning rate; - */ - void setLearningRate(float learningRate); -} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/Optimizers.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/Optimizers.java deleted file mode 100644 index 1facb307b38..00000000000 --- a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/Optimizers.java +++ /dev/null @@ -1,125 +0,0 @@ -/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -=======================================================================*/ -package org.tensorflow.keras.optimizers; - -import org.tensorflow.framework.optimizers.Optimizer; -import org.tensorflow.op.Ops; - -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.util.HashMap; -import java.util.Map; -import java.util.function.Function; -import java.util.logging.Level; -import java.util.logging.Logger; -import java.util.function.Supplier; - -/** - * Functions to get an Optimizer based on String name, an Optimizer class, or lambda function. - * - *

    Example: - * - *

    - *     Adam instance = Optimizers.get(tf, "adam");
    - *     Ftrl instance = Optimizers.get(tf, ltf -> new Ftrl(ltf, 0.1f);
    - * 
    - */ -public class Optimizers { - - static Map> map = - new HashMap>() { - { - put("adadelta", AdaDelta::new); - put("adagrad", AdaGrad::new); - put("adagrad-da", AdaGradDA::new); - put("adam", Adam::new); - put("adamax", Adamax::new); - put("ftrl", Ftrl::new); - put("nadam", Nadam::new); - put("rmsprop", RMSProp::new); - put("sgd", SGD::new); - } - }; - - /** - * Get an Optimizer - * - * @param optimizerFunction either a String that identifies the Optimizer, an Optimizer class, or - * an Optimizer object. - * @return the Optimizer object or null if not found. - */ - public static Optimizer get(Ops tf, Object optimizerFunction) { - return get(tf, optimizerFunction, null); - } - - /** - * Get an Optimizer - * - * @param func a lamda function that returns the Optimizer - * @return the Intializer object - */ - public static Optimizer get(Ops tf, Function func) { - return func.apply(tf); - } - - /** - * Get an Optimizer - * - * @param optimizerFunction either a String that identifies the Optimizer, an Optimizer class, or - * * an Optimizer object. - * @param custom_functions a map of Optimizer lambdas that will be queried if the Optimizer is - * not found in the standard keys - * @return the Optimizer object - */ - public static Optimizer get( - Ops tf, Object optimizerFunction, Map> custom_functions) { - if (optimizerFunction != null) { - if (optimizerFunction instanceof String) { - String s = - optimizerFunction - .toString(); // do this for Java 8 rather than Pattern Matching for instanceof - Function function = map.get(s); - if (function == null && custom_functions != null) { - function = custom_functions.get(s); - } - return function != null ? function.apply(tf) : null; - } else if (optimizerFunction instanceof Class) { - // do this for Java 8 rather than Pattern Matching for instanceof - Class c = (Class) optimizerFunction; - try { - Constructor ctor = c.getConstructor(Ops.class); - return (Optimizer) ctor.newInstance(tf); - } catch (NoSuchMethodException - | InstantiationException - | IllegalAccessException - | IllegalArgumentException - | InvocationTargetException ex) { - Logger.getLogger(Optimizers.class.getName()).log(Level.SEVERE, null, ex); - } - } else if (optimizerFunction instanceof Optimizer) { - return (Optimizer) optimizerFunction; - } else if (optimizerFunction instanceof Function) { - return ((Function) optimizerFunction).apply(tf); - } else if (optimizerFunction instanceof Supplier) { - return ((Supplier) optimizerFunction).get(); - } - } else { - return null; - } - - throw new IllegalArgumentException( - "optimizerFunction must be a symbolic name, Optimizer, Function, Supplier or a Class object"); - } -} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/RMSProp.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/RMSProp.java deleted file mode 100644 index c66c6bdd388..00000000000 --- a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/RMSProp.java +++ /dev/null @@ -1,201 +0,0 @@ -/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the ); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -=======================================================================*/ -package org.tensorflow.keras.optimizers; - -import java.util.HashMap; -import java.util.Map; -import static org.tensorflow.keras.optimizers.OptimizerInterface.NAME_KEY; -import static org.tensorflow.keras.optimizers.OptimizerInterface.assertGraph; -import org.tensorflow.op.Ops; - -/** RMSProp Optimizer that implements the RMSProp algorithm. */ -public class RMSProp extends org.tensorflow.framework.optimizers.RMSProp - implements OptimizerInterface { - - public static final String LEARNING_RATE_KEY = "learning_rate"; - public static final String DECAY_KEY = "decay"; - public static final String MOMENTUM_KEY = "momentum"; - public static final String EPSILON_KEY = "epsilon"; - public static final String CENTERED_KEY = "centered"; - - public static final float LEARNING_RATE_DEFAULT = 0.001F; - public static final float DECAY_DEFAULT = 0.9F; - public static final float MOMENTUM_DEFAULT = 0.0F; - public static final float EPSILON_DEFAULT = 1e-07F; - public static final boolean CENTERED_DEFAULT = false; - - private Map config = new HashMap<>(); - private float learningRate; - - /** - * Create an RMSProp Optimizer with the following defaults, name="RMSProp", learning_rate=0.001, - * decay=0.9, momentum=0.0, epsilon=1e-07, centered=false - * - * @param tf the TensorFlow Ops - */ - public RMSProp(Ops tf) { - this( - tf, - LEARNING_RATE_DEFAULT, - DECAY_DEFAULT, - MOMENTUM_DEFAULT, - EPSILON_DEFAULT, - CENTERED_DEFAULT); - } - - /** - * Create an RMSProp Optimizer with the following defaults, name="RMSProp", decay=0.9, - * momentum=0.0, epsilon=1e-07, centered=false - * - * @param tf the TensorFlow Ops - * @param learningRate The learning rate. - */ - public RMSProp(Ops tf, float learningRate) { - this(tf, learningRate, DECAY_DEFAULT, MOMENTUM_DEFAULT, EPSILON_DEFAULT, CENTERED_DEFAULT); - } - - /** - * Create an RMSProp Optimizer with the following defaults, decay=0.9, momentum=0.0, - * epsilon=1e-07, centered=false - * - * @param tf the TensorFlow Ops - * @param name prefix for the operations created when applying gradients. Defaults to "RMSProp" - * @param learningRate The learning rate. - */ - public RMSProp(Ops tf, String name, float learningRate) { - this( - tf, name, learningRate, DECAY_DEFAULT, MOMENTUM_DEFAULT, EPSILON_DEFAULT, CENTERED_DEFAULT); - } - - /** - * Create an RMSProp Optimizer - * - * @param tf the TensorFlow Ops - * @param learningRate The learning rate. Defaults to 0.001. - * @param decay Discounting factor for the history/coming gradient. Defaults to 0.9. - * @param momentum hyperparameter that accelerates descent in the relevant direction and dampens - * oscillations. Must be between [0, 1]. - * @param epsilon A small constant for numerical stability. - * @param centered If True, gradients are normalized by the estimated variance of the gradient; if - * False, by the uncentered second moment. - */ - public RMSProp( - Ops tf, float learningRate, float decay, float momentum, float epsilon, boolean centered) { - super(assertGraph(tf), learningRate, decay, momentum, epsilon, centered); - initConfig(learningRate, decay, momentum, epsilon, centered); - } - - /** - * Create an RMSProp Optimizer - * - * @param tf the TensorFlow Ops - * @param name prefix for the operations created when applying gradients. Defaults to "RMSProp" - * @param learningRate The learning rate. Defaults to 0.001. - * @param decay Discounting factor for the history/coming gradient. Defaults to 0.9. - * @param momentum hyperparameter that accelerates descent in the relevant direction and dampens - * oscillations. Must be between [0, 1]. - * @param epsilon A small constant for numerical stability. - * @param centered If True, gradients are normalized by the estimated variance of the gradient; if - * False, by the uncentered second moment. - */ - public RMSProp( - Ops tf, - String name, - float learningRate, - float decay, - float momentum, - float epsilon, - boolean centered) { - super(assertGraph(tf), name, learningRate, decay, momentum, epsilon, centered); - initConfig(learningRate, decay, momentum, epsilon, centered); - } - - /** - * Create a RMSProp Optimizer using a configuration - * - * @param tf the TensorFlow Ops - * @param config a config object to initialize the Optimizer, the config object has keys for - * "name", "learning_rate", "decay", "momentum", "epsilon" and "centered". If a key is missing - * the default value is used. - * @return the RMSProp optimizer - */ - public static RMSProp fromConfig(Ops tf, Map config) { - return create(tf, config); - } - - /** - * Create a RMSProp Optimizer using a configuration - * - * @param tf the TensorFlow Ops - * @param config a config object to initialize the Optimizer, the config object has keys for - * "name", "learning_rate", "decay", "momentum", "epsilon" and "centered". If a key is missing - * the default value is used. - * @return the RMSProp optimizer - */ - public static RMSProp create(Ops tf, Map config) { - - String name = (String) config.get(NAME_KEY); - float learningRate = (float) config.getOrDefault(LEARNING_RATE_KEY, LEARNING_RATE_DEFAULT); - float decay = (float) config.getOrDefault(DECAY_KEY, DECAY_DEFAULT); - float momentum = (float) config.getOrDefault(MOMENTUM_KEY, MOMENTUM_DEFAULT); - float epsilon = (float) config.getOrDefault(EPSILON_KEY, EPSILON_DEFAULT); - boolean centered = (boolean) config.getOrDefault(CENTERED_KEY, CENTERED_DEFAULT); - if (name == null) { - return new RMSProp(tf, learningRate, decay, momentum, epsilon, centered); - } else { - return new RMSProp(tf, name, learningRate, decay, momentum, epsilon, centered); - } - } - - /** - * Initialize the configuration based on which constructor is called. - * - * @param learningRate The learning rate. Defaults to 0.001. - * @param decay Discounting factor for the history/coming gradient. Defaults to 0.9. - * @param momentum hyperparameter that accelerates descent in the relevant direction and dampens - * oscillations. Must be between [0, 1]. - * @param epsilon A small constant for numerical stability. - * @param centered If True, gradients are normalized by the estimated variance of the gradient; if - * False, by the uncentered second moment. - */ - private void initConfig( - float learningRate, float decay, float momentum, float epsilon, boolean centered) { - this.learningRate = learningRate; - config.put(NAME_KEY, this.getOptimizerName()); - config.put(LEARNING_RATE_KEY, learningRate); - config.put(DECAY_KEY, decay); - config.put(MOMENTUM_KEY, momentum); - config.put(EPSILON_KEY, epsilon); - config.put(CENTERED_KEY, centered); - } - - /** {@inheritDoc} */ - @Override - public Map getConfig() { - return config; - } - - /** {@inheritDoc} */ - @Override - public float getLearningRate() { - return this.learningRate; - } - - /** {@inheritDoc} */ - @Override - public void setLearningRate(float learningRate) { - this.learningRate = learningRate; - } -} diff --git a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/SGD.java b/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/SGD.java deleted file mode 100644 index f89682f6820..00000000000 --- a/tensorflow-keras/src/main/java/org/tensorflow/keras/optimizers/SGD.java +++ /dev/null @@ -1,200 +0,0 @@ -/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the ); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -=======================================================================*/ -package org.tensorflow.keras.optimizers; - -import java.util.HashMap; -import java.util.Map; -import static org.tensorflow.keras.optimizers.OptimizerInterface.assertGraph; -import org.tensorflow.op.Ops; - -/** Stochastic Gradient Descent and momentum optimizer. */ -public class SGD extends org.tensorflow.framework.optimizers.Momentum - implements OptimizerInterface { - - public static final String LEARNING_RATE_KEY = "learning_rate"; - public static final String MOMENTUM_KEY = "momentum"; - public static final String NESTEROV_KEY = "nesterov"; - - public static final float LEARNING_RATE_DEFAULT = 0.01F; - public static final float MOMENTUM_DEFAULT = 0.0F; - public static final boolean NESTEROV_DEFAULT = false; - - private Map config = new HashMap<>(); - private float learningRate; - - /** - * Create a Stochastic Gradient Descent optimizer using defaults: name="SGD", learning_rate=0.01, - * momentum=0.0, and nesterov=false - * - * @param tf the TensorFlow Ops - */ - public SGD(Ops tf) { - this(tf, LEARNING_RATE_DEFAULT, MOMENTUM_DEFAULT, NESTEROV_DEFAULT); - } - - /** - * Create a Stochastic gradient descent optimizer using defaults: name="SGD", momentum=0.0, and - * nesterov=false - * - * @param tf the TensorFlow Ops - * @param learningRate The learning rate. Defaults to 0.01. - */ - public SGD(Ops tf, float learningRate) { - this(tf, learningRate, MOMENTUM_DEFAULT, NESTEROV_DEFAULT); - } - - /** - * Create a Stochastic gradient descent optimizer using defaults: name="SGD", and nesterov=false - * - * @param tf the TensorFlow Ops - * @param learningRate The learning rate. Defaults to 0.01. - * @param momentum hyperparameter that accelerates SGD in the relevant direction and dampens - * oscillations. Must be between [0, 1]. - */ - public SGD(Ops tf, float learningRate, float momentum) { - this(tf, learningRate, momentum, NESTEROV_DEFAULT); - } - - /** - * Create a Stochastic gradient descent optimizer using defaults: momentum=0.0, and nesterov=false - * - * @param tf the TensorFlow Ops - * @param name prefix for the operations created when applying gradients - * @param learningRate The learning rate. Defaults to 0.01. - */ - public SGD(Ops tf, String name, float learningRate) { - this(tf, name, learningRate, MOMENTUM_DEFAULT, NESTEROV_DEFAULT); - } - - /** - * create a Stochastic gradient descent optimizer using defaults: momentum=0.0, and nesterov=false - * - * @param tf the TensorFlow Ops - * @param name prefix for the operations created when applying gradients - * @param learningRate The learning rate. Defaults to 0.01. - * @param momentum hyperparameter that accelerates SGD in the relevant direction and dampens - * oscillations. Must be between [0, 1]. - */ - public SGD(Ops tf, String name, float learningRate, float momentum) { - this(tf, name, learningRate, momentum, NESTEROV_DEFAULT); - } - - /** - * Create a Stochastic gradient descent optimizer - * - * @param tf the TensorFlow Ops - * @param learningRate The learning rate. Defaults to 0.01. - * @param momentum hyperparameter that accelerates SGD in the relevant direction and dampens - * oscillations. Must be between [0, 1]. - * @param useNesterov Whether to apply Nesterov momentum. Defaults to `false`. - */ - public SGD(Ops tf, float learningRate, float momentum, boolean useNesterov) { - super(assertGraph(tf), learningRate, momentum, useNesterov); - if(momentum < 0 || momentum > 1) - throw new IllegalArgumentException("\"momentum\" must be between [0, 1]."); - initConfig(learningRate, momentum, useNesterov); - } - - /** - * Create a Stochastic gradient descent optimizer - * - * @param tf the TensorFlow Ops - * @param name prefix for the operations created when applying gradients - * @param learningRate The learning rate. Defaults to 0.01. - * @param momentum hyperparameter that accelerates SGD in the relevant direction and dampens - * oscillations. Must be between [0, 1]. - * @param useNesterov Whether to apply Nesterov momentum. Defaults to `false`. - */ - public SGD(Ops tf, String name, float learningRate, float momentum, boolean useNesterov) { - super(assertGraph(tf), name, learningRate, momentum, useNesterov); - if(momentum < 0 || momentum > 1) - throw new IllegalArgumentException("\"momentum\" must be between [0, 1]."); - initConfig(learningRate, momentum, useNesterov); - } - - /** - * Create a Stochastic gradient descent optimizer - * - * @param tf the TensorFlow Ops - * @param config a config object to initialize, the config object has keys for "name", - * "learning_rate", "momentum", and "nesterov". If a key is missing the default value is used. - * @return the Stochastic gradient descent optimizer - */ - public static SGD fromConfig(Ops tf, Map config) { - return create(tf, config); - } - - /** - * Create a Stochastic gradient descent optimizer - * - * @param tf the TensorFlow Ops - * @param config a config object to initialize, the config object has keys for "name", - * "learning_rate", "momentum", and "nesterov". If a key is missing the default value is used. - * @return the Stochastic gradient descent optimizer - */ - public static SGD create(Ops tf, Map config) { - - String name = (String) config.get(NAME_KEY); - float learningRate = (float) config.getOrDefault(LEARNING_RATE_KEY, LEARNING_RATE_DEFAULT); - float momentum = (float) config.getOrDefault(MOMENTUM_KEY, MOMENTUM_DEFAULT); - boolean nesterov = (boolean) config.getOrDefault(NESTEROV_KEY, NESTEROV_DEFAULT); - if (name == null) { - return new SGD(tf, learningRate, momentum, nesterov); - } else { - return new SGD(tf, name, learningRate, momentum, nesterov); - } - } - - /** - * Initialize the configuration ased on which constructor is called. - * - * @param learningRate learningRate The learning rate. Defaults to 0.01. - * @param momentum hyperparameter that accelerates SGD in the relevant direction and dampens - * oscillations. Must be between [0, 1]. - * @param useNesterov Whether to apply Nesterov momentum. Defaults to `false`. - */ - private void initConfig(float learningRate, float momentum, boolean useNesterov) { - this.learningRate = learningRate; - config.put(NAME_KEY, this.getOptimizerName()); - config.put(LEARNING_RATE_KEY, learningRate); - config.put(MOMENTUM_KEY, momentum); - config.put(NESTEROV_KEY, useNesterov); - } - - /** { @inheritDoc } */ - @Override - public Map getConfig() { - return config; - } - - /** {@inheritDoc} */ - @Override - public float getLearningRate() { - return this.learningRate; - } - - /** {@inheritDoc} */ - @Override - public void setLearningRate(float learningRate) { - this.learningRate = learningRate; - } - - // overide the momentum name to return "SGD" - /** {@inheritDoc} */ - @Override - public String getOptimizerName() { - return "SGD"; - } -} From ebefc2ea54b2f3d53b8b8f92912175eac50330d0 Mon Sep 17 00:00:00 2001 From: Jim Clarke Date: Wed, 9 Sep 2020 16:17:37 -0400 Subject: [PATCH 31/33] Fixed generics --- .../op/nn/SoftmaxCrossEntropyWithLogits.java | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SoftmaxCrossEntropyWithLogits.java b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SoftmaxCrossEntropyWithLogits.java index 8447b985bb0..0c8bac697ed 100644 --- a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SoftmaxCrossEntropyWithLogits.java +++ b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/op/nn/SoftmaxCrossEntropyWithLogits.java @@ -64,52 +64,55 @@ public class SoftmaxCrossEntropyWithLogits { * @param logits Per-label activations, typically a linear output. These activation energies are * interpreted as unnormalized log probabilities. * @param axis The class dimension. -1 is the last dimension. - * @param the data type of the logits * @param the number type of the operands * @return the softmax cross entropy loss. Its type is the same as logits and its * shape is the same as labels except that it does not have the last dimension of * labels. */ @Endpoint(name = "softmaxCrossEntropyWithLogits") - public static Operand softmaxCrossEntropyWithLogits( - Scope scope, Operand labels, Operand logits, int axis) { + public static Operand softmaxCrossEntropyWithLogits( + Scope scope, Operand labels, Operand logits, int axis) { scope = scope.withSubScope("SoftmaxCrossEntropyWithLogits"); axis = axis % logits.asOutput().shape().numDimensions(); if (axis < 0) { axis += logits.asOutput().shape().numDimensions(); } - Operand preciseLogits = - (Operand) - logits; // cannot use generics cause logits of bool gets cast to TFloat32 boolean convertToFloat32 = logits.asOutput().dataType() == TFloat16.DTYPE || logits.asOutput().dataType() == TBfloat16.DTYPE; if (convertToFloat32) { - preciseLogits = Cast.create(scope, logits, TFloat32.DTYPE); + Operand result = softmaxCrossEntropyWithLogits(scope, + Cast.create(scope, labels, TFloat32.DTYPE), + Cast.create(scope, logits, TFloat32.DTYPE), + axis); + return Cast.create(scope, result, logits.asOutput().dataType()); + } else if(!logits.asOutput().dataType().equals(labels.asOutput().dataType())) { + return softmaxCrossEntropyWithLogits(scope, + Cast.create(scope, labels, logits.asOutput().dataType()), + logits, + axis); } - /* cannot use generics on DataType because preciseLogits may have been cast. */ - DataType dtype = preciseLogits.asOutput().dataType(); - Operand castLabels = Cast.create(scope, labels, dtype); - Operand inputRank = Cast.create(scope, Rank.create(scope, preciseLogits), TInt64.DTYPE); + + Operand inputRank = Cast.create(scope, Rank.create(scope, logits), TInt64.DTYPE); Shape shape = logits.asOutput().shape(); // Move the dim to the end if dim is not the last dimension. - if (axis != -1 && axis != preciseLogits.asOutput().shape().numDimensions() - 1) { - preciseLogits = moveDimToEnd(scope, preciseLogits, axis, inputRank); - castLabels = moveDimToEnd(scope, castLabels, axis, inputRank); + if (axis != -1 && axis != logits.asOutput().shape().numDimensions() - 1) { + logits = moveDimToEnd(scope, logits, axis, inputRank); + labels = moveDimToEnd(scope, labels, axis, inputRank); } - Shape inputShape = preciseLogits.asOutput().shape(); - preciseLogits = flattenOuterDims(scope, preciseLogits); - castLabels = flattenOuterDims(scope, castLabels); + Shape inputShape = logits.asOutput().shape(); + logits = flattenOuterDims(scope, logits); + labels = flattenOuterDims(scope, labels); - org.tensorflow.op.nn.raw.SoftmaxCrossEntropyWithLogits smax = + org.tensorflow.op.nn.raw.SoftmaxCrossEntropyWithLogits smax = org.tensorflow.op.nn.raw.SoftmaxCrossEntropyWithLogits.create( - scope, preciseLogits, castLabels); + scope, logits, (Operand)labels); /* cannot use generic on cost, because cost may be recast later. */ - Operand cost = smax.loss(); + Operand cost = smax.loss(); Operand outputShape = Slice.create( scope, @@ -132,9 +135,6 @@ public static Operand softmaxCrossEntrop cost = Reshape.create(scope, cost, Constant.vectorOf(scope, newArray)); } - if (convertToFloat32) { - cost = Cast.create(scope, cost, logits.asOutput().dataType()); - } return cost; } @@ -195,7 +195,7 @@ private static Operand flattenOuterDims(Scope scope, Oper * @param the data type of the rank * @return the reshaped input */ - private static Operand moveDimToEnd( + private static Operand moveDimToEnd( Scope scope, Operand input, int dimIndex, Operand rank) { DataType rankDType = rank.asOutput().dataType(); Operand one = Cast.create(scope, Constant.scalarOf(scope, 1), rankDType); From 7915e6309e9db7a536cda24eac8264578cdbfe31 Mon Sep 17 00:00:00 2001 From: Jim Clarke Date: Wed, 9 Sep 2020 19:03:09 -0400 Subject: [PATCH 32/33] Fixed from Unit test results --- .../annotations/org/tensorflow/op/NnOps.java | 5 +- .../framework/optimizers/Optimizer.java | 8 + .../framework/optimizers/Optimizers.java | 2 +- .../framework/optimizers/AdaGradDATest.java | 11 +- .../framework/optimizers/AdaGradTest.java | 19 +- .../framework/optimizers/AdamTest.java | 17 +- .../framework/optimizers/AdamaxTest.java | 8 +- .../framework/utils/EagerTestSession.java | 311 +++++--------- .../framework/utils/GraphTestSession.java | 382 ++++++------------ .../framework/utils/TestSession.java | 209 +++++----- 10 files changed, 363 insertions(+), 609 deletions(-) diff --git a/tensorflow-core/tensorflow-core-api/src/gen/annotations/org/tensorflow/op/NnOps.java b/tensorflow-core/tensorflow-core-api/src/gen/annotations/org/tensorflow/op/NnOps.java index e15cccdd339..33caf02d890 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/annotations/org/tensorflow/op/NnOps.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/annotations/org/tensorflow/op/NnOps.java @@ -1863,14 +1863,13 @@ public Softmax softmax(Operand logits) { * @param logits Per-label activations, typically a linear output. These activation energies are * interpreted as unnormalized log probabilities. * @param axis The class dimension. -1 is the last dimension. - * @param the data type of the logits * @param the number type of the operands * @return the softmax cross entropy loss. Its type is the same as logits and its * shape is the same as labels except that it does not have the last dimension of * labels. */ - public Operand softmaxCrossEntropyWithLogits( - Operand labels, Operand logits, int axis) { + public Operand softmaxCrossEntropyWithLogits( + Operand labels, Operand logits, int axis) { return SoftmaxCrossEntropyWithLogits.softmaxCrossEntropyWithLogits(scope, labels, logits, axis); } diff --git a/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/Optimizer.java b/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/Optimizer.java index f7032d18b38..933a54c7670 100644 --- a/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/Optimizer.java +++ b/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/Optimizer.java @@ -71,6 +71,14 @@ protected Optimizer(Graph graph, String name) { this.globals = new ArrayList<>(); } + /** + * Gets the Optimizer's Ops instance + * @return the Optimizer's Ops instance + */ + public final Ops getTF() { + return tf; + } + /** * Creates a name by combining a variable name and a slot name * diff --git a/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/Optimizers.java b/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/Optimizers.java index 7099a050d3e..8d7f9620984 100644 --- a/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/Optimizers.java +++ b/tensorflow-framework/src/main/java/org/tensorflow/framework/optimizers/Optimizers.java @@ -15,7 +15,7 @@ public enum Optimizers { NADAM(Nadam::new), RMSPROP(RMSProp::new), MOMENTUM(Momentum::new), - GRADIENT_DESCENT(Momentum::new); + GRADIENT_DESCENT(GradientDescent::new); private final Function creator; diff --git a/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/AdaGradDATest.java b/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/AdaGradDATest.java index e1a12fb00fe..ef9053ff1eb 100644 --- a/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/AdaGradDATest.java +++ b/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/AdaGradDATest.java @@ -55,9 +55,13 @@ public void testBasic() { float[] grads0Init = {0.1F, 0.2F}; float[] grads1Init = {0.01F, 0.02F}; try (TestSession session = TestSession.createTestSession(tfMode)) { - Ops tf = session.getTF(); Graph graph = session.getGraph(); + float learningRate = 3.0F; + + AdaGradDA instance = new AdaGradDA(graph, learningRate); + Ops tf = instance.getTF(); + Shape shape0 = Shape.of(var0Init.length); Shape shape1 = Shape.of(var1Init.length); Variable var0 = tf.withName("var0").variable(shape0, TFloat32.DTYPE); @@ -70,13 +74,10 @@ public void testBasic() { Constant grads1 = tf.constant(grads1Init); /* initialize the local variables */ - /* initialize the local variables */ + session.run(var0Initializer); session.run(var1Initializer); - float learningRate = 3.0F; - - AdaGrad instance = new AdaGrad(graph, learningRate); /* build the GradsAnvVars */ List> gradsAndVars = new ArrayList<>(); diff --git a/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/AdaGradTest.java b/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/AdaGradTest.java index efbdd7be585..c5ae178b84c 100644 --- a/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/AdaGradTest.java +++ b/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/AdaGradTest.java @@ -71,9 +71,12 @@ public void testBasic() { FloatNdArray accum1Np = NdArrays.vectorOf(accum1); try (TestSession session = TestSession.createTestSession(tfMode)) { - Ops tf = session.getTF(); Graph graph = session.getGraph(); + float learningRate = 3.0F; + AdaGrad instance = new AdaGrad(graph, learningRate, 0.1f); + Ops tf = instance.getTF(); + Shape shape0 = Shape.of(var0Init.length); Shape shape1 = Shape.of(var1Init.length); Variable var0 = tf.withName("var0").variable(shape0, TFloat32.DTYPE); @@ -85,9 +88,7 @@ public void testBasic() { Constant grads0 = tf.constant(grads0Init); Constant grads1 = tf.constant(grads1Init); - float learningRate = 3.0F; - AdaGrad instance = new AdaGrad(graph, learningRate); /* build the GradsAnvVars */ List> gradsAndVars = new ArrayList<>(); @@ -116,15 +117,11 @@ public void testBasic() { for (int step = 0; step < numSteps; step++) { session.run(adaUpdate); - - accum0Np = caclulateAccum(accum0Np, grads0Np); - var0Np = calculate(var0Np, accum0Np, grads0Np, learningRate); - session.evaluate(var0Np, var0); - - accum1Np = caclulateAccum(accum1Np, grads1Np); - var1Np = calculate(var1Np, accum1Np, grads1Np, learningRate); - session.evaluate(var1Np, var1); } + float[] expected0 = {-1.6026098728179932f, -0.6026098728179932f}; + session.evaluate(expected0, var0); + float[] expected1 = {2.715679168701172f, 3.715679168701172f}; + session.evaluate(expected1, var1); } } diff --git a/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/AdamTest.java b/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/AdamTest.java index dbcc7c0dae2..1aeed5a9772 100644 --- a/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/AdamTest.java +++ b/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/AdamTest.java @@ -69,10 +69,15 @@ public void testBasic() { float epsilon1 = 1e-3F; try (TestSession session = TestSession.createTestSession(tfMode)) { - Ops tf = session.getTF(); + float learningRate = 0.001F; + float beta1 = 0.9F; + float beta2 = 0.999F; Graph graph = session.getGraph(); + session.setEpsilon(epsilon1); + Adam instance = new Adam(graph, learningRate); + Ops tf = instance.getTF(); Shape shape0 = Shape.of(var0Init.length); Shape shape1 = Shape.of(var1Init.length); Variable var0 = tf.withName("var0").variable(shape0, TFloat32.DTYPE); @@ -88,16 +93,14 @@ public void testBasic() { session.run(var0Initializer); session.run(var1Initializer); - float learningRate = 0.001F; - float beta1 = 0.9F; - float beta2 = 0.999F; + /* build the GradsAnvVars */ List> gradsAndVars = new ArrayList<>(); gradsAndVars.add(new Optimizer.GradAndVar<>(grads0.asOutput(), var0.asOutput())); gradsAndVars.add(new Optimizer.GradAndVar<>(grads1.asOutput(), var1.asOutput())); - Adam instance = new Adam(graph, learningRate); + Op update = instance.applyGradients(gradsAndVars, "AdamTest"); @@ -139,7 +142,7 @@ public void testBasic() { session .getGraphSession() .runner() - .fetch("beta1Power") + .fetch("beta1_power") .run() .get(0) .expect(TFloat32.DTYPE)) { @@ -149,7 +152,7 @@ public void testBasic() { session .getGraphSession() .runner() - .fetch("beta2Power") + .fetch("beta2_power") .run() .get(0) .expect(TFloat32.DTYPE)) { diff --git a/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/AdamaxTest.java b/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/AdamaxTest.java index 1b12a2f76a1..de17395f76a 100644 --- a/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/AdamaxTest.java +++ b/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/AdamaxTest.java @@ -94,9 +94,11 @@ public void testBasic() { float epsilon1 = 1e-3F; try (TestSession session = TestSession.createTestSession(tfMode)) { - Ops tf = session.getTF(); Graph graph = session.getGraph(); + Adamax instance = new Adamax(graph); + Ops tf = instance.getTF(); + Shape shape0 = Shape.of(var0Init.length); Shape shape1 = Shape.of(var1Init.length); Variable var0 = tf.withName("var0").variable(shape0, TFloat32.DTYPE); @@ -112,7 +114,7 @@ public void testBasic() { session.run(var0Initializer); session.run(var1Initializer); - Adamax instance = new Adamax(graph); + /* build the GradsAnvVars */ List> gradsAndVars = new ArrayList<>(); gradsAndVars.add(new GradAndVar<>(grads0.asOutput(), var0.asOutput())); @@ -151,7 +153,7 @@ public void testBasic() { session .getGraphSession() .runner() - .fetch("beta1Power") + .fetch("beta1_power") .run() .get(0) .expect(TFloat32.DTYPE)) { diff --git a/tensorflow-framework/src/test/java/org/tensorflow/framework/utils/EagerTestSession.java b/tensorflow-framework/src/test/java/org/tensorflow/framework/utils/EagerTestSession.java index c52168e1f11..9fb9885505c 100644 --- a/tensorflow-framework/src/test/java/org/tensorflow/framework/utils/EagerTestSession.java +++ b/tensorflow-framework/src/test/java/org/tensorflow/framework/utils/EagerTestSession.java @@ -16,6 +16,7 @@ import org.tensorflow.*; import org.tensorflow.ndarray.FloatNdArray; +import org.tensorflow.ndarray.IntNdArray; import org.tensorflow.ndarray.Shape; import org.tensorflow.op.Ops; import org.tensorflow.types.*; @@ -29,7 +30,7 @@ import static org.junit.jupiter.api.Assertions.*; -/** Eaager Mode Test Session */ +/** Eager Mode Test Session */ public class EagerTestSession extends TestSession { private final EagerSession session; @@ -83,79 +84,47 @@ public EagerSession getEagerSession() { /** {@inheritDoc} */ @Override public void evaluate(double expected, Operand input) { - DataType dtype = input.asOutput().dataType(); + DataType dtype = input.asOutput().dataType(); if (dtype == TFloat32.DTYPE) { Operand o = (Operand) input; AtomicInteger index = new AtomicInteger(); if (debug) { o.data() .scalars() - .forEach( - f -> { - System.out.printf("%d). %f\n", index.getAndIncrement(), f.getFloat()); - }); + .forEach(f -> System.out.printf("%d). %f\n", index.getAndIncrement(), f.getFloat())); } index.set(0); - o.data() - .scalars() - .forEach( - f -> { - assertEquals(expected, f.getFloat(), epsilon); - }); + o.data().scalars().forEach(f -> assertEquals(expected, f.getFloat(), epsilon)); } else if (dtype == TFloat64.DTYPE) { Operand o = (Operand) input; AtomicInteger index = new AtomicInteger(); if (debug) { o.data() .scalars() - .forEach( - f -> { - System.out.printf("%d). %f\n", index.getAndIncrement(), f.getDouble()); - }); + .forEach(f -> System.out.printf("%d). %f\n", index.getAndIncrement(), f.getDouble())); } index.set(0); - o.data() - .scalars() - .forEach( - f -> { - assertEquals((double) expected, f.getDouble(), epsilon); - }); + o.data().scalars().forEach(f -> assertEquals(expected, f.getDouble(), epsilon)); } else if (dtype == TInt32.DTYPE) { Operand o = (Operand) input; AtomicInteger index = new AtomicInteger(); if (debug) { o.data() .scalars() - .forEach( - f -> { - System.out.printf("%d). %d\n", index.getAndIncrement(), f.getInt()); - }); + .forEach(f -> System.out.printf("%d). %d\n", index.getAndIncrement(), f.getInt())); } index.set(0); - o.data() - .scalars() - .forEach( - f -> { - assertEquals((int) expected, f.getInt()); - }); + o.data().scalars().forEach(f -> assertEquals((int) expected, f.getInt())); } else if (dtype == TInt64.DTYPE) { Operand o = (Operand) input; AtomicInteger index = new AtomicInteger(); if (debug) { o.data() .scalars() - .forEach( - f -> { - System.out.printf("%d). %d\n", index.getAndIncrement(), f.getLong()); - }); + .forEach(f -> System.out.printf("%d). %d\n", index.getAndIncrement(), f.getLong())); } index.set(0); - o.data() - .scalars() - .forEach( - f -> { - assertEquals((long) expected, f.getLong()); - }); + o.data().scalars().forEach(f -> assertEquals((long) expected, f.getLong())); } } @@ -167,160 +136,120 @@ public void evaluate(Number[] expected, Output input) { expected.length, size, () -> String.format("expected length (%d) != to input length (%d)", expected.length, size)); - DataType dtype = input.dataType(); + DataType dtype = input.dataType(); if (dtype == TFloat32.DTYPE) { Output o = (Output) input; AtomicInteger index = new AtomicInteger(); if (debug) { o.data() .scalars() - .forEach( - f -> { - System.out.printf("%d). %f\n", index.getAndIncrement(), f.getFloat()); - }); + .forEach(f -> System.out.printf("%d). %f\n", index.getAndIncrement(), f.getFloat())); } index.set(0); o.data() .scalars() .forEach( - f -> { - assertEquals(expected[index.getAndIncrement()].floatValue(), f.getFloat(), epsilon); - }); + f -> + assertEquals( + expected[index.getAndIncrement()].floatValue(), f.getFloat(), epsilon)); } else if (dtype == TFloat64.DTYPE) { Output o = (Output) input; AtomicInteger index = new AtomicInteger(); if (debug) { o.data() .scalars() - .forEach( - f -> { - System.out.printf("%d). %f\n", index.getAndIncrement(), f.getDouble()); - }); + .forEach(f -> System.out.printf("%d). %f\n", index.getAndIncrement(), f.getDouble())); } index.set(0); o.data() .scalars() .forEach( - f -> { - assertEquals( - expected[index.getAndIncrement()].doubleValue(), f.getDouble(), epsilon); - }); + f -> + assertEquals( + expected[index.getAndIncrement()].doubleValue(), f.getDouble(), epsilon)); } else if (dtype == TInt32.DTYPE) { Output o = (Output) input; AtomicInteger index = new AtomicInteger(); if (debug) { o.data() .scalars() - .forEach( - f -> { - System.out.printf("%d). %d\n", index.getAndIncrement(), f.getInt()); - }); + .forEach(f -> System.out.printf("%d). %d\n", index.getAndIncrement(), f.getInt())); } index.set(0); o.data() .scalars() - .forEach( - f -> { - assertEquals(expected[index.getAndIncrement()].intValue(), f.getInt()); - }); + .forEach(f -> assertEquals(expected[index.getAndIncrement()].intValue(), f.getInt())); } else if (dtype == TInt64.DTYPE) { Output o = (Output) input; AtomicInteger index = new AtomicInteger(); if (debug) { o.data() .scalars() - .forEach( - f -> { - System.out.printf("%d). %d\n", index.getAndIncrement(), f.getLong()); - }); + .forEach(f -> System.out.printf("%d). %d\n", index.getAndIncrement(), f.getLong())); } index.set(0); o.data() .scalars() - .forEach( - f -> { - assertEquals(expected[index.getAndIncrement()].longValue(), f.getLong()); - }); + .forEach(f -> assertEquals(expected[index.getAndIncrement()].longValue(), f.getLong())); } } /** {@inheritDoc} */ @Override public void evaluate(FloatNdArray expected, Output input) { - DataType dtype = input.dataType(); + DataType dtype = input.dataType(); if (dtype == TFloat32.DTYPE) { Output o = (Output) input; AtomicLong index = new AtomicLong(); if (debug) { o.data() .scalars() - .forEach( - f -> { - System.out.printf("%d). %f\n", index.getAndIncrement(), f.getFloat()); - }); + .forEach(f -> System.out.printf("%d). %f\n", index.getAndIncrement(), f.getFloat())); } index.set(0); o.data() .scalars() .forEach( - f -> { - assertEquals(expected.getFloat(index.getAndIncrement()), f.getFloat(), epsilon); - }); + f -> assertEquals(expected.getFloat(index.getAndIncrement()), f.getFloat(), epsilon)); } else if (dtype == TFloat64.DTYPE) { Output o = (Output) input; AtomicInteger index = new AtomicInteger(); if (debug) { o.data() .scalars() - .forEach( - f -> { - System.out.printf("%d). %f\n", index.getAndIncrement(), f.getDouble()); - }); + .forEach(f -> System.out.printf("%d). %f\n", index.getAndIncrement(), f.getDouble())); } index.set(0); o.data() .scalars() .forEach( - f -> { - assertEquals( - (double) expected.getFloat(index.getAndIncrement()), f.getDouble(), epsilon); - }); + f -> + assertEquals(expected.getFloat(index.getAndIncrement()), f.getDouble(), epsilon)); } else if (dtype == TInt32.DTYPE) { Output o = (Output) input; AtomicInteger index = new AtomicInteger(); if (debug) { o.data() .scalars() - .forEach( - f -> { - System.out.printf("%d). %d\n", index.getAndIncrement(), f.getInt()); - }); + .forEach(f -> System.out.printf("%d). %d\n", index.getAndIncrement(), f.getInt())); } index.set(0); - o.data() - .scalars() - .forEach( - f -> { - assertEquals((int) expected.getFloat(index.getAndIncrement()), f.getInt()); - }); + for (IntNdArray f : o.data().scalars()) { + assertEquals((int) expected.getFloat(index.getAndIncrement()), f.getInt()); + } } else if (dtype == TInt64.DTYPE) { Output o = (Output) input; AtomicInteger index = new AtomicInteger(); if (debug) { o.data() .scalars() - .forEach( - f -> { - System.out.printf("%d). %d\n", index.getAndIncrement(), f.getLong()); - }); + .forEach(f -> System.out.printf("%d). %d\n", index.getAndIncrement(), f.getLong())); } index.set(0); o.data() .scalars() .forEach( - f -> { - assertEquals((long) expected.getFloat(index.getAndIncrement()), f.getLong()); - }); + f -> assertEquals((long) expected.getFloat(index.getAndIncrement()), f.getLong())); } } @@ -328,7 +257,7 @@ public void evaluate(FloatNdArray expected, Output input) { @Override public void evaluate(Output input, Predicate predicate) { AtomicInteger index = new AtomicInteger(); - DataType dtype = input.asOutput().dataType(); + DataType dtype = input.asOutput().dataType(); boolean isScalar = input.shape().equals(Shape.scalar()); if (dtype == TFloat32.DTYPE) { Output o = (Output) input; @@ -340,11 +269,10 @@ public void evaluate(Output input, Predicate predic o.data() .scalars() .forEachIndexed( - (idx, f) -> { - System.out.printf( - "%d). %b <==> %f\n", - index.getAndIncrement(), predicate.test(f.getFloat()), f.getFloat()); - }); + (idx, f) -> + System.out.printf( + "%d). %b <==> %f\n", + index.getAndIncrement(), predicate.test(f.getFloat()), f.getFloat())); } } index.set(0); @@ -353,10 +281,7 @@ public void evaluate(Output input, Predicate predic } else { o.data() .scalars() - .forEachIndexed( - (idx, f) -> { - assertTrue(predicate.test(o.data().getFloat())); - }); + .forEachIndexed((idx, f) -> assertTrue(predicate.test(o.data().getFloat()))); } } else if (dtype == TFloat64.DTYPE) { Output o = (Output) input; @@ -368,11 +293,10 @@ public void evaluate(Output input, Predicate predic o.data() .scalars() .forEachIndexed( - (idx, f) -> { - System.out.printf( - "%d). %b <==> %f\n", - index.getAndIncrement(), predicate.test(f.getDouble()), f.getDouble()); - }); + (idx, f) -> + System.out.printf( + "%d). %b <==> %f\n", + index.getAndIncrement(), predicate.test(f.getDouble()), f.getDouble())); } } index.set(0); @@ -381,10 +305,7 @@ public void evaluate(Output input, Predicate predic } else { o.data() .scalars() - .forEachIndexed( - (idx, f) -> { - assertTrue(predicate.test(o.data().getDouble())); - }); + .forEachIndexed((idx, f) -> assertTrue(predicate.test(o.data().getDouble()))); } } else if (dtype == TInt32.DTYPE) { Output o = (Output) input; @@ -396,11 +317,10 @@ public void evaluate(Output input, Predicate predic o.data() .scalars() .forEachIndexed( - (idx, f) -> { - System.out.printf( - "%d). %b <==> %d\n", - index.getAndIncrement(), predicate.test(f.getInt()), f.getInt()); - }); + (idx, f) -> + System.out.printf( + "%d). %b <==> %d\n", + index.getAndIncrement(), predicate.test(f.getInt()), f.getInt())); } } index.set(0); @@ -409,10 +329,7 @@ public void evaluate(Output input, Predicate predic } else { o.data() .scalars() - .forEachIndexed( - (idx, f) -> { - assertTrue(predicate.test(o.data().getInt())); - }); + .forEachIndexed((idx, f) -> assertTrue(predicate.test(o.data().getInt()))); } } else if (dtype == TInt64.DTYPE) { Output o = (Output) input; @@ -424,11 +341,10 @@ public void evaluate(Output input, Predicate predic o.data() .scalars() .forEachIndexed( - (idx, f) -> { - System.out.printf( - "%d). %b <==> %d\n", - index.getAndIncrement(), predicate.test(f.getLong()), f.getLong()); - }); + (idx, f) -> + System.out.printf( + "%d). %b <==> %d\n", + index.getAndIncrement(), predicate.test(f.getLong()), f.getLong())); } } index.set(0); @@ -437,10 +353,7 @@ public void evaluate(Output input, Predicate predic } else { o.data() .scalars() - .forEachIndexed( - (idx, f) -> { - assertTrue(predicate.test(o.data().getLong())); - }); + .forEachIndexed((idx, f) -> assertTrue(predicate.test(o.data().getLong()))); } } else { fail("Unexpected DataType: " + dtype); @@ -460,19 +373,13 @@ public void evaluate(String[] expected, Output input) { input .data() .scalars() - .forEach( - f -> { - System.out.printf("%d). %s\n", index.getAndIncrement(), f.getObject()); - }); + .forEach(f -> System.out.printf("%d). %s\n", index.getAndIncrement(), f.getObject())); } index.set(0); input .data() .scalars() - .forEach( - f -> { - assertEquals(expected[index.getAndIncrement()], f.getObject()); - }); + .forEach(f -> assertEquals(expected[index.getAndIncrement()], f.getObject())); } /** {@inheritDoc} */ @@ -488,19 +395,13 @@ public void evaluate(Boolean[] expected, Output input) { input .data() .scalars() - .forEach( - f -> { - System.out.printf("%d). %b\n", index.getAndIncrement(), f.getBoolean()); - }); + .forEach(f -> System.out.printf("%d). %b\n", index.getAndIncrement(), f.getBoolean())); } index.set(0); input .data() .scalars() - .forEach( - f -> { - assertEquals(expected[index.getAndIncrement()], f.getBoolean()); - }); + .forEach(f -> assertEquals(expected[index.getAndIncrement()], f.getBoolean())); } /** {@inheritDoc} */ @@ -508,9 +409,9 @@ public void evaluate(Boolean[] expected, Output input) { public void evaluate(Output expected, Output input) { assert input.shape().equals(expected.shape()) : String.format( - "expected shape (%s) != to input shape (%ds)", + "expected shape (%s) != to input shape (%s)", expected.shape().toString(), input.shape().toString()); - DataType dtype = input.asOutput().dataType(); + DataType dtype = input.asOutput().dataType(); boolean isScalar = input.shape().equals(Shape.scalar()); if (dtype == TFloat32.DTYPE) { Output x = (Output) expected; @@ -523,11 +424,10 @@ public void evaluate(Output expected, Output input) { o.data() .scalars() .forEachIndexed( - (idx, f) -> { - System.out.printf( - "%d). %f <==> %f\n", - index.getAndIncrement(), x.data().getFloat(idx), f.getFloat()); - }); + (idx, f) -> + System.out.printf( + "%d). %f <==> %f\n", + index.getAndIncrement(), x.data().getFloat(idx), f.getFloat())); } } index.set(0); @@ -550,11 +450,10 @@ public void evaluate(Output expected, Output input) { o.data() .scalars() .forEachIndexed( - (idx, f) -> { - System.out.printf( - "%d). %f <==> %f\n", - index.getAndIncrement(), x.data().getDouble(idx), f.getDouble()); - }); + (idx, f) -> + System.out.printf( + "%d). %f <==> %f\n", + index.getAndIncrement(), x.data().getDouble(idx), f.getDouble())); } } index.set(0); @@ -577,11 +476,10 @@ public void evaluate(Output expected, Output input) { o.data() .scalars() .forEachIndexed( - (idx, f) -> { - System.out.printf( - "%d). %d <==> %d\n", - index.getAndIncrement(), x.data().getInt(idx), f.getInt()); - }); + (idx, f) -> + System.out.printf( + "%d). %d <==> %d\n", + index.getAndIncrement(), x.data().getInt(idx), f.getInt())); } } index.set(0); @@ -603,11 +501,10 @@ public void evaluate(Output expected, Output input) { o.data() .scalars() .forEachIndexed( - (idx, f) -> { - System.out.printf( - "%d). %d <==> %d\n", - index.getAndIncrement(), x.data().getLong(idx), f.getLong()); - }); + (idx, f) -> + System.out.printf( + "%d). %d <==> %d\n", + index.getAndIncrement(), x.data().getLong(idx), f.getLong())); } } index.set(0); @@ -629,11 +526,10 @@ public void evaluate(Output expected, Output input) { o.data() .scalars() .forEachIndexed( - (idx, f) -> { - System.out.printf( - "%d). %s <==> %s\n", - index.getAndIncrement(), x.data().getObject(idx), f.getObject()); - }); + (idx, f) -> + System.out.printf( + "%d). %s <==> %s\n", + index.getAndIncrement(), x.data().getObject(idx), f.getObject())); } } index.set(0); @@ -655,11 +551,10 @@ public void evaluate(Output expected, Output input) { o.data() .scalars() .forEachIndexed( - (idx, f) -> { - System.out.printf( - "%d). %b <==> %b\n", - index.getAndIncrement(), x.data().getBoolean(idx), f.getBoolean()); - }); + (idx, f) -> + System.out.printf( + "%d). %b <==> %b\n", + index.getAndIncrement(), x.data().getBoolean(idx), f.getBoolean())); } } index.set(0); @@ -676,61 +571,43 @@ public void evaluate(Output expected, Output input) { /** {@inheritDoc} */ @Override public void print(PrintWriter writer, Output input) { - DataType dtype = input.asOutput().dataType(); + DataType dtype = input.asOutput().dataType(); if (dtype == TFloat32.DTYPE) { Output o = (Output) input; AtomicInteger index = new AtomicInteger(); o.data() .scalars() - .forEach( - f -> { - System.out.printf("%d). %f\n", index.getAndIncrement(), f.getFloat()); - }); + .forEach(f -> System.out.printf("%d). %f\n", index.getAndIncrement(), f.getFloat())); } else if (dtype == TFloat64.DTYPE) { Output o = (Output) input; AtomicInteger index = new AtomicInteger(); o.data() .scalars() - .forEach( - f -> { - System.out.printf("%d). %f\n", index.getAndIncrement(), f.getDouble()); - }); + .forEach(f -> System.out.printf("%d). %f\n", index.getAndIncrement(), f.getDouble())); } else if (dtype == TInt32.DTYPE) { Output o = (Output) input; AtomicInteger index = new AtomicInteger(); o.data() .scalars() - .forEach( - f -> { - System.out.printf("%d). %d\n", index.getAndIncrement(), f.getInt()); - }); + .forEach(f -> System.out.printf("%d). %d\n", index.getAndIncrement(), f.getInt())); } else if (dtype == TInt64.DTYPE) { Output o = (Output) input; AtomicInteger index = new AtomicInteger(); o.data() .scalars() - .forEach( - f -> { - System.out.printf("%d). %d\n", index.getAndIncrement(), f.getLong()); - }); + .forEach(f -> System.out.printf("%d). %d\n", index.getAndIncrement(), f.getLong())); } else if (dtype == TString.DTYPE) { Output o = (Output) input; AtomicInteger index = new AtomicInteger(); o.data() .scalars() - .forEach( - f -> { - System.out.printf("%d). %s\n", index.getAndIncrement(), f.getObject()); - }); + .forEach(f -> System.out.printf("%d). %s\n", index.getAndIncrement(), f.getObject())); } else if (dtype == TBool.DTYPE) { Output o = (Output) input; AtomicInteger index = new AtomicInteger(); o.data() .scalars() - .forEach( - f -> { - System.out.printf("%d). %b\n", index.getAndIncrement(), f.getBoolean()); - }); + .forEach(f -> System.out.printf("%d). %b\n", index.getAndIncrement(), f.getBoolean())); } else { writer.println("Unexpected DataType: " + dtype); } diff --git a/tensorflow-framework/src/test/java/org/tensorflow/framework/utils/GraphTestSession.java b/tensorflow-framework/src/test/java/org/tensorflow/framework/utils/GraphTestSession.java index 3231b0f50cd..0416267ae59 100644 --- a/tensorflow-framework/src/test/java/org/tensorflow/framework/utils/GraphTestSession.java +++ b/tensorflow-framework/src/test/java/org/tensorflow/framework/utils/GraphTestSession.java @@ -92,12 +92,7 @@ public EagerSession getEagerSession() { /** {@inheritDoc} */ @Override public void initialize() { - graph - .initializers() - .forEach( - initializer -> { - session.runner().addTarget(initializer).run(); - }); + graph.initializers().forEach(initializer -> session.runner().addTarget(initializer).run()); } /** {@inheritDoc} */ @@ -109,7 +104,7 @@ public void run(Op op) { /** {@inheritDoc} */ @Override public void evaluate(double expected, Operand input) { - DataType dtype = input.asOutput().dataType(); + DataType dtype = input.asOutput().dataType(); if (dtype == TFloat32.DTYPE) { AtomicInteger index = new AtomicInteger(); if (debug) { @@ -118,22 +113,13 @@ public void evaluate(double expected, Operand input) { result .data() .scalars() - .forEach( - f -> { - System.out.printf("%d). %f\n", index.getAndIncrement(), f.getFloat()); - }); + .forEach(f -> System.out.printf("%d). %f\n", index.getAndIncrement(), f.getFloat())); } } index.set(0); try (Tensor result = this.getGraphSession().runner().fetch(input).run().get(0).expect(TFloat32.DTYPE)) { - result - .data() - .scalars() - .forEach( - f -> { - assertEquals((float) expected, f.getFloat(), epsilon); - }); + result.data().scalars().forEach(f -> assertEquals((float) expected, f.getFloat(), epsilon)); } } else if (dtype == TFloat64.DTYPE) { AtomicInteger index = new AtomicInteger(); @@ -143,22 +129,13 @@ public void evaluate(double expected, Operand input) { result .data() .scalars() - .forEach( - f -> { - System.out.printf("%d). %f\n", index.getAndIncrement(), f.getDouble()); - }); + .forEach(f -> System.out.printf("%d). %f\n", index.getAndIncrement(), f.getDouble())); } } index.set(0); try (Tensor result = this.getGraphSession().runner().fetch(input).run().get(0).expect(TFloat64.DTYPE)) { - result - .data() - .scalars() - .forEach( - f -> { - assertEquals(expected, f.getDouble(), epsilon); - }); + result.data().scalars().forEach(f -> assertEquals(expected, f.getDouble(), epsilon)); } } else if (dtype == TInt32.DTYPE) { AtomicInteger index = new AtomicInteger(); @@ -168,25 +145,15 @@ public void evaluate(double expected, Operand input) { result .data() .scalars() - .forEach( - f -> { - System.out.printf("%d). %d\n", index.getAndIncrement(), f.getInt()); - }); + .forEach(f -> System.out.printf("%d). %d\n", index.getAndIncrement(), f.getInt())); } } index.set(0); try (Tensor result = this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt32.DTYPE)) { - result - .data() - .scalars() - .forEach( - f -> { - assertEquals((int) expected, f.getInt()); - }); + result.data().scalars().forEach(f -> assertEquals((int) expected, f.getInt())); } } else if (dtype == TInt64.DTYPE) { - Output o = (Output) input; AtomicInteger index = new AtomicInteger(); if (debug) { try (Tensor result = @@ -194,22 +161,13 @@ public void evaluate(double expected, Operand input) { result .data() .scalars() - .forEach( - f -> { - System.out.printf("%d). %d\n", index.getAndIncrement(), f.getLong()); - }); + .forEach(f -> System.out.printf("%d). %d\n", index.getAndIncrement(), f.getLong())); } } index.set(0); try (Tensor result = this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt64.DTYPE)) { - result - .data() - .scalars() - .forEach( - f -> { - assertEquals((long) expected, f.getLong()); - }); + result.data().scalars().forEach(f -> assertEquals((long) expected, f.getLong())); } } else { fail("Unexpected DataType: " + dtype); @@ -224,7 +182,7 @@ public void evaluate(Number[] expected, Output input) { expected.length, size, () -> String.format("expected length (%d) != to input length (%d)", expected.length, size)); - DataType dtype = input.asOutput().dataType(); + DataType dtype = input.asOutput().dataType(); if (dtype == TFloat32.DTYPE) { AtomicInteger index = new AtomicInteger(); if (debug) { @@ -233,10 +191,7 @@ public void evaluate(Number[] expected, Output input) { result .data() .scalars() - .forEach( - f -> { - System.out.printf("%d). %f\n", index.getAndIncrement(), f.getFloat()); - }); + .forEach(f -> System.out.printf("%d). %f\n", index.getAndIncrement(), f.getFloat())); } } index.set(0); @@ -246,10 +201,9 @@ public void evaluate(Number[] expected, Output input) { .data() .scalars() .forEach( - f -> { - assertEquals( - expected[index.getAndIncrement()].floatValue(), f.getFloat(), epsilon); - }); + f -> + assertEquals( + expected[index.getAndIncrement()].floatValue(), f.getFloat(), epsilon)); } } else if (dtype == TFloat64.DTYPE) { AtomicInteger index = new AtomicInteger(); @@ -259,10 +213,7 @@ public void evaluate(Number[] expected, Output input) { result .data() .scalars() - .forEach( - f -> { - System.out.printf("%d). %f\n", index.getAndIncrement(), f.getDouble()); - }); + .forEach(f -> System.out.printf("%d). %f\n", index.getAndIncrement(), f.getDouble())); } } index.set(0); @@ -272,10 +223,9 @@ public void evaluate(Number[] expected, Output input) { .data() .scalars() .forEach( - f -> { - assertEquals( - expected[index.getAndIncrement()].doubleValue(), f.getDouble(), epsilon); - }); + f -> + assertEquals( + expected[index.getAndIncrement()].doubleValue(), f.getDouble(), epsilon)); } } else if (dtype == TInt32.DTYPE) { AtomicInteger index = new AtomicInteger(); @@ -285,10 +235,7 @@ public void evaluate(Number[] expected, Output input) { result .data() .scalars() - .forEach( - f -> { - System.out.printf("%d). %d\n", index.getAndIncrement(), f.getInt()); - }); + .forEach(f -> System.out.printf("%d). %d\n", index.getAndIncrement(), f.getInt())); } } index.set(0); @@ -297,13 +244,9 @@ public void evaluate(Number[] expected, Output input) { result .data() .scalars() - .forEach( - f -> { - assertEquals(expected[index.getAndIncrement()].intValue(), f.getInt()); - }); + .forEach(f -> assertEquals(expected[index.getAndIncrement()].intValue(), f.getInt())); } } else if (dtype == TInt64.DTYPE) { - Output o = (Output) input; AtomicInteger index = new AtomicInteger(); if (debug) { try (Tensor result = @@ -311,10 +254,7 @@ public void evaluate(Number[] expected, Output input) { result .data() .scalars() - .forEach( - f -> { - System.out.printf("%d). %d\n", index.getAndIncrement(), f.getLong()); - }); + .forEach(f -> System.out.printf("%d). %d\n", index.getAndIncrement(), f.getLong())); } } index.set(0); @@ -323,10 +263,7 @@ public void evaluate(Number[] expected, Output input) { result .data() .scalars() - .forEach( - f -> { - assertEquals(expected[index.getAndIncrement()].longValue(), f.getLong()); - }); + .forEach(f -> assertEquals(expected[index.getAndIncrement()].longValue(), f.getLong())); } } else { fail("Unexpected DataType: " + dtype); @@ -336,7 +273,7 @@ public void evaluate(Number[] expected, Output input) { /** {@inheritDoc} */ @Override public void evaluate(FloatNdArray expected, Output input) { - DataType dtype = input.asOutput().dataType(); + DataType dtype = input.asOutput().dataType(); if (dtype == TFloat32.DTYPE) { AtomicLong index = new AtomicLong(); if (debug) { @@ -345,10 +282,7 @@ public void evaluate(FloatNdArray expected, Output input) { result .data() .scalars() - .forEach( - f -> { - System.out.printf("%d). %f\n", index.getAndIncrement(), f.getFloat()); - }); + .forEach(f -> System.out.printf("%d). %f\n", index.getAndIncrement(), f.getFloat())); } } index.set(0); @@ -358,9 +292,9 @@ public void evaluate(FloatNdArray expected, Output input) { .data() .scalars() .forEach( - f -> { - assertEquals(expected.getFloat(index.getAndIncrement()), f.getFloat(), epsilon); - }); + f -> + assertEquals( + expected.getFloat(index.getAndIncrement()), f.getFloat(), epsilon)); } } else if (dtype == TFloat64.DTYPE) { AtomicInteger index = new AtomicInteger(); @@ -370,10 +304,7 @@ public void evaluate(FloatNdArray expected, Output input) { result .data() .scalars() - .forEach( - f -> { - System.out.printf("%d). %f\n", index.getAndIncrement(), f.getDouble()); - }); + .forEach(f -> System.out.printf("%d). %f\n", index.getAndIncrement(), f.getDouble())); } } index.set(0); @@ -383,10 +314,9 @@ public void evaluate(FloatNdArray expected, Output input) { .data() .scalars() .forEach( - f -> { - assertEquals( - (double) expected.getFloat(index.getAndIncrement()), f.getDouble(), epsilon); - }); + f -> + assertEquals( + expected.getFloat(index.getAndIncrement()), f.getDouble(), epsilon)); } } else if (dtype == TInt32.DTYPE) { AtomicInteger index = new AtomicInteger(); @@ -396,10 +326,7 @@ public void evaluate(FloatNdArray expected, Output input) { result .data() .scalars() - .forEach( - f -> { - System.out.printf("%d). %d\n", index.getAndIncrement(), f.getInt()); - }); + .forEach(f -> System.out.printf("%d). %d\n", index.getAndIncrement(), f.getInt())); } } index.set(0); @@ -409,12 +336,9 @@ public void evaluate(FloatNdArray expected, Output input) { .data() .scalars() .forEach( - f -> { - assertEquals((int) expected.getFloat(index.getAndIncrement()), f.getInt()); - }); + f -> assertEquals((int) expected.getFloat(index.getAndIncrement()), f.getInt())); } } else if (dtype == TInt64.DTYPE) { - Output o = (Output) input; AtomicInteger index = new AtomicInteger(); if (debug) { try (Tensor result = @@ -422,10 +346,7 @@ public void evaluate(FloatNdArray expected, Output input) { result .data() .scalars() - .forEach( - f -> { - System.out.printf("%d). %d\n", index.getAndIncrement(), f.getLong()); - }); + .forEach(f -> System.out.printf("%d). %d\n", index.getAndIncrement(), f.getLong())); } } index.set(0); @@ -435,9 +356,7 @@ public void evaluate(FloatNdArray expected, Output input) { .data() .scalars() .forEach( - f -> { - assertEquals((long) expected.getFloat(index.getAndIncrement()), f.getLong()); - }); + f -> assertEquals((long) expected.getFloat(index.getAndIncrement()), f.getLong())); } } else { fail("Unexpected DataType: " + dtype); @@ -459,10 +378,7 @@ public void evaluate(String[] expected, Output input) { result .data() .scalars() - .forEach( - f -> { - System.out.printf("%d). %s\n", index.getAndIncrement(), f.getObject()); - }); + .forEach(f -> System.out.printf("%d). %s\n", index.getAndIncrement(), f.getObject())); } } index.set(0); @@ -471,10 +387,7 @@ public void evaluate(String[] expected, Output input) { result .data() .scalars() - .forEach( - f -> { - assertEquals(expected[index.getAndIncrement()], f.getObject()); - }); + .forEach(f -> assertEquals(expected[index.getAndIncrement()], f.getObject())); } } @@ -493,10 +406,7 @@ public void evaluate(Boolean[] expected, Output input) { result .data() .scalars() - .forEach( - f -> { - System.out.printf("%d). %b\n", index.getAndIncrement(), f.getObject()); - }); + .forEach(f -> System.out.printf("%d). %b\n", index.getAndIncrement(), f.getObject())); } } index.set(0); @@ -505,10 +415,7 @@ public void evaluate(Boolean[] expected, Output input) { result .data() .scalars() - .forEach( - f -> { - assertEquals(expected[index.getAndIncrement()], f.getObject()); - }); + .forEach(f -> assertEquals(expected[index.getAndIncrement()], f.getObject())); } } @@ -517,10 +424,16 @@ public void evaluate(Boolean[] expected, Output input) { public void evaluate(Output expected, Output input) { assert input.shape().equals(expected.shape()) : String.format( - "expected shape (%s) != to input shape (%ds)", + "expected shape (%s) != to input shape (%s)", expected.shape().toString(), input.shape().toString()); AtomicInteger index = new AtomicInteger(); - DataType dtype = input.asOutput().dataType(); + DataType dtype = input.asOutput().dataType(); + if (!dtype.equals(expected.dataType())) { + throw new IllegalArgumentException( + String.format( + "Both data type must be equal, inout = %s, expected = %s", + dtype, expected.dataType())); + } boolean isScalar = input.shape().equals(Shape.scalar()); if (dtype == TFloat32.DTYPE) { final Output finalExpected = (Output) expected; @@ -537,13 +450,12 @@ public void evaluate(Output expected, Output input) { .data() .scalars() .forEachIndexed( - (idx, f) -> { - System.out.printf( - "%d). %f <==> %f\n", - index.getAndIncrement(), - finalExpected.data().getFloat(idx), - f.getFloat()); - }); + (idx, f) -> + System.out.printf( + "%d). %f <==> %f\n", + index.getAndIncrement(), + finalExpected.data().getFloat(idx), + f.getFloat())); } } } @@ -559,9 +471,8 @@ public void evaluate(Output expected, Output input) { .data() .scalars() .forEachIndexed( - (idx, f) -> { - assertEquals(expectedResult.data().getFloat(idx), f.getFloat(), epsilon); - }); + (idx, f) -> + assertEquals(expectedResult.data().getFloat(idx), f.getFloat(), epsilon)); } } } else if (dtype == TFloat64.DTYPE) { @@ -579,13 +490,12 @@ public void evaluate(Output expected, Output input) { .data() .scalars() .forEachIndexed( - (idx, f) -> { - System.out.printf( - "%d). %f <==> %f\n", - index.getAndIncrement(), - finalExpected.data().getDouble(idx), - f.getDouble()); - }); + (idx, f) -> + System.out.printf( + "%d). %f <==> %f\n", + index.getAndIncrement(), + finalExpected.data().getDouble(idx), + f.getDouble())); } } } @@ -601,9 +511,8 @@ public void evaluate(Output expected, Output input) { .data() .scalars() .forEachIndexed( - (idx, f) -> { - assertEquals(expectedResult.data().getDouble(idx), f.getDouble(), epsilon); - }); + (idx, f) -> + assertEquals(expectedResult.data().getDouble(idx), f.getDouble(), epsilon)); } } } else if (dtype == TInt32.DTYPE) { @@ -621,11 +530,10 @@ public void evaluate(Output expected, Output input) { .data() .scalars() .forEachIndexed( - (idx, f) -> { - System.out.printf( - "%d). %d <==> %d\n", - index.getAndIncrement(), finalExpected.data().getInt(idx), f.getInt()); - }); + (idx, f) -> + System.out.printf( + "%d). %d <==> %d\n", + index.getAndIncrement(), finalExpected.data().getInt(idx), f.getInt())); } } } @@ -641,9 +549,7 @@ public void evaluate(Output expected, Output input) { .data() .scalars() .forEachIndexed( - (idx, f) -> { - assertEquals(expectedResult.data().getInt(idx), f.getInt(), epsilon); - }); + (idx, f) -> assertEquals(expectedResult.data().getInt(idx), f.getInt(), epsilon)); } } } else if (dtype == TInt64.DTYPE) { @@ -661,11 +567,12 @@ public void evaluate(Output expected, Output input) { .data() .scalars() .forEachIndexed( - (idx, f) -> { - System.out.printf( - "%d). %d <==> %d\n", - index.getAndIncrement(), finalExpected.data().getLong(idx), f.getLong()); - }); + (idx, f) -> + System.out.printf( + "%d). %d <==> %d\n", + index.getAndIncrement(), + finalExpected.data().getLong(idx), + f.getLong())); } } } @@ -681,9 +588,8 @@ public void evaluate(Output expected, Output input) { .data() .scalars() .forEachIndexed( - (idx, f) -> { - assertEquals(expectedResult.data().getLong(idx), f.getLong(), epsilon); - }); + (idx, f) -> + assertEquals(expectedResult.data().getLong(idx), f.getLong(), epsilon)); } } } else if (dtype == TBool.DTYPE) { @@ -701,13 +607,12 @@ public void evaluate(Output expected, Output input) { .data() .scalars() .forEachIndexed( - (idx, f) -> { - System.out.printf( - "%d). %b <==> %b\n", - index.getAndIncrement(), - finalExpected.data().getBoolean(idx), - f.getBoolean()); - }); + (idx, f) -> + System.out.printf( + "%d). %b <==> %b\n", + index.getAndIncrement(), + finalExpected.data().getBoolean(idx), + f.getBoolean())); } } } @@ -723,9 +628,7 @@ public void evaluate(Output expected, Output input) { .data() .scalars() .forEachIndexed( - (idx, f) -> { - assertEquals(expectedResult.data().getBoolean(idx), f.getBoolean()); - }); + (idx, f) -> assertEquals(expectedResult.data().getBoolean(idx), f.getBoolean())); } } } else if (dtype == TString.DTYPE) { @@ -743,13 +646,12 @@ public void evaluate(Output expected, Output input) { .data() .scalars() .forEachIndexed( - (idx, f) -> { - System.out.printf( - "%d). %s <==> %s\n", - index.getAndIncrement(), - finalExpected.data().getObject(idx), - f.getObject()); - }); + (idx, f) -> + System.out.printf( + "%d). %s <==> %s\n", + index.getAndIncrement(), + finalExpected.data().getObject(idx), + f.getObject())); } } } @@ -765,9 +667,7 @@ public void evaluate(Output expected, Output input) { .data() .scalars() .forEachIndexed( - (idx, f) -> { - assertEquals(expectedResult.data().getObject(idx), f.getObject()); - }); + (idx, f) -> assertEquals(expectedResult.data().getObject(idx), f.getObject())); } } } else { @@ -779,7 +679,7 @@ public void evaluate(Output expected, Output input) { @Override public void evaluate(Output input, Predicate predicate) { AtomicInteger index = new AtomicInteger(); - DataType dtype = input.asOutput().dataType(); + DataType dtype = input.asOutput().dataType(); boolean isScalar = input.shape().equals(Shape.scalar()); if (dtype == TFloat32.DTYPE) { if (debug) { @@ -794,11 +694,10 @@ public void evaluate(Output input, Predicate predic .data() .scalars() .forEachIndexed( - (idx, f) -> { - System.out.printf( - "%d). %b <==> %f\n", - index.getAndIncrement(), predicate.test(f.getFloat()), f.getFloat()); - }); + (idx, f) -> + System.out.printf( + "%d). %b <==> %f\n", + index.getAndIncrement(), predicate.test(f.getFloat()), f.getFloat())); } } } @@ -811,10 +710,7 @@ public void evaluate(Output input, Predicate predic result .data() .scalars() - .forEachIndexed( - (idx, f) -> { - assertTrue(predicate.test(result.data().getFloat())); - }); + .forEachIndexed((idx, f) -> assertTrue(predicate.test(result.data().getFloat()))); } } } else if (dtype == TFloat64.DTYPE) { @@ -830,29 +726,23 @@ public void evaluate(Output input, Predicate predic .data() .scalars() .forEachIndexed( - (idx, f) -> { - System.out.printf( - "%d). %b <==> %f\n", - index.getAndIncrement(), predicate.test(f.getDouble()), f.getDouble()); - }); + (idx, f) -> + System.out.printf( + "%d). %b <==> %f\n", + index.getAndIncrement(), predicate.test(f.getDouble()), f.getDouble())); } } } index.set(0); try (Tensor result = - this.getGraphSession().runner().fetch(input).run().get(0).expect(TFloat64.DTYPE); - Tensor expectedResult = - this.getGraphSession().runner().fetch(input).run().get(0).expect(TFloat64.DTYPE)) { + this.getGraphSession().runner().fetch(input).run().get(0).expect(TFloat64.DTYPE)) { if (isScalar) { assertTrue(predicate.test(result.data().getDouble())); } else { result .data() .scalars() - .forEachIndexed( - (idx, f) -> { - assertTrue(predicate.test(result.data().getDouble())); - }); + .forEachIndexed((idx, f) -> assertTrue(predicate.test(result.data().getDouble()))); } } } else if (dtype == TInt32.DTYPE) { @@ -867,29 +757,23 @@ public void evaluate(Output input, Predicate predic .data() .scalars() .forEachIndexed( - (idx, f) -> { - System.out.printf( - "%d). %b <==> %d\n", - index.getAndIncrement(), predicate.test(f.getInt()), f.getInt()); - }); + (idx, f) -> + System.out.printf( + "%d). %b <==> %d\n", + index.getAndIncrement(), predicate.test(f.getInt()), f.getInt())); } } } index.set(0); try (Tensor result = - this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt32.DTYPE); - Tensor expectedResult = - this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt32.DTYPE)) { + this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt32.DTYPE)) { if (isScalar) { assertTrue(predicate.test(result.data().getInt())); } else { result .data() .scalars() - .forEachIndexed( - (idx, f) -> { - assertTrue(predicate.test(result.data().getInt())); - }); + .forEachIndexed((idx, f) -> assertTrue(predicate.test(result.data().getInt()))); } } } else if (dtype == TInt64.DTYPE) { @@ -905,29 +789,23 @@ public void evaluate(Output input, Predicate predic .data() .scalars() .forEachIndexed( - (idx, f) -> { - System.out.printf( - "%d). %b <==> %d\n", - index.getAndIncrement(), predicate.test(f.getLong()), f.getLong()); - }); + (idx, f) -> + System.out.printf( + "%d). %b <==> %d\n", + index.getAndIncrement(), predicate.test(f.getLong()), f.getLong())); } } } index.set(0); try (Tensor result = - this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt64.DTYPE); - Tensor expectedResult = - this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt64.DTYPE)) { + this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt64.DTYPE)) { if (isScalar) { assertTrue(predicate.test(result.data().getLong())); } else { result .data() .scalars() - .forEachIndexed( - (idx, f) -> { - assertTrue(predicate.test(result.data().getLong())); - }); + .forEachIndexed((idx, f) -> assertTrue(predicate.test(result.data().getLong()))); } } } else { @@ -940,7 +818,7 @@ public void evaluate(Output input, Predicate predic public void print(PrintWriter writer, Output input) { boolean isScalar = input.asOutput().shape().size() == 1; - DataType dtype = input.dataType(); + DataType dtype = input.dataType(); if (dtype == TFloat32.DTYPE) { AtomicInteger index = new AtomicInteger(); try (Tensor result = @@ -952,9 +830,7 @@ public void print(PrintWriter writer, Output input) { .data() .scalars() .forEachIndexed( - (idx, f) -> { - writer.printf("%d). %f\n", index.getAndIncrement(), f.getFloat()); - }); + (idx, f) -> writer.printf("%d). %f\n", index.getAndIncrement(), f.getFloat())); } } } else if (dtype == TFloat64.DTYPE) { @@ -970,9 +846,7 @@ public void print(PrintWriter writer, Output input) { .data() .scalars() .forEachIndexed( - (idx, f) -> { - writer.printf("%d). %f\n", index.getAndIncrement(), f.getDouble()); - }); + (idx, f) -> writer.printf("%d). %f\n", index.getAndIncrement(), f.getDouble())); } } } else if (dtype == TInt32.DTYPE) { @@ -982,15 +856,13 @@ public void print(PrintWriter writer, Output input) { this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt32.DTYPE)) { if (isScalar) { writer.printf( - "%d). %f\n", index.getAndIncrement(), ((Output) input).data().getInt()); + "%d). %d\n", index.getAndIncrement(), ((Output) input).data().getInt()); } else { result .data() .scalars() .forEachIndexed( - (idx, f) -> { - writer.printf("%d). %d\n", index.getAndIncrement(), f.getInt()); - }); + (idx, f) -> writer.printf("%d). %d\n", index.getAndIncrement(), f.getInt())); } } } else if (dtype == TInt64.DTYPE) { @@ -1000,15 +872,13 @@ public void print(PrintWriter writer, Output input) { this.getGraphSession().runner().fetch(input).run().get(0).expect(TInt64.DTYPE)) { if (isScalar) { writer.printf( - "%d). %f\n", index.getAndIncrement(), ((Output) input).data().getLong()); + "%d). %d\n", index.getAndIncrement(), ((Output) input).data().getLong()); } else { result .data() .scalars() .forEachIndexed( - (idx, f) -> { - writer.printf("%d). %d\n", index.getAndIncrement(), f.getLong()); - }); + (idx, f) -> writer.printf("%d). %d\n", index.getAndIncrement(), f.getLong())); } } } else if (dtype == TBool.DTYPE) { @@ -1024,9 +894,7 @@ public void print(PrintWriter writer, Output input) { .data() .scalars() .forEachIndexed( - (idx, f) -> { - writer.printf("%d). %b\n", index.getAndIncrement(), f.getBoolean()); - }); + (idx, f) -> writer.printf("%d). %b\n", index.getAndIncrement(), f.getBoolean())); } } } else if (dtype == TString.DTYPE) { @@ -1042,9 +910,7 @@ public void print(PrintWriter writer, Output input) { .data() .scalars() .forEachIndexed( - (idx, f) -> { - writer.printf("%d). %s\n", index.getAndIncrement(), f.getObject()); - }); + (idx, f) -> writer.printf("%d). %s\n", index.getAndIncrement(), f.getObject())); } } } else { diff --git a/tensorflow-framework/src/test/java/org/tensorflow/framework/utils/TestSession.java b/tensorflow-framework/src/test/java/org/tensorflow/framework/utils/TestSession.java index 3758c832db5..a0855eb6260 100644 --- a/tensorflow-framework/src/test/java/org/tensorflow/framework/utils/TestSession.java +++ b/tensorflow-framework/src/test/java/org/tensorflow/framework/utils/TestSession.java @@ -40,11 +40,11 @@ public abstract class TestSession implements AutoCloseable { /** The Test Session mode, either Eager or Graph */ public enum Mode { EAGER, - GRAPH; + GRAPH } /** - * Create an Eager Test Session + * Creates an Eager Test Session * * @return the Eager Test Session */ @@ -53,7 +53,7 @@ public static TestSession createEagerSession() { } /** - * Create a Graph Test Session + * Creates a Graph Test Session * * @return the Graph Test Session */ @@ -62,22 +62,22 @@ public static TestSession createGraphSession() { } /** - * Create a Test Session + * Creates a Test Session * - * @param mode - * @return + * @param mode the type of Session, either eager or graph + * @return returns the test session */ public static TestSession createTestSession(Mode mode) { return mode == Mode.EAGER ? createEagerSession() : createGraphSession(); } - /** Initialize the Test Session, default implementation is do nothing. */ + /** Initializes the Test Session, default implementation is do nothing. */ public void initialize() { // empty } /** - * Run the Operation + * Runs the Operation * * @param op the Operation to run */ @@ -86,7 +86,7 @@ public void run(Op op) { } /** - * Get the Graph + * Gets the Graph * * @return the graph if in Graph Mode, otherwise null. */ @@ -95,120 +95,118 @@ public Graph getGraph() { } /** - * Evaluate the input against the expected value + * Evaluates the input against the expected value * * @param expected the expected value * @param input the operand to evaluate * @param the data type of the input - * @throws org.opentest4j.AssertionFailedError + * @throws org.opentest4j.AssertionFailedError if the evaluation fails */ public void evaluate(Number expected, Operand input) { evaluate(new Number[] {expected}, input); } /** - * Evaluate the input against the expected value + * Evaluates the input against the expected value * * @param expected the expected value * @param input the operand to evaluate - * @param the data type of the input - * @throws org.opentest4j.AssertionFailedError + * @throws org.opentest4j.AssertionFailedError if the evaluation fails */ - public void evaluate(Number expected, Op input) { + public void evaluate(Number expected, Op input) { evaluate(new Number[] {expected}, input); } /** - * Evaluate the input against the expected values + * Evaluates the input against the expected values * * @param expected the expected values * @param input the operand to evaluate - * @param the data type of the input - * @throws org.opentest4j.AssertionFailedError + * @throws org.opentest4j.AssertionFailedError if the evaluation fails */ - public void evaluate(Number[] expected, Op input) { - Output output = input.op().output(0); + public void evaluate(Number[] expected, Op input) { + Output output = input.op().output(0); evaluate(expected, output); } /** - * Evaluate the input against the expected value + * Evaluates the input against the expected value * * @param expected the expected value * @param input the operand to evaluate * @param the data type of the input - * @throws org.opentest4j.AssertionFailedError + * @throws org.opentest4j.AssertionFailedError if the evaluation fails */ public void evaluate(Number[] expected, Operand input) { - Output output = input.asOutput(); + Output output = input.asOutput(); evaluate(expected, output); } /** - * Evaluate the input against the expected value + * Evaluates the input against the expected value * * @param expected the expected value * @param input the operand to evaluate * @param the data type of the input - * @throws org.opentest4j.AssertionFailedError + * @throws org.opentest4j.AssertionFailedError if the evaluation fails */ public void evaluate(byte expected, Operand input) { evaluate((double) expected, input); } /** - * Evaluate the input against the expected value + * Evaluates the input against the expected value * * @param expected the expected value * @param input the operand to evaluate * @param the data type of the input - * @throws org.opentest4j.AssertionFailedError + * @throws org.opentest4j.AssertionFailedError if the evaluation fails */ public void evaluate(int expected, Operand input) { evaluate((double) expected, input); } /** - * Evaluate the input against the expected value + * Evaluates the input against the expected value * * @param expected the expected value * @param input the operand to evaluate * @param the data type of the input - * @throws org.opentest4j.AssertionFailedError + * @throws org.opentest4j.AssertionFailedError if the evaluation fails */ public void evaluate(long expected, Operand input) { evaluate((double) expected, input); } /** - * Evaluate the input against the expected value + * Evaluates the input against the expected value * * @param expected the expected value * @param input the operand to evaluate * @param the data type of the input - * @throws org.opentest4j.AssertionFailedError + * @throws org.opentest4j.AssertionFailedError if the evaluation fails */ public void evaluate(float expected, Operand input) { evaluate((double) expected, input); } /** - * Evaluate the input against the expected value + * Evaluates the input against the expected value * * @param expected the expected value * @param input the operand to evaluate * @param the data type of the input - * @throws org.opentest4j.AssertionFailedError + * @throws org.opentest4j.AssertionFailedError if the evaluation fails */ public abstract void evaluate(double expected, Operand input); /** - * Evaluate the input against the expected value + * Evaluates the input against the expected value * * @param expected the expected value * @param input the operand to evaluate * @param the data type of the input - * @throws org.opentest4j.AssertionFailedError + * @throws org.opentest4j.AssertionFailedError if the evaluation fails */ public void evaluate(byte[] expected, Operand input) { Byte[] iArray = new Byte[expected.length]; @@ -217,12 +215,12 @@ public void evaluate(byte[] expected, Operand input) { } /** - * Evaluate the input against the expected value + * Evaluates the input against the expected value * * @param expected the expected value * @param input the operand to evaluate * @param the data type of the input - * @throws org.opentest4j.AssertionFailedError + * @throws org.opentest4j.AssertionFailedError if the evaluation fails */ public void evaluate(int[] expected, Operand input) { Integer[] iArray = new Integer[expected.length]; @@ -231,12 +229,12 @@ public void evaluate(int[] expected, Operand input) { } /** - * Evaluate the input against the expected value + * Evaluates the input against the expected value * * @param expected the expected value * @param input the operand to evaluate * @param the data type of the input - * @throws org.opentest4j.AssertionFailedError + * @throws org.opentest4j.AssertionFailedError if the evaluation fails */ public void evaluate(long[] expected, Operand input) { Long[] iArray = new Long[expected.length]; @@ -245,12 +243,12 @@ public void evaluate(long[] expected, Operand input) { } /** - * Evaluate the input against the expected values + * Evaluates the input against the expected values * * @param expected the expected values * @param input the operand to evaluate * @param the data type of the input - * @throws org.opentest4j.AssertionFailedError + * @throws org.opentest4j.AssertionFailedError if the evaluation fails */ public void evaluate(float[] expected, Operand input) { Float[] iArray = new Float[expected.length]; @@ -259,12 +257,12 @@ public void evaluate(float[] expected, Operand input) { } /** - * Evaluate the input against the expected value + * Evaluates the input against the expected value * * @param expected the expected value * @param input the operand to evaluate * @param the data type of the input - * @throws org.opentest4j.AssertionFailedError + * @throws org.opentest4j.AssertionFailedError if the evaluation fails */ public void evaluate(double[] expected, Operand input) { Double[] iArray = new Double[expected.length]; @@ -273,207 +271,212 @@ public void evaluate(double[] expected, Operand input) { } /** - * Evaluate the input against the expected value + * Evaluates the input against the expected value * * @param expected the expected value * @param input the operand to evaluate * @param the data type of the input - * @throws org.opentest4j.AssertionFailedError + * @throws org.opentest4j.AssertionFailedError if the evaluation fails */ public abstract void evaluate(Number[] expected, Output input); /** - * Evaluate the input against the expected value + * Evaluates the input against the expected value * * @param expected the expected value * @param input the operand to evaluate - * @param the data type of the input - * @throws org.opentest4j.AssertionFailedError + * @throws org.opentest4j.AssertionFailedError if the evaluation fails */ public void evaluate(String expected, Operand input) { evaluate(new String[] {expected}, input); } /** - * Evaluate the input against the expected value + * Evaluates the input against the expected value * * @param expected the expected value * @param input the operand to evaluate - * @param the data type of the input - * @throws org.opentest4j.AssertionFailedError + * @throws org.opentest4j.AssertionFailedError if the evaluation fails */ public void evaluate(String expected, Op input) { evaluate(new String[] {expected}, input); } /** - * Evaluate the input against the expected value + * Evaluates the input against the expected value * * @param expected the expected value * @param input the operand to evaluate - * @param the data type of the input - * @throws org.opentest4j.AssertionFailedError + * @throws org.opentest4j.AssertionFailedError if the evaluation fails */ public void evaluate(String[] expected, Op input) { - Output output = input.op().output(0); + Output output = input.op().output(0); evaluate(expected, output); } /** - * Evaluate the input against the expected value + * Evaluates the input against the expected value * * @param expected the expected value * @param input the operand to evaluate - * @param the data type of the input - * @throws org.opentest4j.AssertionFailedError + * @throws org.opentest4j.AssertionFailedError if the evaluation fails */ public void evaluate(String[] expected, Operand input) { - Output output = input.asOutput(); + Output output = input.asOutput(); evaluate(expected, output); } /** - * Evaluate the input against the expected value + * Evaluates the input against the expected value * * @param expected the expected value * @param input the operand to evaluate - * @param the data type of the input - * @throws org.opentest4j.AssertionFailedError + * @throws org.opentest4j.AssertionFailedError if the evaluation fails */ public abstract void evaluate(String[] expected, Output input); /** - * Evaluate the input against the expected value + * Evaluates the input against the expected value * * @param expected the expected value * @param input the operand to evaluate - * @param the data type of the input - * @throws org.opentest4j.AssertionFailedError + * @throws org.opentest4j.AssertionFailedError if the evaluation fails */ public void evaluate(Boolean expected, Operand input) { evaluate(new Boolean[] {expected}, input); } /** - * Evaluate the input against the expected value + * Evaluates the input against the expected value * * @param expected the expected value * @param input the operand to evaluate - * @param the data type of the input - * @throws org.opentest4j.AssertionFailedError + * @throws org.opentest4j.AssertionFailedError if the evaluation fails */ public void evaluate(Boolean expected, Op input) { evaluate(new Boolean[] {expected}, input); } /** - * Evaluate the input against the expected value + * Evaluates the input against the expected value * * @param expected the expected value * @param input the operand to evaluate - * @param the data type of the input - * @throws org.opentest4j.AssertionFailedError + * @throws org.opentest4j.AssertionFailedError if the evaluation fails */ public void evaluate(Boolean[] expected, Op input) { - Output output = input.op().output(0); + Output output = input.op().output(0); evaluate(expected, output); } /** - * Evaluate the input against the expected value + * Evaluates the input against the expected value * * @param expected the expected value * @param input the operand to evaluate - * @param the data type of the input - * @throws org.opentest4j.AssertionFailedError + * @throws org.opentest4j.AssertionFailedError if the evaluation fails */ public void evaluate(Boolean[] expected, Operand input) { - Output output = input.asOutput(); + Output output = input.asOutput(); evaluate(expected, output); } /** - * Evaluate the input against the expected value + * Evaluates the input against the expected value * * @param expected the expected value * @param input the operand to evaluate - * @param the data type of the input - * @throws org.opentest4j.AssertionFailedError + * @throws org.opentest4j.AssertionFailedError if the evaluation fails */ public abstract void evaluate(Boolean[] expected, Output input); + /** + * Evaluates the input against the expected value + * + * @param expected the expected value + * @param input the operand to evaluate + * @param the data type of the expected Operand + * @throws org.opentest4j.AssertionFailedError if the evaluation fails + */ public void evaluate(Operand expected, Op input) { - Output output = input.op().output(0); + Output output = input.op().output(0); evaluate(expected, output); } /** - * Evaluate the input against the expected value + * Evaluates the input against the expected value * * @param expected the expected value * @param input the operand to evaluate * @param the data type of the input - * @throws org.opentest4j.AssertionFailedError + * @throws org.opentest4j.AssertionFailedError if the evaluation fails */ public void evaluate(Operand expected, Operand input) { evaluate(expected.asOutput(), input.asOutput()); } /** - * Evaluate the input against the expected value + * Evaluates the input against the expected value * * @param expected the expected value * @param input the operand to evaluate * @param the data type of the input - * @throws org.opentest4j.AssertionFailedError + * @throws org.opentest4j.AssertionFailedError if the evaluation fails */ public abstract void evaluate(Output expected, Output input); /** - * Evaluate the input against the expected value + * Evaluates the input against the expected value * * @param expected the expected value * @param input the operand to evaluate * @param the data type of the input - * @throws org.opentest4j.AssertionFailedError + * @throws org.opentest4j.AssertionFailedError if the evaluation fails */ public void evaluate(FloatNdArray expected, Operand input) { evaluate(expected, input.asOutput()); } /** - * Evaluate the input against the expected value + * Evaluates the input against the expected value * * @param expected the expected value * @param input the operand to evaluate * @param the data type of the input - * @throws org.opentest4j.AssertionFailedError + * @throws org.opentest4j.AssertionFailedError if the evaluation fails */ public abstract void evaluate(FloatNdArray expected, Output input); + /** + * Evaluates the input against the expected value + * + * @param input the operand to evaluate + * @param predicate the Predicate + * @param the data type of the input + * @throws org.opentest4j.AssertionFailedError if the evaluation fails + */ public void evaluate(Operand input, Predicate predicate) { evaluate(input.asOutput(), predicate); } /** - * Evaluate the input against the expected value + * Evaluates the input against the expected value * - * @param expected the expected value * @param input the operand to evaluate + * @param predicate The Predicate that evaluates the each value from input * @param the data type of the input - * @throws org.opentest4j.AssertionFailedError + * @throws org.opentest4j.AssertionFailedError if the evaluation fails */ public abstract void evaluate(Output input, Predicate predicate); /** - * Evaluate the input against the expected value + * Evaluates the input against the expected value * - * @param expected the expected value * @param input the operand to evaluate - * @param the data type of the input - * @throws org.opentest4j.AssertionFailedError + * @param predicate The Predicate that evaluates the each value from input + * @throws org.opentest4j.AssertionFailedError if the evaluation fails */ - public void evaluate(FloatNdArray input, Predicate predicate) { + public void evaluate(FloatNdArray input, Predicate predicate) { input.scalars().forEach(f -> assertTrue(predicate.test(f.getFloat()))); } @@ -493,9 +496,8 @@ public void print(OutputStream out, Operand input) { * * @param out the output stream * @param input the op to print - * @param the data type of the input */ - public void print(OutputStream out, Op input) { + public void print(OutputStream out, Op input) { print(new PrintWriter(new OutputStreamWriter(out)), input.op().output(0)); } @@ -513,7 +515,7 @@ public void print(OutputStream out, Output input) { /** * Print the input * - * @param witer the output writer + * @param writer the output writer * @param input the operand to print * @param the data type of the input */ @@ -524,18 +526,17 @@ public void print(Writer writer, Operand input) { /** * Print the input * - * @param witer the output writer + * @param writer the output writer * @param input the op to print - * @param the data type of the input */ - public void print(Writer writer, Op input) { + public void print(Writer writer, Op input) { print(new PrintWriter(writer), input.op().output(0)); } /** * Print the input * - * @param witer the output writer + * @param writer the output writer * @param input the op to print * @param the data type of the input */ @@ -546,7 +547,7 @@ public void print(Writer writer, Output input) { /** * Print the input * - * @param witer the output writer + * @param writer the output writer * @param input the op to print */ public abstract void print(PrintWriter writer, Output input); From ec4f6790ff666a4c23f60e1b4764874d6167d392 Mon Sep 17 00:00:00 2001 From: Jim Clarke Date: Wed, 9 Sep 2020 19:08:41 -0400 Subject: [PATCH 33/33] added @SuppressWarnings("unchecked") on Variable array --- .../test/java/org/tensorflow/framework/optimizers/AdamTest.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/AdamTest.java b/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/AdamTest.java index 1aeed5a9772..461fa75397f 100644 --- a/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/AdamTest.java +++ b/tensorflow-framework/src/test/java/org/tensorflow/framework/optimizers/AdamTest.java @@ -105,7 +105,9 @@ public void testBasic() { Op update = instance.applyGradients(gradsAndVars, "AdamTest"); /* Create and validate the shapes of the slots */ + @SuppressWarnings("unchecked") Variable[] firstMomentSlots = new Variable[2]; + @SuppressWarnings("unchecked") Variable[] secondMomentSlots = new Variable[2]; firstMomentSlots[0] = instance.getSlot(var0.asOutput(), FIRST_MOMENT).get();