gpt4 book ai didi

python - Pytorch 挤压和解压

转载 作者:行者123 更新时间:2023-12-04 11:04:56 25 4
gpt4 key购买 nike

我不明白什么squeezeunsqueeze对张量做,即使在查看文档和 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做一个有效的二维矩阵:
enter image description here
当您解压张量时,您希望将其“解压”到哪个维度(如行或列等)是不明确的。 dim 参数说明了这一点 - 即要添加的新维度的位置。
因此,生成的未压缩张量具有相同的信息,但用于访问它们的索引不同。

关于python - Pytorch 挤压和解压,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61598771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com