gpt4 book ai didi

python - tf.select 有什么用

转载 作者:太空狗 更新时间:2023-10-30 01:05:52 24 4
gpt4 key购买 nike

(编辑 w.r.t. @quirk 的回答)

我在网上阅读了一些 tensorflow 代码,看到了这样的语句:

threshold = tf.select(input > RLSA_THRESHOLD, positive, negative)

来源:https://github.com/Raverss/tensorflow-RLSA-NMS/blob/master/source.py#L31

positive 是只有 1 的张量,negative 也与 0 大小相同s 和输入是一些相同大小的热图(/张量)(所有类型 tf.float32)。

代码片段对我来说似乎相当先进,假设作者会使用 tf.cast(input > RLSA_THRESHOLD, tf.float32) 如果没有特定的原因 tf.select(...) 表达式。特别是因为这会消除对变量 positivenegative 的需要,并且会节省内存,因为它们只是存储 0 的昂贵冗余方式> 和 1

前面提到的 tf.select(...) 表达式是否等同于 tf.cast(input > RLSA_THRESHOLD, tf.float32)?如果不是,为什么不呢?

注意:我通常使用 Keras,如果我在这里触及一些非常琐碎的事情,我深表歉意。

最佳答案

嗯,RTD(阅读文档)!

tf.select根据 condition 张量中元素的 boolnesspositivenegative 张量中选择元素。

tf.select(condition, t, e, name=None)
Selects elements from t or e, depending on condition.
The t, and e tensors must all have the same shape, and the output will also have that shape.

(来自官方文档。)

所以在你的情况下:

threshold = tf.select(input > RLSA_THRESHOLD, positive, negative)

input > RLSA_THRESHOLD 将是 bool 或逻辑值的张量(01 符号),这将有助于从 positive 向量或 negative 向量中选择一个值。

例如,假设您的 RLSA_THRESHOLD 为 0.5,并且您的 input 向量是一个由 0 到 1 之间的实数连续值组成的 4 维向量。您的 positivenegative 向量本质上是 [1, 1, 1, 1][0, 0, 0, 0],分别。 输入[0.8, 0.2, 0.5, 0.6]

threshold 将为 [1, 0, 0, 1]

注意 positivenegative 可以是任何类型的张量,只要维度符合条件 张量。如果 positivenegative 是,比方说,[2, 4, 6, 8][1, 3, 5, 7 ],您的阈值应该是[2, 3, 5, 8]


The code snippet seems reasonably advanced for me to assume that the authors would have just used input > RLSA_THRESHOLD if there was no specific reason for the tf.select.

这是有充分理由的。 input > RLSA_THRESHOLD 只会返回逻辑( bool )值的张量。逻辑值不会与数值混合得很好。您不能将它们用于任何实际的数值计算。如果 positive 和/或 negative 张量具有实数值,您可能需要您的 threshold 张量也具有实数值,以防您计划进一步使用它们。


Is the tf.select equivalent to input > RLSA_THRESHOLD? If not, why not?

不,他们不是。一个是函数,另一个是张量。

我会给你带来怀疑的好处,并假设你想问:

Is the threshold equivalent to input > RLSA_THRESHOLD? If not, why not?

不,他们不是。如上所述,input > RLSA_THRESHOLD 是一个数据类型为 bool 的逻辑张量。另一方面,threshold 是与positivenegative 具有相同数据类型的张量。

注意:您始终可以使用任何 casting 将逻辑张量转换为数值(或任何其他支持的数据类型)张量 中可用的方法.

关于python - tf.select 有什么用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41505746/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com