Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在未知尺寸张量上使用tf.slice

如何在未知尺寸张量上使用tf.slice
EN

Stack Overflow用户
提问于 2018-04-16 05:03:30
回答 1查看 1.6K关注 0票数 1

我正在处理一个矩阵sim_mat,它是一个大小的张量(?,?,?)。

我想像这样在上面使用tf.slice:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a=tf.slice(sim_matrix,[0,0,0],tf.stack([tf.shape(sim_matrix[0],tf.shape(sim_matrix)[1],3]))
print(a)

但这给了我张量a的大小(?,?,?)而不是(?,?)此外,当我使用a作为进一步的函数时,我得到了一条错误消息:

输入的大小(输入的深度)必须可以通过形状推断访问,但是没有看到值。

有解决办法吗?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-04-16 05:16:09

您可以使用花哨的索引编写以下等价但更易读的行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a = sim_matrix[ :, :, 0 : 3 ]

然而,这仍然会给出形状的张量( ?,?,?)。

如果您确实需要修正由此产生的张量的第三维空间,请使用tf.gather()。但是,您必须使用tf.transpose()在前后更改维度,因为tf.gather()只在第一个维度上工作。(这里也有tf.gather_nd(),但这没有帮助,因为您不想在前两个dims上指定索引,而是想取切片。)如下所示(测试代码):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import tensorflow as tf

sim_matrix = tf.placeholder( shape=(None,None,None), dtype = tf.float32 )
sim_matrixT = tf.transpose( sim_matrix, [ 2, 0, 1 ] )
aT = tf.gather( sim_matrixT, [ 0, 1, 2 ] ) # get first three
a = tf.transpose( aT, [ 1, 2, 0 ] )

print( a.get_shape() )

输出:

(?,?,3)

您还会说在进一步的函数上出现了一个错误。如果这些函数需要在它们的输入张量上固定形状,情况可能仍然是这样。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49858041

复制
相关文章
tensorflow之tf.tile\tf.slice等函数的基本用法解读
解读: tensorflow中的tile()函数是用来对张量(Tensor)进行扩展的,其特点是对当前张量内的数据进行一定规则的复制。最终的输出张量维度不变。
学到老
2019/07/03
2.7K0
tensorflow之tf.tile\tf.slice等函数的基本用法解读
SwiftUI 布局 —— 尺寸( 上 )
在 SwiftUI 中,尺寸这一布局中极为重要的概念,似乎变得有些神秘。无论是设置尺寸还是获取尺寸都不是那么地符合直觉。本文将从布局的角度入手,为你揭开盖在 SwiftUI 尺寸概念上面纱,了解并掌握 SwiftUI 中众多尺寸的含义与用法;并通过创建符合 Layout 协议的 frame 和 fixedSize 视图修饰器的复制品,让你对 SwiftUI 的布局机制有更加深入地理解。
东坡肘子
2022/07/28
4.8K0
SwiftUI 布局 —— 尺寸( 上 )
tf.slice
这个操作从begin指定的位置开始,从张量输入中提取一个大小为size的切片。切片大小用张量形状表示,其中size[i]是要切片的输入的第i维的元素个数。切片的起始位置(begin)表示为输入每个维度中的偏移量。换句话说,begin[i]是要从中切片的输入的第i维的偏移量。注意,tf.Tensor。getitem通常是执行切片的一种更符合python风格的方法,因为它允许您编写foo[3:7,:-2]而不是tf。切片(foo, [3,0], [4, foo.get_shape()[1]-2])。开始是从零开始的;大小从1。如果size[i]为-1,则维度i中的所有剩余元素都包含在切片中。换句话说,这相当于设置:
狼啸风云
2019/09/06
6440
pytorch基础知识:张量(上)
python中的Int类型、float类型、Int array类型和Float array类型在pytorch中分别对应于IntTensor类型、FloatTensor类型、IntTensor[一维, 二维...]类型和FloatTensor[一维, 二维...]类型。
用户6719124
2019/11/18
4750
TensorFlow简介
Techeek
2017/12/20
6.3K2
详解 tf.slice 函数
TensorFlow 张量的索引切片方式和 NumPy 模块差不多。与此同时,TensorFlow2.X 也提供了一些比较高级的切片函数,比如:
触摸壹缕阳光
2022/05/25
6990
详解 tf.slice 函数
如何在Debian上使用Cachet
如果有多个业务系统对外提供服务,那么一个状态展示系统可以为客户提供直观的服务状态展示。当出现系统故障或安排更新计划时可以为客户提供一个信息公开的平台,以便作出相应的准备。 经过寻找后,我决定使用一款名为Cachet的开源软件,它支持部署在Linux、Windows与Docker环境中。
朝朝
2018/08/09
2.3K0
如何在 Linux 上使用 Apt 命令
apt是一个命令行工具,它用来安装,升级,移除和类似的管理操作 deb 软件包,它存在于 Ubuntu, Debian, 和相关 Linux 发行版中。它将经常使用的apt-get和apt-cache工具聚合在一起,并给一些选项设置默认值。
雪梦科技
2020/05/11
2.7K0
如何在 Linux 上使用 Apt 命令
如何在Ubuntu上安装使用Docker
在本教程中,您将安装Docker,并学会使用容器和镜像,将镜像推送到Docker存储库。
GeekZ
2018/07/27
42.6K0
如何在Ubuntu上安装使用Docker
如何在HUE上使用Spark Notebook
打开hue.ini文件,找到【yarn_clusters】【default】,修改spark_history_server_url值。
create17
2019/03/12
3.9K0
如何在windows 7 上使用docker
但是我们可以通过安装docker toolbox来实现在windows7上使用docker.
Vincent-yuan
2019/10/15
2K0
如何在Mac上轻松使用SVN
大家都知道,在Mac或Linux环境下使用git比较方便,但有时候根剧项目要求又不得不使用SVN,在windows系统上面有我们最为熟悉的小乌龟(TortoiseSVN,下载链接:https://tortoisesvn.net/downloads.zh.html)在mac系统上面则很少svn的工具,本文就带大家对比Git,介绍如何在Mac上轻松使用命令行进行操作SVN,同时提升开发人员的格调。
码农编程进阶笔记
2022/08/18
4.6K0
如何在Mac上轻松使用SVN
tf.slice函数解析
tf.slice(input_, begin, size, name = None) 解释 : 这个函数的作用是从输入数据input中提取出一块切片 切片的尺寸是size,切片的开始位置是begin。 切片的尺寸size表示输出tensor的数据维度,其中size[i]表示在第i维度上面的元素个数。 开始位置begin表示切片相对于输入数据input_的每一个偏移量,比如数据input是 [[[1, 1, 1], [2, 2, 2]], [[33, 3, 3], [4, 4, 4]], [[5, 5, 5
演化计算与人工智能
2020/08/14
8470
如何在Mac上正确使用分屏功能
macOS提供了一个方便的功能,可以并排查看两个应用程序,同样分割屏幕。下面小编就为大家介绍一下如何在Mac上使用Split View功能 。无论您是想更有效地完成某些工作还是浏览网页时更轻松地执行多任务,在Split View中构建的macOS都是一项非常有用的功能。
MAC先森
2019/09/10
7.1K0
如何在 Mac 上愉快的使用 Docker
首先要明确的是, 作为了一个每天在 Linux Server 上 rm -rf 的人来说, 如果想在 Mac 上使用 Docker, 最舒服的也是兼容所有 docker cli 命令行操作即可; 至于图形化的界面完全不需要, 我们并不指望图形化界面能比敲命令快到哪里去, 也不指望图形化界面变为主力; 所以本篇文章的核心目标:
CRMEB商城源码
2022/06/22
4.5K0
如何在 Fedora 上使用 Podman | Linux 中国
Podman 的命令就与 docker 相同,如果你已经安装了 Docker,只需在终端输入 alias docker=podman。
用户8639654
2021/09/06
1K0
如何在ubuntu上使用sendemail发送邮件
在如何在Ubuntu 16.04上安装配置邮件发送服务器一文中,我尝试了配置ubuntu作为电子邮件发送服务器。在使用中,发现这种发送方式很不稳定,我推测应该是发送服务器域名解析的问题。
fanzhh
2019/08/20
3.1K0
如何在Ubuntu上使用Jenkins自动构建
Jenkins是一个开源自动化服务器,允许您构建管道以自动化构建,测试和部署应用程序的过程。在本指南中,您将实施基本工作流程,以加快持续集成和持续交付(CI / CD)过程。
Techeek
2018/09/18
8K0
如何在Ubuntu上使用Jenkins自动构建
如何在 Linux 上使用 BusyBox | Linux 中国
我们很容易认为 Linux 的命令是理所当然的。当你安装 Linux 时,它们与系统捆绑在一起,而我们常常不问为什么它们会在那里。一些基本的命令,如 cd、kill 和 echo,并不总是独立的应用程序,而是实际上内置于你的 shell 中。其他如 ls、mv 和 cat 是核心工具包(通常是 GNU coreutils)的一部分。但在开源的世界里,总是有一些替代品,其中最有趣的是 BusyBox。
用户8639654
2021/10/11
2.2K0
点击加载更多

相似问题

TensorFlow - Pad未知尺寸张量到特定尺寸?

48

如何在未知形状张量上应用numpy函数

12

张量尺寸CrossEntropyLoss

10

火炬张量交换尺寸

12

火炬张量增加尺寸

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文