pytorch笔记:torch.nn.functional.pad
1 torch.nn.functional.pad函數
????????torch.nn.functional.pad是pytorch內置的tensor擴充函數,便于對數據集圖像或中間層特征進行維度擴充
torch.nn.functional.pad(input, pad, mode='constant', value=0)2 參數說明
| input | 需要擴充維度的tensor |
| pad | 擴充維度,用于預先定義出某維度上的擴充參數 |
| mode | 擴充方法,’constant‘, ‘reflect’ or ‘replicate’三種模式,分別表示常量,反射,復制 |
| value | 擴充時指定補充值 ????????但是value只在mode='constant’有效,即使用value填充在擴充出的新維度位置,而在’reflect’和’replicate’模式下,value不可賦值 |
3 逐維理解torch.nn.functional.pad
????????為了方便從可視角度上分析torch.nn.functional.pad的實際效果,我們首先給出一個四維的空值矩陣?!揪S度分別代表(batchsize, channel, height, width)】
import torch import torch.nn.functional as Ft = torch.empty(1, 3, 5, 3) t.size()''' torch.Size([1, 3, 5, 3]) '''3.1 擴展一個維度
我們先只觀察t的最后兩維,即一個5行3列的矩陣
?????????如果torch.nn.functional.pad中第二個參數pad只定義兩個參數,表示只對輸入矩陣的最后一個維度進行擴充,不會對前面的維度造成任何影響
import torch import torch.nn.functional as Ft = torch.empty(1, 3, 5, 3) t.size() ''' torch.Size([1, 3, 5, 3]) '''p1d = (1, 2) t1 = F.pad(t, p1d, 'constant', 1) t1.size() ''' torch.Size([1, 3, 5, 6]) '''????????接下來,從可視化的角度分析一下一維padding。為了方便理解,原始矩陣全為0值,擴充維度全部用1值填充:
? ? ? ? 通過上圖我們可以看到,經過torch.nn.functional.pad后?左側擴充了1列,右側擴充了2列,即原始矩陣大小從5×3擴充到5×6,則p1d的參數設置意義為:(左邊填充數, 右邊填充數)
3.2 擴展兩個維度
import torch import torch.nn.functional as Ft = torch.empty(1, 3, 5, 3) t.size() ''' torch.Size([1, 3, 5, 3]) '''p2d = (1, 2, 3, 4) t2 = F.pad(t4d, p2d, 'constant', 2) t2.size() ''' torch.Size([1, 3, 12, 6]) '''同樣地,我們可視化看一下效果:
可以看到,維度左邊擴充了一列,右側擴充了2列;上邊擴充了3行,下邊擴充了4行。
也就是說,前兩個參數對最后一個維度有效,后兩個參數對倒數第二維有效。
換句話說,p2d參數的實際意義是:(左邊填充數, 右邊填充數, 上邊填充數, 下邊填充數)
?3.3 擴展三個維度
import torch import torch.nn.functional as Ft = torch.empty(1, 3, 5, 3) t.size() ''' torch.Size([1, 3, 5, 3]) '''p3d = (1, 2, 3, 4, 5, 6) t3 = F.pad(t4d, p3d, 'constant', 3) t3.size() ''' torch.Size([1, 14, 12, 6]) '''同樣進行可視化?
可以看到,前面擴展了5個維度,后面6個維度
所以p3d的實際意義是:(左邊填充數, 右邊填充數, 上邊填充數, 下邊填充數, 前邊填充數,后邊填充數)
4 總結
?也就是說,pad參數的意思是:從最后一個維度開始,維度一前一后擴展]
參考文獻:PyTorch碎片:F.pad的圖文透徹理解_面壁者-CSDN博客_f.pad
總結
以上是生活随笔為你收集整理的pytorch笔记:torch.nn.functional.pad的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 文巾解题 01.05. 一次编辑
- 下一篇: NTU课程:MAS714(4):贪心