Exception in thread "main" org.tensorflow.exceptions.TensorFlowException: No gradient defined for op: SelectV2.
Đang mở
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- Java
- Star
- 928
- Fork
- 227
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Mô tả
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
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Bắt đầu với code clipByNormTF và callOne được cung cấp, cùng stack trace đi qua Graph.addGradients, Gradients.create và Ops.gradients. Tái hiện lỗi SelectV2 với tensorflow-java 0.5.0-SNAPSHOT, Scala 2.12.11 và JDK 15; công việc được xem là hoàn tất khi hành vi của gradient hoặc một bản sửa phù hợp được xác minh.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- java, scala
- Lĩnh vực
- machine-learning
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Cần làm rõ
- Mức phù hợp với người mới
- 30/100