nn.Conv2d中padding详解【pytorch学习】
簡(jiǎn)述
在網(wǎng)上看了很多的解釋,自己又大致的理解了一下之后明白了。
文章目錄
- 簡(jiǎn)述
- 卷積
- 加上padding的卷積
- 1.使得整個(gè)圖大小不會(huì)發(fā)生變化。
- 2.使得整個(gè)圖大小不會(huì)發(fā)生變化。
- 實(shí)際上的公式
- 關(guān)于padding的數(shù)值
- 引用
卷積
首先我們得明白什么是卷積。
但是由于我們這里只想要推理padding的大小,所以只會(huì)討論這個(gè)大小的問題。
- (n,n)和(n, n)的矩陣相乘,規(guī)模任然是(n, n)。
- 我們知道,卷積的過程,其實(shí)是kernal在整體輸入上的一個(gè)滑動(dòng)的過程。
- 首先我們得知道滑動(dòng)的步長(zhǎng)。(stride)
- 推理這個(gè)公式其實(shí)非常簡(jiǎn)單。 (original_size - (kernal_size - 1)) / stride
- 上面的公式現(xiàn)在還沒有化簡(jiǎn),但是其實(shí)非常容易理解的。就是原圖刪除掉(kernal-1)大小之后的區(qū)間除以stride后,向下整數(shù)。
- 減去那個(gè)部分是為了避免越界。
- 之后再除以步長(zhǎng),就是小學(xué)經(jīng)典的,給定長(zhǎng)度的路,再給定一個(gè)樹之間的間距,來算能插入多少棵樹的問題了。
上面的公式就給出了,經(jīng)過一次卷積之后,生成的圖的大小。
加上padding的卷積
上面部分其實(shí)是容易理解,加上padding有兩個(gè)作用
padding的含義: 在四周加格子
1.使得整個(gè)圖大小不會(huì)發(fā)生變化。
- 如果留心上面的操作的話,會(huì)發(fā)現(xiàn),只有當(dāng)kernal=1并且stride=1的時(shí)候,新圖的大小才能等于原始大小。否則只能更小。但是對(duì)于研究深度學(xué)習(xí)的人(調(diào)模型參數(shù)的菜雞們),這個(gè)怎么可以容忍了,沒有參數(shù)可以調(diào)了!!只能是1!那還搞什么啊!
- 所以,加上了padding
加上padding之后,上面的公式就要發(fā)生修改了。
(OriginalSize?(KernalSize?1)+2?padding)/stride(OriginalSize - (KernalSize - 1) + 2 * padding) / stride(OriginalSize?(KernalSize?1)+2?padding)/stride
因?yàn)閜adding如果是數(shù)值的話,表示的是兩邊都加。也就加了兩遍的padding在origin的大小上,所以,就乘以2
2.使得整個(gè)圖大小不會(huì)發(fā)生變化。
使得邊緣的數(shù)據(jù)可以被用到。非常顯然,這里的邊緣數(shù)據(jù)都很少被用到的。
所以加上之后,擴(kuò)充了整個(gè)圖,讓邊緣的數(shù)據(jù)的用到次數(shù)得到提高。這樣才能更好的得到整張圖的特征。
實(shí)際上的公式
OutputSize=InputSize?KernalSize+2?Paddingstride+1OutputSize = \frac{InputSize - KernalSize + 2 * Padding}{stride} + 1 OutputSize=strideInputSize?KernalSize+2?Padding?+1
非常奇怪,公式是這樣的。
其實(shí),當(dāng)OutputSize這些都是2的倍數(shù)的時(shí)候,這個(gè)是沒什么考慮的。
個(gè)人認(rèn)為是考慮到有奇數(shù)的情況。但具體的我也沒有經(jīng)過數(shù)學(xué)推導(dǎo)證明過,如果有的話,歡迎大佬分享。
關(guān)于padding的數(shù)值
這里就引進(jìn)了一個(gè)新的參數(shù),那就是bias.
有興趣的朋友可以自己查一查。
引用
https://blog.csdn.net/u012442157/article/details/78570505
https://pytorch.org/docs/stable/nn.html
https://blog.csdn.net/g11d111/article/details/82665265
總結(jié)
以上是生活随笔為你收集整理的nn.Conv2d中padding详解【pytorch学习】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pytorch下载mnist超时解决方案
- 下一篇: 卷积神经网络CNN入门【pytorch学