Tensorflow中的tf.where与tf.greater

本文详细介绍了TensorFlow中tf.greater和tf.where函数的使用方法。tf.greater用于比较两个张量的元素大小,返回布尔值。tf.where则依据条件张量选择不同张量的元素,或返回条件为真的元素索引。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

tf.greater(a,b)
功能:通过比较a、b两个值的大小来输出对错。
例如:当a=4,b=3时,输出结果为:true;当a=2,b=3时,输出结果为:false。

import tensorflow as tf

sess=tf.Session()
with sess.as_default():
    print(tf.greater(4,3).eval())

结果:

True

tf.where()定义如下:

where(condition, x=None, y=None,name=None)

condition:一个Tensor,数据类型为tf.bool/bool类型
condition, x, y 相同维度,condition是bool型值,True/False

如果x、y均为空,那么返回condition中值为True的位置组成的Tensor:例如:x就是condition,y是返回值。或者说,是condition中元素为True对应的索引。

如果x、y不为空,那么x、y必须有相同的形状。如果x、y是标量,那么condition参数也必须是标量。如果x、y是向量,那么condition必须和x的第一维有相同的形状或者和x形状一致。

返回值:如果x、y不为空的话,返回值和x、y有相同的形状,如果condition对应位置值为True那么返回Tensor对应位置为x的值,否则为y的值. 例子:

在这里插入图片描述

1、where(condition)的用法

import tensorflow as tf
a = [[1,2,3],[4,5,6]]
b = [[1,0,3],[1,5,1]]
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)))

结果1:

[[0 0]
 [1 1]
 [1 2]]

结果2:

[[0 0]
 [1 1]]

2、 where(condition, x=None, y=None, name=None)的用法

condition, x, y 相同维度,condition是bool型值,True/False

返回值是对应元素,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 = [[7,8,9],[10,11,12]]
condition3 = [[True,False,False],
             [False,True,True]]
condition4 = [[True,False,False],
             [True,True,False]]
with tf.Session() as sess:
    print(sess.run(tf.where(condition3,x,y)))
    print(sess.run(tf.where(condition4,x,y)))

结果:

1, [[ 1  8  9]
    [10  5  6]]
2, [[ 1  8  9]
    [ 4  5 12]]

更多请参考:
https://blog.youkuaiyun.com/a_a_ron/article/details/79048446

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值