1. 程式人生 > 其它 >pytorch中squeeze()和unsqueeze()函式介紹;MATLAB中的squeeze()

pytorch中squeeze()和unsqueeze()函式介紹;MATLAB中的squeeze()

技術標籤:pythonmatlabpytorch

squeeze()是來減少一個維度的
unsqueeze()是來增加一個維度的
pytroch中
程式碼:

mask=np.load(’/home/yy/cd‘)
mask = torch.tensor(mask)       #pytroch中要輸入tensor,mask原來為numpy,轉化成tensor
print(mask.shape,'初始的mask維度')   
mask = mask.unsqueeze(-1)   #在最後增添一維    
print(mask.shape,'增加一個維度以後')    

結果:
在這裡插入圖片描述
mask = mask.unsqueeze(-2) #在倒數第二增添一維

結果:
在這裡插入圖片描述
以此類推!!
squeeze()的使用方法和unsqueeze()是一樣的。
**但是!**squeeze只能去除長度為一的那一個維度,如果長度不是1那就沒有效果。
比如

print(mask.shape,'原來的mask維度')
mask = mask.squeeze(-2)
print(mask.shape,'減少一個維度的mask維度')

結果
在這裡插入圖片描述
squeeze沒有起作用
當去除維度為一時:

print(mask.shape,'原來的mask維度')
mask = mask.squeeze(-1)
print(mask.shape,'減少一個維度的mask維度')

結果


squeeze把維度是1的那個維度去掉了
在這裡插入圖片描述
MATLAB裡unsqueeze和squeeze作用和pytroch中是一樣的
直接可以對numpy進行操作。
舉一個小例子:
%將q去除維度為1的,賦值給w
w=squeeze(q);