Python 什么是;“不开窍”;你在皮托克干什么?

Python 什么是;“不开窍”;你在皮托克干什么?,python,pytorch,torch,Python,Pytorch,Torch,我无法理解中的示例如何与解释相对应: 返回在指定位置插入尺寸为1的新张量。[……] >>> x = torch.tensor([1, 2, 3, 4]) >>> torch.unsqueeze(x, 0) tensor([[ 1, 2, 3, 4]]) >>> torch.unsqueeze(x, 1) tensor([[ 1], [ 2], [ 3], [ 4]]) 如果查看前后数组的

我无法理解中的示例如何与解释相对应:

返回在指定位置插入尺寸为1的新张量。[……]

>>> x = torch.tensor([1, 2, 3, 4])
>>> torch.unsqueeze(x, 0)
tensor([[ 1,  2,  3,  4]])
>>> torch.unsqueeze(x, 1)
tensor([[ 1],
        [ 2],
        [ 3],
        [ 4]])

如果查看前后数组的形状,可以看到它的前面是
(4,)
,后面是
(1,4)
(当第二个参数是
0
)和
(4,1)
(当第二个参数是
1
)。因此,根据第二个参数的值,在轴
0
1
处的阵列形状中插入了
1


这与(从MATLAB借用的术语)相反,后者删除了大小为
1
(单件)的轴。

我不确定为什么这里没有提到Pytork参考,因为这是Pytork的遗产

→ 张量 返回一个已删除大小为1的
input
的所有维度的张量

例如,如果输入是形状:(A×1×B×C×1×D),则输出张量将是形状:(A×B×C×D)

当给定
dim
时,仅在给定尺寸内执行挤压操作。如果输入为形状:(A×1×B),
压缩(输入,0)
保持张量不变,但
压缩(输入,1)
将张量压缩为形状(A×B)

→ 张量 返回在指定位置插入尺寸为1的新张量

返回的张量与该张量共享相同的基础数据

可以使用范围
[-input.dim()-1,input.dim()+1)
内的
dim
值。负值
dim
将对应于
unsqueze()
应用于
dim=dim+input.dim()+1


它指示添加维度的位置。
torch.unsqueze
向张量添加额外维度

假设有一个形状为(3)的张量,如果在0位置添加一个尺寸,它将是形状为(1,3),这意味着1行3列:

  • 如果您有一个形状为(2,2)的二维张量,请在0位置添加一个额外维度,这将导致张量的形状为(1,2,2),即一个通道、两行和两列。如果您在1位置添加,则其形状为(2,1,2),因此它将有两个通道、一行和两列
  • 如果在1位置添加,则它将是(3,1),即3行1列
  • 如果将其添加到2位置,则张量的形状将为(2,2,1),这意味着两个通道、两行和一列

反求
通过添加深度为1的额外维度,将n.d.张量转换为(n+1).d.张量。但是,由于新维度应横穿哪个轴(即应“反求”的方向)不明确,因此需要由参数指定

e、 g.
unsqueze
可以三种不同的方式应用于二维张量:


生成的未排序张量具有相同的信息,但用于访问它们的索引不同。

未排序是一种更改张量维数的方法,以便可以进行诸如张量乘法之类的操作。这基本上改变了维数以生成具有不同维数的张量

例如:如果要将大小为(4)的张量与大小为(4,N,N)的张量相乘,则会得到一个错误。
但是使用unsqueze方法,您可以将张量转换为大小(4,1,1)。现在,由于这有一个大小为1的操作数,您可以将这两个张量相乘。

实际上,我经历了一段因误解输出格式而产生的困惑