pytorch入門(七):unsqueeze
unsqueeze
1、升維
unsqueeze用來改變Tensor的維度,把低維的Tensor變為高維的Tensor。如3×4的Tensor,變為1×3×4、3×1×4、3×4×1的Tensor。
先造一個3×4的Tensor,看看結果。
a = torch.arange(12).reshape(3,4)
print(a)
tensor([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
用squeeze做升維操作,squeeze(n)的引數n指定新維度的位置。
print(a.unsqueeze(0).shape)
print(a.unsqueeze(1))
print('-'*10)
print(a.unsqueeze(1).shape)
print(a.unsqueeze(1))
print(a.unsqueeze(2).shape)
print(a.unsqueeze(1))
結果中的1就是新維度的位置,它導致資料中括號的不同位置。
torch.Size([1, 3, 4])
tensor([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]]])
----------
torch.Size([3, 1, 4])
tensor([[[ 0, 1, 2, 3]],
[[ 4, 5, 6, 7]],
[[ 8, 9, 10, 11]]])
----------
torch.Size([3, 4, 1])
tensor([[[ 0],
[ 1],
[ 2],
[ 3]],
[[ 4],
[ 5],
[ 6],
[ 7]],
[[ 8],
[ 9],
[10],
[11]]])
2、用None來實現
其實,我們也可用與numpy相同的方式來做到這一點,即直接用None、:、…來標記新維度的位置。
a = np.arange(12).reshape(3,4)
print(a[None].shape)
print(a[:,None].shape)
print(a[:,:,None].shape)
a[:, :, None] 與 a[…, None]有相同的效果。
這種方式還能一次新增兩個新維度,如
print(a[:,None,:,None].shape)
得到4維陣列
(3, 1, 4, 1)
在pytorch中的用法完全相同,只要把a改為Tensor即可。
a = torch.arange(12).reshape(3,4)
print(a[None].shape)
print(a[:,None].shape)
print(a[:,:,None].shape)
print(a[:,None,:,None].shape)
接結果為
torch.Size([1, 3, 4])
torch.Size([3, 1, 4])
torch.Size([3, 4, 1])
torch.Size([3, 1, 4, 1])
相關文章
- Pytorch入門-TransformsPyTorchORM
- Pytorch Dataset入門PyTorch
- Pytorch入門-dataloaderPyTorch
- Pytorch入門演練PyTorch
- Pytorch入門下 —— 其他PyTorch
- 【Pytorch教程】迅速入門Pytorch深度學習框架PyTorch深度學習框架
- pytorch入門- tensor基礎操作(1)PyTorch
- Pytorch入門中 —— 搭建網路模型PyTorch模型
- Pytorch入門上 —— Dataset、Tensorboard、Transforms、DataloaderPyTorchORBORM
- Pytorch實戰入門(一):搭建MLPPyTorch
- linux 入門(七)-ffmpeg使用Linux
- Anaconda Pytorch 深度學習入門記錄PyTorch深度學習
- Pytorch入門:tensor張量的構建PyTorch
- Java入門教程七(陣列)Java陣列
- PyTorch深度學習入門筆記(一)PyTorch環境配置及安裝PyTorch深度學習筆記
- Pytorch DistributedDataParallel(DDP)教程二:快速入門實踐篇PyTorchParallel
- PyTorch入門-殘差卷積神經網路PyTorch卷積神經網路
- 使用 C# 入門深度學習:Pytorch 基礎C#深度學習PyTorch
- 【筆記】PyTorch快速入門:基礎部分合集筆記PyTorch
- Pytorch系列:(七)模型初始化PyTorch模型
- Pytorch學習(七)---- 儲存提取PyTorch
- JS基礎入門篇(七)—運算子JS
- Spring入門(七):Spring Profile使用講解Spring
- React 從入門到進階之路(七)React
- Python 從入門到進階之路(七)Python
- 入門篇-其之七-Java運算子Java
- k8s入門之Ingress(七)K8S
- pytorch基礎七(矩陣運算)PyTorch矩陣
- Flask框架從入門到精通之Response(七)Flask框架
- 從基礎概念到實現,小白如何快速入門PyTorchPyTorch
- PyTorch 60 分鐘入門教程:資料並行處理PyTorch並行
- Python 爬蟲從入門到進階之路(七)Python爬蟲
- jQuery入門(七)jQuery實現按鈕分頁jQuery
- Docker從入門到精通(七)——容器資料共享Docker
- 第七篇.HFM規則入門(一)
- Docker 實戰教程之從入門到提高 (七)Docker
- 如何入門Pytorch之四:搭建神經網路訓練MNISTPyTorch神經網路
- 七天.NET 8操作SQLite入門到實戰 - 第三天SQLite快速入門SQLite