tensorflow实现tensor中满足某一条件的数值取出组成新的tensor
首先使用tf.where()将满足条件的数值索引取出来,在numpy中,可以直接用矩阵引用索引将满足条件的数值取出来,但是在tensorflow中这样是不行的。所幸,tensorflow提供了tf.gather()和tf.gather_nd()函数。
看下面这一段代码:
importtensorflowastf sess=tf.Session() defget_tensor(): x=tf.random_uniform((5,4)) ind=tf.where(x>0.5) y=tf.gather_nd(x,ind) returnx,ind,y
在上述代码中,输出分别是原始的tensorx,x中满足特定条件(此处为>0.5)的数值的索引,以及x中满足特定条件的数值。执行以下步骤,观察三个tensor对应的数值:
x,ind,y=get_tensor() x_,ind_,y_=sess.run([x,ind,y])
可以得到如下结果:
可以看到,上述结果中将tensorx中大于0.5的数值取出来组成了一个新的tensory。
如果我们将代码中的tf.gather_nd替换成tf.gather会发生什么呢?由于结果不方便展示,这里不放结果了,tf.gather适用于index为一维的情况,在本例中,index为2维,如果选用tf.gather的话,对应的x,ind,y的维数分别如下:
x.shape=(5,4) ind.shape=(9,2) y.shape=(9,2,4)
以上这篇tensorflow实现tensor中满足某一条件的数值取出组成新的tensor就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。