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
- https://stackoverflow.com/questions/59308263/using-a-tf-tensor-as-a-python-bool-is-not-allowed-in-graph-execution-use-ea
- https://www.tensorflow.org/api_docs/python/tf/cond
- https://www.tensorflow.org/api_docs/python/tf/strings/regex_full_match