Python 我怎样才能做到;“元素方面”;tf.function内部的比较?

Python 我怎样才能做到;“元素方面”;tf.function内部的比较?,python,tensorflow,Python,Tensorflow,我尝试在TensorFlow 2中创建自己的激活函数,该函数如下所示: @tf.function def f(x): r = 2 if x>=0: return (r**2 * x + 1)**(1/r) - 1/r else: return K.exp(r*x) - 1/r 问题是,它不能作为参数tf.constant([2.0,3.0]),因为条件存在问题。我尝试了tf.math.qreater_equal(x,0),这也导致了相同的输出tf.cond()

我尝试在TensorFlow 2中创建自己的激活函数,该函数如下所示:

@tf.function
def f(x):
  r = 2
  if x>=0:
    return (r**2 * x + 1)**(1/r) - 1/r
  else:
    return K.exp(r*x) - 1/r
问题是,它不能作为参数
tf.constant([2.0,3.0])
,因为条件存在问题。我尝试了
tf.math.qreater_equal(x,0)
,这也导致了相同的输出
tf.cond()。我也没有遇到过文档示例。
它返回错误:

InvalidArgumentError:  The second input must be a scalar, but it has shape [2]
     [[{{node cond/switch_pred/_2}}]] [Op:__inference_f_7469065]

谢谢

如果
语句被转换为
cond
,但它只接受谓词的标量参数(并且不广播)。请尝试:

return tf.where(x >= 0, (r**2 * x + 1)**(1/r) - 1/r, K.exp(r*x) - 1/r))

(目前无法用TensorFlow测试,但这至少是Numpy的行为方式…

非常感谢,我不敢相信我还没有尝试过,尽管它对这两种情况都进行了热切的评估。因此,在可能的情况下,通过分解重复的评估,您可能会获得一些东西。