日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pytorch笔记:torch.nn.functional.pad

發布時間:2025/4/5 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的實際效果,我們首先給出一個四維的空值矩陣。【維度分別代表(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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。