Python 我怎样才能做到;“元素方面”;tf.function内部的比较?
我尝试在TensorFlow 2中创建自己的激活函数,该函数如下所示: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()
@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的行为方式…非常感谢,我不敢相信我还没有尝试过,尽管它对这两种情况都进行了热切的评估。因此,在可能的情况下,通过分解重复的评估,您可能会获得一些东西。