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

在实际使用中老是忘记这些和维度相关操作的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])

你可能感兴趣的:(pytorch)