numpy或者Tensor中[:,None],[...,None]是什么

numpy或者Tensor中[:,None],[…,None]是什么

在代码中发现了一个Tensor对象a[…,None],不知道是什么意思,了解后总结如下。

[:,None]中的None用来增加一个维度

一个代码的例子直接看懂

a = torch.ones(5)
# a 为 tensor([1., 1., 1., 1., 1.])
a = a[:, None]
# 这时候a为tensor([[1.],[1.],[1.],[1.],[1.]]

[…,None]

看代码

a = torch.ones(5)
# a 为 tensor([1., 1., 1., 1., 1.])
a = a[..., None]
# 这时候a为tensor([[1.],[1.],[1.],[1.],[1.]]

此时你会发现两个的效果是一样的,但是这只是针对了维度为1的时候,如果维度为2或者更多的时候两者就有不同了,因为‘:’只是代表了第一个维度的所有元素,而’…'代表的是所有维度的所有元素。看代码

a = torch.ones(2,2)
# a 为 tensor([[1., 1.],[1., 1.]])
a = a[:, None]
# 这时候a为tensor([[[1., 1.]],[[1., 1.]]])
a = torch.ones(2,2)
# a 为 tensor([[1., 1.],[1., 1.]])
a = a[..., None]
# a为tensor([[[1.],[1.]],[[1.],[1.]]])

你可能感兴趣的:(python基础,numpy,深度学习,python)