pytorch中squeeze()和unsqueeze()函式介紹;MATLAB中的squeeze()
阿新 • • 發佈:2021-01-29
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);