当前位置: 代码迷 >> 综合 >> 解决using a `tf.Tensor` as a Python `bool` is not allowed
  详细解决方案

解决using a `tf.Tensor` as a Python `bool` is not allowed

热度:78   发布时间:2023-12-21 19:02:48.0
label = tf.constant(1, tf.int8) if tf.strings.regex_full_match(img_path, ".*/smile/.*") else tf.constant(0, tf.int8))

在运行这段代码时报错:OperatorNotAllowedInGraphError: using a tf.Tensor as a Python bool is not allowed: AutoGraph is disabled in this function. Try decorating it directly with @tf.function.

原因

tf.strings.regex_full_match会返回一个Tensor,但是Python是使用一个bool值来判断if条件的

解决办法

可以使用使用tf.cond函数,将代码改为

label = tf.cond(tf.strings.regex_full_match(img_path, ".*/smile/.*"), lambda:tf.constant(1, tf.int8),lambda:tf.constant(0, tf.int8))

具体使用方法见参考2

Reference

  1. https://stackoverflow.com/questions/59308263/using-a-tf-tensor-as-a-python-bool-is-not-allowed-in-graph-execution-use-ea
  2. https://www.tensorflow.org/api_docs/python/tf/cond
  3. https://www.tensorflow.org/api_docs/python/tf/strings/regex_full_match
  相关解决方案