python - 如何在 tf.function 内部进行“元素明智”比较?
问题描述
我尝试在 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]
谢谢!
解决方案
if
语句被转换为cond
,但它只接受谓词的标量参数(并且不广播)。请尝试where
:
return tf.where(x >= 0, (r**2 * x + 1)**(1/r) - 1/r, K.exp(r*x) - 1/r))
(目前无法使用 TensorFlow 进行测试,但这至少是 Numpy 的行为方式......)
推荐阅读
- machine-learning - 何时应该使用反向传播更新神经网络中的权重?
- java - 无法连接到 Apache 后面的 Tomcat Web 套接字
- typescript - three.js 用 Angular 7 抛出“null”错误
- visual-studio - Visual Studio 测试播放列表架构在哪里?
- android - 无法生成签名的apk android
- angular - 使用Angular 7在IE11中根本没有加载ag-grid
- javascript - 使用动态表单发送电子邮件,但在收到电子邮件时未从数据库中获取值
- javascript - 转换
- url - BizTalk WCF-WebHttp - How to add parameter to Url with same name
- image - FancyBox 3:图像的顶部定位