python - 使用切片和无的张量形状修改
问题描述
我对如何阅读和理解一行简单的代码感到有些困惑:
- 我有一个张量
input
的形状(19,4,64,64,3)
。 - 这行代码
input[:, None]
返回一个 shape 的张量(19, 1, 4, 64, 64, 3)
。
我应该如何理解那条线的行为?似乎None
是在添加一个维度,大小为 1。但是为什么要在那个特定位置(19 到 4 之间)添加这个?
解决方案
确实,None
增加了一个新的维度。您也可以使用tf.newaxis
这个更明确的恕我直言。
新维度被添加到轴 1 中,因为它出现在索引中。例如input[:, :, None]
应该产生形状 (19, 4, 1, 64, 64, 3) 等等。
如果我们在切片中写下所有维度,可能会更清楚:input[:, None, :, :, :, :]
. 在切片中,:
仅仅意味着获取维度的所有元素。因此,通过使用 one :
,我们获取维度 0 的所有元素,然后“继续”移动到维度 1。由于None
出现在这里,我们知道新的 size-1 轴应该在维度 1 中。因此,其余维度被“推回” ”。
推荐阅读
- java - 在主文件的第一行添加包时出现 ClassNotFoundException
- javascript - 使用javascript动态插入表头
- linux - 带有标准输出的 docker exec 记录在 docker 容器内的文件中
- php - pdflib 8.0 将 html 转换为 pdf
- java - 为什么 FadeTransition 在当前线程完成时播放?
- c++ - 无法识别重载运算符。错误 2
- android - 获取抽屉导航的当前屏幕名称
- opengl - 骨骼动画:fbx 文件但不是 dae 文件的变形网格?
- mysql - 带有 TIME 数据类型的 MySQL INSERT 语句中的语法错误
- objective-c - Swift 中的类型别名闭包