cnn stride and padding_CNN中的stride、kernel、padding计算
生活随笔
收集整理的這篇文章主要介紹了
cnn stride and padding_CNN中的stride、kernel、padding计算
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在卷積網絡搭建過程中,遇到了一個困惑,那就是如何根據卷積的一些超參數來計算網絡的輸出的大小,即卷積尺寸變化
為了使得計算過程更加直觀,定義以下參數
定義
定義
定義
輸入尺寸為
輸出尺寸為
則有卷積尺寸變化為
例如,輸入為
,卷積核為 ,步長 , ,由以上公式可以得出新的輸出為 輸出任然為28不變但是肯定會有不能被整除的狀況,在PyTorch中可以看到
池化類似
Shape:- Input: :math:`(N, C, H_{in}, W_{in})`- Output: :math:`(N, C, H_{out}, W_{out})`, where.. math::H_{out} = leftlfloorfrac{H_{in} + 2 * text{padding[0]} - text{dilation[0]}times (text{kernel_size[0]} - 1) - 1}{text{stride[0]}} + 1rightrfloor.. math::W_{out} = leftlfloorfrac{W_{in} + 2 * text{padding[1]} - text{dilation[1]}times (text{kernel_size[1]} - 1) - 1}{text{stride[1]}} + 1rightrfloor在PyTorch中對于不能整除的狀況默認均為向下取整,可以選擇向上取整
肯定有小伙伴在困惑,這些參數有什么意義嘛,剛開始看到這個公式的時候我也有這樣的困惑,但是后來和實驗室師兄交流弄懂了,如果我們需要設定指定大小的輸入輸出,那么中間的超參數的設置就很有意義了。
例如輸入為
,采用的是 的卷積核,常規卷積的步長 ,為了保證輸出也為,那么就需要設置填充;如果卷積核是 ,那么為了保證輸出也為 ,則需要設置填充。具體的計算任然參照上面的公式。總結
以上是生活随笔為你收集整理的cnn stride and padding_CNN中的stride、kernel、padding计算的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c类网络使用子网掩码有无实际意义_弄懂I
- 下一篇: python如何安装matplotlib