当前位置: 首页 > news >正文

tf.gather_nd

参考

tf.gather_nd - 云+社区 - 腾讯云


 

将params中的切片收集到一个由指标指定形状的张量中。

tf.gather_nd(
    params,
    indices,
    batch_dims=0,
    name=None
)

指标是一个k维整数张量,最好考虑为(K-1)张量的指标到帕拉姆,其中每个元素定义了帕拉姆的一个切片:

output[\\(i_0, ..., i_{K-2}\\)] = params[indices[\\(i_0, ..., i_{K-2}\\)]]

而在tf.gather索引中,将切片定义为params的第一个维度,而在tf.gather_nd中,索引将切片定义为params的第一个N个维度,其中N = indices.shape[-1]。指标的最后一个维度最多可以是参数的秩:

indices.shape[-1] <= params.rank

指标的最后一个维度对应于元素(if指标)。shape[-1] == parameters .rank或slice (if索引)。形状[-1]< params.rank)沿维度指标。形状参数的[1]。输出张量是有形状的:

indices.shape[:-1] + params.shape[indices.shape[-1]:]

此外,“params”和“indices”都可以有M个完全匹配的领先批处理维度。在本例中,'batch_dims'必须是M。注意,在CPU上,如果发现一个out of bound索引,将返回一个错误。在GPU上,如果发现一个out of bound索引,则在相应的输出值中存储一个0。下面的一些例子。简单的索引成一个矩阵:

    indices = [[0, 0], [1, 1]]
    params = [['a', 'b'], ['c', 'd']]
    output = ['a', 'd']

切片索引成一个矩阵:

    indices = [[1], [0]]
    params = [['a', 'b'], ['c', 'd']]
    output = [['c', 'd'], ['a', 'b']]

索引成一个3张量:

    indices = [[1]]
    params = [[['a0', 'b0'], ['c0', 'd0']],
              [['a1', 'b1'], ['c1', 'd1']]]
    output = [[['a1', 'b1'], ['c1', 'd1']]]


    indices = [[0, 1], [1, 0]]
    params = [[['a0', 'b0'], ['c0', 'd0']],
              [['a1', 'b1'], ['c1', 'd1']]]
    output = [['c0', 'd0'], ['a1', 'b1']]


    indices = [[0, 0, 1], [1, 0, 1]]
    params = [[['a0', 'b0'], ['c0', 'd0']],
              [['a1', 'b1'], ['c1', 'd1']]]
    output = ['b0', 'b1']

下面的例子适用于只有索引具有领先额外维度的情况。如果“params”和“indexes”都具有领先的批处理维度,则使用“batch_dims”参数以批处理模式运行gather_nd。批量索引成一个矩阵:

    indices = [[[0, 0]], [[0, 1]]]
    params = [['a', 'b'], ['c', 'd']]
    output = [['a'], ['b']]

成批切片索引成矩阵:

    indices = [[[1]], [[0]]]
    params = [['a', 'b'], ['c', 'd']]
    output = [[['c', 'd']], [['a', 'b']]]

批量索引成一个3张量:

    indices = [[[1]], [[0]]]
    params = [[['a0', 'b0'], ['c0', 'd0']],
              [['a1', 'b1'], ['c1', 'd1']]]
    output = [[[['a1', 'b1'], ['c1', 'd1']]],
              [[['a0', 'b0'], ['c0', 'd0']]]]

    indices = [[[0, 1], [1, 0]], [[0, 0], [1, 1]]]
    params = [[['a0', 'b0'], ['c0', 'd0']],
              [['a1', 'b1'], ['c1', 'd1']]]
    output = [[['c0', 'd0'], ['a1', 'b1']],
              [['a0', 'b0'], ['c1', 'd1']]]


    indices = [[[0, 0, 1], [1, 0, 1]], [[0, 1, 1], [1, 1, 0]]]
    params = [[['a0', 'b0'], ['c0', 'd0']],
              [['a1', 'b1'], ['c1', 'd1']]]
    output = [['b0', 'b1'], ['d0', 'c1']]

批量使用“参数”和“索引”的例子:

    batch_dims = 1
    indices = [[1], [0]]
    params = [[['a0', 'b0'], ['c0', 'd0']],
              [['a1', 'b1'], ['c1', 'd1']]]
    output = [['c0', 'd0'], ['a1', 'b1']]

    batch_dims = 1
    indices = [[[1]], [[0]]]
    params = [[['a0', 'b0'], ['c0', 'd0']],
              [['a1', 'b1'], ['c1', 'd1']]]
    output = [[['c0', 'd0']], [['a1', 'b1']]]

    batch_dims = 1
    indices = [[[1, 0]], [[0, 1]]]
    params = [[['a0', 'b0'], ['c0', 'd0']],
              [['a1', 'b1'], ['c1', 'd1']]]
    output = [['c0'], ['b1']]

参数:

  • params:一个张量。用来收集值的张量。
  • indices:一个张量。必须是下列类型之一:int32、int64。指数张量。
  • name:操作的名称(可选)。
  • batch_dims:整数或标量“张量”。批量尺寸的数量。

返回值:

  • 一个张量。具有与params相同的类型。

相关文章:

  • 软考高项——计算专题
  • 东芝发布智能栅极驱动光电耦合器,简化功率器件外围电路的设计
  • 如何通过供应链数字化业务协同,赋能化工企业降本增效
  • 第七章【ADFS集成Exchang实现OWA\ECP单点登录SSO】ADFS服务器对Exchange的配置***(本栏目重点)
  • SpringBoot 整合 RabbitMQ 实现消息回调、手动确认 (二) 有图 有源码
  • Java 学习如逆水行舟,不进则退,100 本 java 电子书推荐
  • 无穷滚动加载(v-infinite-scroll)
  • 基于springboot+vue的房屋出租租赁系统 elementui
  • java笔记整理
  • python打包加密工具:Pyinstaller和Nuitka
  • C++PrimerPlus(第6版)中文版:Chapter14.2私有继承use_stui
  • Leetcode 337. 打家劫舍 III
  • 银行利率bp是什么意思,利率bp怎么换算
  • 面试~jvm(JVM内存结构、类加载、双亲委派机制、对象分配,了解垃圾回收)
  • 公众号搜题接口系统
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • Fundebug计费标准解释:事件数是如何定义的?
  • JSDuck 与 AngularJS 融合技巧
  • Js基础知识(四) - js运行原理与机制
  • js继承的实现方法
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • nodejs调试方法
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • rabbitmq延迟消息示例
  • Transformer-XL: Unleashing the Potential of Attention Models
  • 力扣(LeetCode)21
  • 强力优化Rancher k8s中国区的使用体验
  • 三栏布局总结
  • 网页视频流m3u8/ts视频下载
  • 微信小程序实战练习(仿五洲到家微信版)
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • nb
  • Java总结 - String - 这篇请使劲喷我
  • Spring Batch JSON 支持
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​io --- 处理流的核心工具​
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (11)MSP430F5529 定时器B
  • (ibm)Java 语言的 XPath API
  • (超详细)语音信号处理之特征提取
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (黑马C++)L06 重载与继承
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (转)Unity3DUnity3D在android下调试
  • ./configure,make,make install的作用(转)
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .gitignore文件—git忽略文件
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .NET MVC 验证码
  • .NET 命令行参数包含应用程序路径吗?