- tf.where(condition, x=None, y=None, name=None)
根据condition返回x或y中的元素。
函数参数:
- condition:一个bool类型的张量(Tensor)。
- x:可能与condition具有相同形状的张量;如果condition的秩是1,则x可能有更高的排名,但其第一维度必须匹配condition的大小。
- y:与x具有相同的形状和类型的张量。
- name:操作的名称(可选)。
返回值:
如果它们不是None,则返回与x,y具有相同类型与形状的张量;张量具有形状(num_true, dim_size(condition))。
可能引发的异常: ValueError:当一个x或y正好不是None
Examples:
(1)tf.where(condition)的用法:
condition是布尔值:True / False; 返回值是condition中元素为True对应的索引
import tensorflow as tf
condition1 = [[True,False,False],
[False,True,True]]
condition2 = [[True,False,False],
[False,True,False]]
with tf.Session() as sess:
print(sess.run(tf.where(condition1)))
print(sess.run(tf.where(condition2))) 输出:
[[0 0]
[1 1]
[1 2]]
[[0 0]
[1 1]](2)tf.where(condition, x=None, y=None)的用法
condition, x, y相同维度,condition是bool值;
返回值是对应元素,condition中元素为True的元素替换为x中的元素,为False的元素替换为y中对应元素,x只负责对应替换True的元素,y只负责对应替换False的元素,x,y各有分工。由于是替换,返回值的维度,和condition,x , y都是相等的。
import tensorflow as tf
x = [[1,2,3],[4,5,6]]
y = [[1,0,3],[1,5,1]]
condition3 = [[True,False,False],
[False,True,True]]
condition4 = [[True,False,False],
[False,True,False]]
with tf.Session() as sess:
print(sess.run(tf.where(condition3, x, y)))
print(sess.run(tf.where(condition4, x, y)))输出:
[[1 0 3]
[1 5 6]]
[[1 0 3]
[1 5 1]]
本文详细介绍了 TensorFlow 中的 tf.where 函数使用方法,包括仅使用 condition 参数获取 True 元素索引的操作,以及结合 x 和 y 参数进行条件选择的具体实现。
&spm=1001.2101.3001.5002&articleId=80739554&d=1&t=3&u=408768ed2b15472fb186b828353b15d1)
1880

被折叠的 条评论
为什么被折叠?



