从两个张量中得到更高的值

2024-04-24 14:51:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个相同大小的二维张量(假设shape=[80,90])。 我想得到绝对值大于元素的变量的值。你知道吗

在python中,我会这样做:

mask = np.abs(a)>np.abs(b)

c = a*mask + b*~mask

如何在tensorflow中实现这一点,同时仍然能够计算梯度?你知道吗

我知道我能做到:

mask = tf.abs(a) > tf.abs(b)

但是后来:

c= tf.cast(mask, tf.float32) * a + tf.cast(~mask, tf.float32) * b

不通过渐变,因为强制转换操作不通过渐变。你知道吗


Tags: 元素tftensorflownpmaskabs梯度shape
2条回答

@冷冰冰的答案很管用。但如果您想要一个通用方法,可以基于随机掩码提取元素,那么可以使用^{}api。对于您的问题,答案如下:

mask = tf.abs(a) - tf.abs(b)
c = tf.where(mask, a, b)

使用np.最大值地址:

np.maximum(a, b, where=abs(a) > abs(b))

相关问题 更多 >