当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.compat.v1.where用法及代码示例


xy 返回元素,具体取决于 condition

用法

tf.compat.v1.where(
    condition, x=None, y=None, name=None
)

参数

  • condition bool 类型的 Tensor
  • x 一个可能与 condition 具有相同形状的张量。如果 condition 是 rank 1,则 x 可能有更高的 rank,但它的第一个维度必须与 condition 的大小匹配。
  • y x 具有相同形状和类型的 tensor
  • name 操作名称(可选)

返回

  • x , y 具有相同类型和形状的Tensor,如果它们不是None。否则,形状为 Tensor(num_true, rank(condition))

抛出

  • ValueError xy 中的一个恰好为非无时。

迁移到 TF2

警告:这个 API 是为 TensorFlow v1 设计的。继续阅读有关如何从该 API 迁移到本机 TensorFlow v2 等效项的详细信息。见TensorFlow v1 到 TensorFlow v2 迁移指南有关如何迁移其余代码的说明。

此 API 与即刻执行和 tf.function 兼容。但是,这仍然是最初为 TF1 设计的遗留 API 端点。要迁移到fully-native TF2,请将其用法替换为tf.where,它直接向后兼容tf.compat.v1.where

但是,tf.compat.v1.wheretf.where 更具限制性,要求 xy 具有相同的形状,并返回与 x , y 具有相同类型和形状的 Tensor(如果它们都是非没有)。

tf.where 将接受不同形状的 x , y,只要它们可以相互广播并与 condition 一起广播,并将返回一个 Tensor 形状广播来自 condition , xy

例如,以下内容适用于 tf.where 但不适用于 tf.compat.v1.where

tf.where([True, False, False, True], [1,2,3,4], [100])
<tf.Tensor:shape=(4,), dtype=int32, numpy=array([  1, 100, 100,   4],
dtype=int32)>
tf.where(True, [1,2,3,4], 100)
<tf.Tensor:shape=(4,), dtype=int32, numpy=array([1, 2, 3, 4],
dtype=int32)>

如果 xy 都为 None,则此操作返回 condition 的真实元素的坐标。坐标以二维张量返回,其中第一维(行)表示真实元素的数量,第二维(列)表示真实元素的坐标。请记住,输出张量的形状可能会根据输入中有多少真实值而有所不同。索引以行优先顺序输出。

如果两者都不是None,则xy 必须具有相同的形状。如果 xy 是标量,则 condition 张量必须是标量。如果 xy 是更高阶的张量,则 condition 必须是大小与 x 的第一个维度匹配的向量,或者必须具有与 x 相同的形状。

condition 张量充当掩码,根据每个元素的值选择输出中的相应元素/行是否应取自 x(如果为真)或 y(如果为假)。

如果 condition 是一个向量并且 xy 是更高等级的矩阵,那么它选择从 xy 复制哪一行(外部维度)。如果 conditionxy 具有相同的形状,则它选择从 xy 复制哪个元素。

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.compat.v1.where。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。