tensorflow / tensorflow/java

Exception in thread "main" org.tensorflow.exceptions.TensorFlowException: No gradient defined for op: SelectV2.

Open
#437 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Java
Stars
928
Forks
227
PR merge metrics
No merged PRs in 30d

Description

env :
tensorflow-java : 0.5.0-SNAPSHOT
scala :2.12.11
java : jdk 15
Hi :
when I defined a tf Variable named embeddings ,and want to do some operation with it, invoke the callone method

def clipByNormTF[T <: TNumber](someNums: Operand[T], clipNormBias: Operand[T], axis: Operand[TInt32], tf: Ops): Output[TFloat32] = {
    try {

      val l2sum = tf.reduceSum(tf.math.square(tf.dtypes.cast(someNums, classOf[TFloat64])), axis, ReduceSum.keepDims(true))
      val pred = tf.math.greater(l2sum, tf.constant(0.0))
      println("Here will crash !!! please ")
      val l2sumSafe = tf.select(pred, l2sum, tf.onesLike(l2sum))
      val l2norm = tf.select(pred, tf.math.sqrt(l2sumSafe), l2sum)

      val intermediate = tf.math.mul(tf.dtypes.cast(someNums, classOf[TFloat64]), tf.dtypes.cast(clipNormBias, classOf[TFloat64]))
      val valuesClip = tf.identity(tf.math.divNoNan(intermediate, tf.math.maximum(l2norm, tf.dtypes.cast(clipNormBias, classOf[TFloat64]))))
      if (someNums.shape().isCompatibleWith(intermediate.shape())) {
        println(s"match the shape ${someNums.shape().get(0)} ${someNums.shape().get(1)}  || ${intermediate.shape().get(0)} ${intermediate.shape().get(1)}")

        tf.dtypes.cast(valuesClip, classOf[TFloat32]).asOutput()
      } else {
        println(s"can not match the shape ${someNums.shape().get(0)} ${someNums.shape().get(1)}  || ${intermediate.shape().get(0)} ${intermediate.shape().get(1)}")
        throw new Exception("bad shape")
      }
    }

  def callOne(tf: Ops, input: Operand[T]): Operand[TFloat32] = {
    println(s"Embedding Layer ${this.layerName} input compute shape ${input.shape().asArray().mkString("|")}")
    val inputZ = tf.dtypes.cast(input, classOf[TInt32])
    val gatherResult = tf.gather(this.embeddings, inputZ, tf.constant(0))
    val gr = tf.dtypes.cast(gatherResult, classOf[TFloat32])
    val result = clipByNormTF(gr, tf.constant(this.maxNormBias), tf.constant(Array(1, 0)), tf)
    println(s"Embedding Layer call result shape  ${this.layerName}  compute output shape ${result.shape().asArray().mkString("|")}")
    result
  }


meet to error console

Exception in thread "main" org.tensorflow.exceptions.TensorFlowException: No gradient defined for op: SelectV2. Please see https://www.tensorflow.org/code/tensorflow/cc/gradients/README.md for instructions on how to add C++ gradients.
	at org.tensorflow.internal.c_api.AbstractTF_Status.throwExceptionIfNotOK(AbstractTF_Status.java:101)
	at org.tensorflow.Graph.addGradients(Graph.java:1152)
	at org.tensorflow.Graph.addGradients(Graph.java:703)
	at org.tensorflow.op.core.Gradients.create(Gradients.java:104)
	at org.tensorflow.op.core.Gradients.create(Gradients.java:125)
	at org.tensorflow.op.Ops.gradients(Ops.java:2814)

I do not know why , feel appreciate help me ,thanks

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the provided clipByNormTF and callOne code and the stack trace through Graph.addGradients, Gradients.create, and Ops.gradients. Reproduce the SelectV2 failure with tensorflow-java 0.5.0-SNAPSHOT, Scala 2.12.11, and JDK 15; done means the gradient behavior or an appropriate fix is verified.

Written by the indexing model from the issue text.

Assessment

Tech stack
java, scala
Domain
machine-learning
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.