TensorFlow、批量索引(第一维)和排序

2024-02-25

我有一个形状为 params 张量(?,368,5),以及具有形状的查询张量(?,368)。查询张量存储用于对第一个张量进行排序的索引。

所需的输出具有以下形状:(?,368,5)。由于我需要它作为神经网络中的损失函数,因此所使用的操作应该保持可微分。另外,在运行时第一个轴的大小?对应于批量大小。

到目前为止我尝试过tf.gather and tf.gather_nd, 然而tf.gather(params,query)结果得到形状为的张量(?,368,368,5).

查询张量是通过执行以下操作来实现的:

query = tf.nn.top_k(params[:, :, 0], k=params.shape[1], sorted=True).indices

总的来说,我尝试按第三轴上的第一个元素对参数张量进行排序(用于某种倒角距离)。最后要提的是,我与Keras框架。


您需要将第一个维度的索引添加到query为了使用它tf.gather_nd。这是一种方法:

import tensorflow as tf
import numpy as np

np.random.seed(100)

with tf.Graph().as_default(), tf.Session() as sess:
    params = tf.placeholder(tf.float32, [None, 368, 5])
    query = tf.nn.top_k(params[:, :, 0], k=params.shape[1], sorted=True).indices
    n = tf.shape(params)[0]
    # Make tensor of indices for the first dimension
    ii = tf.tile(tf.range(n)[:, tf.newaxis], (1, params.shape[1]))
    # Stack indices
    idx = tf.stack([ii, query], axis=-1)
    # Gather reordered tensor
    result = tf.gather_nd(params, idx)
    # Test
    out = sess.run(result, feed_dict={params: np.random.rand(10, 368, 5)})
    # Check the order is correct
    print(np.all(np.diff(out[:, :, 0], axis=1) <= 0))
    # True
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TensorFlow、批量索引(第一维)和排序 的相关文章

随机推荐

  • 在 Spring 中启用 WebSocket 的跨源请求

    我有一个 OpenShift Wildfly 服务器 我正在建立一个网站Spring MVC框架 我的一个网页也使用 WebSocket 连接 在服务器端 我使用了 ServerEndpoint注释和javax websocket 库来创建
  • 无法使用xampp控制面板安装Tomcat

    我按照以下步骤成功安装了 xampp v3 2 1JetBrains 指南 http confluence jetbrains com display PhpStorm Installing and Configuring XAMPP wi
  • 在 JavaScript 中增加变量的其他方法[重复]

    这个问题在这里已经有答案了 可能的重复 为什么在 JavaScript 中避免递增 和递减 运算符 https stackoverflow com questions 971312 why avoid increment and decre
  • 调用deleteRowsAtIndexPaths时,具有自动调整单元格大小的UITableView变得不稳定

    我有一个带有自动调整单元格大小的 UITableView 表包含 1 个部分和一些行 我有一些行说 30 我想在期间删除行didSelectRowAtIndexPath 当我删除 tableview 底部附近的可用行 例如第 28 行 时
  • 为 Ruby 编写模块

    如何为 ruby 编写模块 在Python中你可以使用 module py def helloworld name print Hello s name main py import module module helloworld Jim
  • Dj Rest Auth 自定义注册不起作用

    I am using DJ REST AUTH for user registration API I want the first name and last name to show in the API endpoint howeve
  • 仅在没有错误的情况下编译 TeX 源并启动 PDF 的 Vim 脚本

    我正在改用 Vim 作为我的 LaTeX 编辑环境 我希望能够从 Vim 中解析源文件 并在编译成功时启动外部查看 我了解 Vim Latex 套件 但是 如果可能的话 我宁愿避免使用它 它相当重量级 劫持了lot我的钥匙 并且用大量文件弄
  • mysql 计入 PHP 变量

    假设我们有以下查询 SELECT DISTINCT COUNT users id FROM users table 此查询将返回表中的用户数量 我需要将此值传递给 PHP 变量 我正在使用这个 sql result mysql query
  • C#从串口读取数据

    我正在尝试从串行端口读取数据 数据脱离了规模 我首先发送一个命令来开始读取秤 serialPort Write P 然后等了一段时间后我尝试使用 temp2 serialPort ReadLine 应用程序挂在这行代码处 我也尝试过 Rea
  • Unix 域套接字如何区分多个客户端?

    TCP 具有元组对 IP 地址 端口 类型 来区分一个客户端和另一个客户端 UDP 传递客户端 IP 和端口 unix 域如何跟踪不同的客户端 换句话说 服务器创建一个绑定到某个路径 例如 tmp socket 的套接字 2 个或更多客户端
  • 使用 htaccess 禁止文本文件中的 IP [关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 我阅读并理解了如何使用 htaccess 阻止 ip order deny allow deny from 111 222 33 44
  • 使用 OAuth 通过本机客户端 (.Net) 访问受保护的 Google Apps 脚本 Web 服务

    我的 Net 客户端应用程序 Winform 允许用户使用浏览器控件在 Google 上进行身份验证 我能够在响应中检索 access token 我按照说明进行操作here https developers google com acco
  • Scala 2.10 中验证和扩展构造函数参数的最佳方法

    我想要一个具有许多字段 例如字符串 布尔值等 的类 并且在构造该类时 我想要一个与每个字段关联的字段名并验证该字段 使用字符串的正则表达式 理想情况下 我只想在构造函数中指定参数需要满足某些条件 一些示例代码 case class Data
  • 我可以在 bash shell 中对变量进行 for 循环吗?

    我正在学习 shell 我希望能够循环一些变量 我似乎找不到任何地方有人这样做过 所以我不确定这是否可能 基本上我只是想通过对每个变量使用相同的 sed 命令来省去自己的麻烦 但是该代码显然不起作用 我的问题是 是否可以循环变量 如果不能循
  • PHPExcel - 图表渲染和加载 Excel 给出错误

    require once PHPExcel 1 7 7 Classes PHPExcel php inputFileName RN Tracker xlsx inputFileType PHPExcel IOFactory identify
  • 将此 cURL 转换为 Guzzle

    我尝试阅读 Guzzle 文档 但我无法解决这个问题 我想使用 Guzzle 而不是 cURL 来执行以下操作 protected url https secure abcdef com cgi xml request server php
  • Javascript AOP 库 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您使用哪个 Javascript AOP 库 它的主要功能是什么 这是我到目前为止发现的 dotvoid
  • Angular 6/C#/MVC 以 Json Array of Array 的形式从控制器动态返回 JsonResult

    我正在尝试在 Angular 6 应用程序中将多个数据集导出到 Excel 为此 我使用 XLSX 和文件保存 如本例中所示 https medium com madhavmahesh exporting an excel file in
  • 使用 Redis 进行复合查询

    出于学习目的 我尝试在 Redis 中编写一个简单的结构化文档存储 在我的示例应用程序中 我正在对数百万个文档建立索引 这些文档看起来有点像下面这样
  • TensorFlow、批量索引(第一维)和排序

    我有一个形状为 params 张量 368 5 以及具有形状的查询张量 368 查询张量存储用于对第一个张量进行排序的索引 所需的输出具有以下形状 368 5 由于我需要它作为神经网络中的损失函数 因此所使用的操作应该保持可微分 另外 在运