Tensorflow error: Using a `tf.Tensor` as a Python `bool` is not allowed

Tensorflow error: Using a `tf.Tensor` as a Python `bool` is not allowed

我正在努力在 Python 中实现 中的激活函数。

代码如下:

def myfunc(x):
    if (x > 0):
        return 1
    return 0

但我总是收到错误消息:

Using a tf.Tensor as a Python bool is not allowed. Use if t is not None:

使用tf.cond:

tf.cond(tf.greater(x, 0), lambda: 1, lambda: 0)

另一种解决方案,另外支持多维张量

tf.sign(tf.maximum(x, 0))

但是请注意,这个激活的梯度在任何地方都是零,所以神经网络不会用它学习任何东西。

TF2 中,您可以用 @tf.function:

修饰函数 myfunc()
@tf.function
def myfunc(x):
    if (x > 0):
        return 1
    return 0