Python 使用切片和非切片修改张量形状
我对如何阅读和理解一行简单的代码感到有点困惑:Python 使用切片和非切片修改张量形状,python,tensorflow,Python,Tensorflow,我对如何阅读和理解一行简单的代码感到有点困惑: 我有一个形状为(19,4,64,64,3)的张量输入 代码行input[:,None]返回一个形状张量(19,1, 4、64、64、3) 我该如何理解这条线的行为?似乎None正在添加一个尺寸为1的维度。但是为什么要在那个特定的位置(19到4之间)添加这个呢?事实上,None添加了一个新的维度。您还可以使用tf.newaxis来实现这一点,这一点更为明确 新维度添加到轴1中,因为它出现在索引中。例如,输入[:,:,无]应生成形状(19、4、1、
- 我有一个形状为(19,4,64,64,3)的张量
输入
- 代码行
返回一个形状张量input[:,None]
(19,1, 4、64、64、3)
我该如何理解这条线的行为?似乎
None
正在添加一个尺寸为1的维度。但是为什么要在那个特定的位置(19到4之间)添加这个呢?事实上,None
添加了一个新的维度。您还可以使用tf.newaxis
来实现这一点,这一点更为明确
新维度添加到轴1中,因为它出现在索引中。例如,输入[:,:,无]
应生成形状(19、4、1、64、64、3)等等。如果我们在切片中写入所有维度,它可能会变得更清晰:
input[:,None,:,:,:,:,:]
。在切片中,:
仅仅意味着获取维度的所有元素。因此,通过使用一个:
,我们获取维度0的所有元素,然后“继续”到维度1。由于此处出现了None
,我们知道新的尺寸1轴应该在尺寸1中。因此,剩下的维度被“向后推”。好的,谢谢你的解释。现在清楚多了。