作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不明白什么squeeze
和 unsqueeze
对张量做,即使在查看文档和 related questions 之后.
我试图通过自己在 python 中探索它来理解它。我首先创建了一个随机张量
x = torch.rand(3,2,dtype=torch.float)
>>> x
tensor([[0.3703, 0.9588],
[0.8064, 0.9716],
[0.9585, 0.7860]])
但无论我如何挤压它,我最终都会得到相同的结果:
torch.equal(x.squeeze(0), x.squeeze(1))
>>> True
如果我现在尝试解压,我会得到以下信息,
>>> x.unsqueeze(1)
tensor([[[0.3703, 0.9588]],
[[0.8064, 0.9716]],
[[0.9585, 0.7860]]])
>>> x.unsqueeze(0)
tensor([[[0.3703, 0.9588],
[0.8064, 0.9716],
[0.9585, 0.7860]]])
>>> x.unsqueeze(-1)
tensor([[[0.3703],
[0.9588]],
[[0.8064],
[0.9716]],
[[0.9585],
[0.7860]]])
但是,如果我现在创建一个张量
x = torch.tensor([1,2,3,4])
,然后我尝试解压它,然后看起来
1
和
-1
使它成为一列,其中为
0
保持原样。
x.unsqueeze(0)
tensor([[1, 2, 3, 4]])
>>> x.unsqueeze(1)
tensor([[1],
[2],
[3],
[4]])
>>> x.unsqueeze(-1)
tensor([[1],
[2],
[3],
[4]])
有人可以解释一下挤压和解压对张量的作用吗?提供论据有什么区别
0
,
1
和
-1
?
最佳答案
这是 squeeze
的直观表示/unsqueeze
做一个有效的二维矩阵:
当您解压张量时,您希望将其“解压”到哪个维度(如行或列等)是不明确的。 dim
参数说明了这一点 - 即要添加的新维度的位置。
因此,生成的未压缩张量具有相同的信息,但用于访问它们的索引不同。
关于python - Pytorch 挤压和解压,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61598771/
我是一名优秀的程序员,十分优秀!