tensorflow实现tensor中满⾜某⼀条件的数值取出组成新
的tensor
⾸先使⽤tf.where()将满⾜条件的数值索引取出来,在numpy中,可以直接⽤矩阵引⽤索引将满⾜条件的数值取出来,但是在tensorflow中这样是不⾏的。所幸,tensorflow提供了tf.gather()和tf.gather_nd()函数。
看下⾯这⼀段代码:
import tensorflow as tf
sess = tf.Session()
def get_tensor():
x = tf.random_uniform((5, 4))
ind = tf.where(x>0.5)
y = tf.gather_nd(x, ind)
return x, ind, y
在上述代码中,输出分别是原始的tensor x,x中满⾜特定条件(此处为>0.5)的数值的索引,以及x中满⾜特定条件的数值。执⾏以下步骤,观察三个tensor对应的数值:
x, ind, y = get_tensor()
x_, ind_, y_ = sess.run([x, ind, y])
可以得到如下结果:
可以看到,上述结果中将tensor x中⼤于0.5的数值取出来组成了⼀个新的tensor y。
如果我们将代码中的tf.gather_nd替换成tf.gather会发⽣什么呢?由于结果不⽅便展⽰,这⾥不放结果了,tf.gather适⽤于index 为⼀维的情况,在本例中,index为2维,如果选⽤tf.gather的话,对应的x, ind, y的维数分别如下:
x.shape = (5, 4)
ind.shape = (9, 2)trunc函数如何取整
y.shape = (9, 2, 4)
以上这篇tensorflow实现tensor中满⾜某⼀条件的数值取出组成新的tensor就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论