tensorflow实现tensor中满足某一条件的数值取出组成新的tensor

yipeiwu_com6年前Python基础

首先使用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)
y.shape = (9, 2, 4)

以上这篇tensorflow实现tensor中满足某一条件的数值取出组成新的tensor就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

tensorflow实现打印ckpt模型保存下的变量名称及变量值

有时候会需要通过从保存下来的ckpt文件来观察其保存下来的训练完成的变量值。 ckpt文件名列表:(一般是三个文件) xxxxx.ckpt.data-00000-of-00001 xxx...

python文件绝对路径写法介绍(windows)

python在描述路径时有两种方式: 'd:\\a.txt',转义的方式 r'd:\a.txt',声明字符串不需要转义 (使用raw string,也就是在string'前面加r,告诉p...

Python lxml模块安装教程

lxml是Python中与XML及HTML相关功能中最丰富和最容易使用的库。lxml并不是Python自带的包,而是为libxml2和libxslt库的一个Python化的绑定。它与众不...

shell命令行,一键创建 python 模板文件脚本方法

写 python 文件时,每个文件开头都必须注明版本和编码。每次我 touch 文件之后粘贴这两句话让我不胜其烦。 由于我没有安装 python 的 IDE 工具,也没有为 vim 安装...

Python遍历指定文件及文件夹的方法

本文实例讲述了Python遍历指定文件及文件夹的方法。分享给大家供大家参考。具体如下: 初次编写: import os def searchdir(arg,dirname,names...