PyTorch - unsqueeze和squeeze

PyTorch - unsqueeze和squeeze

flyfish

import torch
import torch.nn as nn
import torch.nn.functional as F


#a=torch.randn(3,2)
a=torch.randn(3,1)

b0=a.unsqueeze(-2)
b1=a.unsqueeze(-1)
b2=a.unsqueeze(0)
b3=a.unsqueeze(1)
b4=a.unsqueeze(2)

e0=a.squeeze(-2)
e1=a.squeeze(-1)
e2=a.squeeze(0)
e3=a.squeeze(1)


print(a.shape)
print(b0.shape)
print(b1.shape)
print(b2.shape)
print(b3.shape)


print(e0.shape)
print(e1.shape)
print(e2.shape)
print(e3.shape)

#函数说明
#torch.unsqueeze(input, dim, out=None) 维度扩充
#返回一个新的张量,对输入的指定位置插入维度 1
#如果dim为负,则将会被转化dim+input.dim()+1


#torch.squeeze(input, dim=None, out=None)维度压缩
#将输入张量形状中的1 去除并返回。 如果输入是形如(A×1×B×1×C×1×D)
#,那么输出形状就为: (A×B×C×D)
#当给定dim时,那么挤压操作只在给定维度上。例如,输入形状为: (A×1×B)
#, squeeze(input, 0) 将会保持张量不变,只有用 squeeze(input, 1),形状会变成 (A×B)。

#注意: 返回张量与输入张量共享内存,所以改变其中一个的内容会改变另一个。
# result a=torch.randn(3,1)

# torch.Size([3, 1])
# 
# torch.Size([3, 1, 1])
# torch.Size([3, 1, 1])
# torch.Size([1, 3, 1])
# torch.Size([3, 1, 1])
# torch.Size([3, 1, 1])
# 
# torch.Size([3, 1])
# torch.Size([3])
# torch.Size([3, 1])
# torch.Size([3])


# result a=torch.randn(3,2)
# torch.Size([3, 2])
# torch.Size([3, 1, 2])
# torch.Size([3, 2, 1])
# torch.Size([1, 3, 2])
# torch.Size([3, 1, 2])
# torch.Size([3, 2, 1])

# torch.Size([3, 2])
# torch.Size([3, 2])
# torch.Size([3, 2])
# torch.Size([3, 2])
# =============================================================================

你可能感兴趣的:(深度学习)