解决using a `tf.Tensor` as a Python `bool` is not allowed
程序员文章站
2022-05-26 19:03:08
...
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