pytorch 速记 | squeeze,unsqueeze, cat,stack, view 常见用法

本文记录了PyTorch中关于维度操作的关键函数:unsqueeze用于增加维度,squeeze用于减少维度,cat按指定维度合并tensor,view调整tensor的尺寸,stack则在指定维度上堆叠多个tensor。这些知识点对于理解和操作tensor至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在实际使用中老是忘记这些和维度相关操作的API用法,在这里记录一下,作为备忘。

unsqueeze

unsqueeze指定某一个维度(如0),然后在该维度再插入一个维度,一般用来增加维度,尺寸只能为1。
从以下代码可以看出,经过unsuqeeze之后,tensor的尺寸在0的位置多了一个1。

In [2]: a = torch.tensor([1,2,3])                                               

In [3]: a = a.unsqueeze(0)                                                      

In [4]: a                                                                       
Out[4]: tensor([[1, 2, 3]])

In [5]: a.size()                                                                
Out[5]: torch.Size([1, 3])

squeeze

squeeze是Unsqueeze的逆过程。作用是降低维度。以下代码可以看出经过suqeeze之后的tensor在维度降低。

In [17]: a.size()                                                               
Out[17]: torch.Size([1, 1, 1, 3])

In [18]: a = a.squeeze(0)                                                       

In [19]: a.size()                                                               
Out[19]: torch.Size([1, 1, 3])

cat

cat 用来拼接tensor,按指定维度进行合并。

In [30]: a.size()                                                               
Out[30]: torch.Size([1, 1, 3])

In [31]: b = torch.cat([a,a],0)  #合并维度为 0

In [32]: b.size()                                                               
Out[32]: torch.Size([2, 1, 3]) # 0维的尺寸增加

In [33]: b = torch.cat([a,a],1) #合并维度为1                                            

In [34]: b.size()                                                               
Out[34]: torch.Size([1, 2, 3])#维度1的tensor size 增加

view

view 用来对tensor的各个维度的尺寸进行变换。需要注意的是 view 并不会改变原来 tensor 的size,我们需要通过再次赋值才能改变。

In [47]: a = torch.tensor([1,2,3])                                              

In [48]: a.view(-1,3) #-1 表示自动推导该位置的size。                                                           
Out[48]: tensor([[1, 2, 3]])

In [49]: a.size()                                                               
Out[49]: torch.Size([3])

In [50]: a = a.view(-1,3)                                                       

In [51]: a.size()                                                               
Out[51]: torch.Size([1, 3])

stack

stack的作用是以列表的形式,在指定维度拼接多个tensor,类似cat、

In [62]: a.size()                                                               
Out[62]: torch.Size([1, 3])

In [63]: b = torch.stack([a,a],dim=1)                                           

In [64]: b.size()                                                               
Out[64]: torch.Size([1, 2, 3])

In [65]: b = torch.stack([a,a],dim=0)                                           

In [66]: b.size()                                                               
Out[66]: torch.Size([2, 1, 3])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值