欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

解决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

Reference

  1. https://*.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
相关标签: 深度学习