当前位置: 首页 > 编程笔记 >

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

谢叶五
2023-03-14
本文向大家介绍tensorflow实现tensor中满足某一条件的数值取出组成新的tensor,包括了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)
y.shape = (9, 2, 4)

以上这篇tensorflow实现tensor中满足某一条件的数值取出组成新的tensor就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 我想在java中编写一个函数,该函数接收参数并返回1或0,在以下条件下: > 如果数组的长度是奇数,如果奇数之和大于偶数之和,则返回1,否则返回0。 如果数组的长度是偶数,请检查小于或等于10的最大数字。如果是奇数,则返回1。如果是偶数,则返回0。 例如,使用以下数组: 第一个数组返回 1,因为 = 20 大于 = 14。第二个数组返回 0,因为有 是奇数,但 10 大于 7。 我已经试过了,请检

  • 问题内容: 我的Oracle数据库中具有以下结构: 我想查询只需要检查前连续几天并获取“分配”所在的计数的查询。 我想按日期选择,例如。 示例输出:对于日期,计数为。 新问题。通过Lukas Eder的查询,计数始终为或。但预期是。为什么?! 卢卡斯·埃德(Lukas Eder)的代码 预期的输出是这样的,First_day end不需要最后一天: 问题答案: 此查询将产生每一行的计数: 然后,您

  • 我是R的新手,这是我关于堆栈溢出的第一个问题。 我正在努力 要通过引用指定新列,请执行以下操作: 对于每行 使用同一行组中第一行到下一行的值。 这符合一个条件 示例数据: 我想做的是 子集(组)按 对于每行 查找进一步向下的第一行的, 其中,和(找到的行)大于我正在更新的行的 我的预期结果是: 我使用<code>尝试了许多变体。SD,,创建一个新的列,其中包含但实际上没有得到任何结果。非常感谢任何

  • 问题内容: 使用以下模型: 如果我要查找包含至少一篇文章的订单操作,则可以按预期工作: 但是,如果要查找订单中所有商品的订单操作,正确的方法是什么? 引发错误(我理解为什么会这样)。 问题答案: 一个简单的解决方案: 这只是一个查询,但每篇文章都有一个内部联接。对于多篇文章,Willem更巧妙的解决方案应该会表现更好。

  • 通过循环每个资源的名称,查看分配给该人员姓名的帐户,随机选择一个,并用NA替换该人员的姓名,以减少资源分配。 可复制示例: 我到目前为止的进展: 我听说for循环是不必要的。我相信这可以通过purr包和pmap之类的东西来实现。我还在学习。 我想重复一下OwnerDF,看看那个人是否“拥有”了太多的账户。如果是,请查看原始帐户列表,随机选择一个,并将所有者的姓名替换为NA,从其计数中删除1,然后继

  • 问题内容: 我在SQL Server中具有以下数据结构表: 等等。 我需要做的是获取所有连续的日子,其中Allocation = 0,并采用以下形式: 等等。 可以在SQL中执行此操作吗?如果可以,如何执行? 问题答案: 在此答案中,我将假定“ id”字段按递增日期进行排序时,对行进行连续编号,就像示例数据中所做的那样。(如果不存在,则可以创建这样的列)。 这是此处和此处描述的技术示例。 1)在相