Python 什么是;“不开窍”;你在皮托克干什么?
我无法理解中的示例如何与解释相对应: 返回在指定位置插入尺寸为1的新张量。[……]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]]) 如果查看前后数组的
>>> 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的操作数,您可以将这两个张量相乘。实际上,我经历了一段因误解输出格式而产生的困惑