池化层:最大池化MaxPool、平均池化AvgPool、自适应池化AdaptiveMaxPool区别--基于pytorch框架
文章目錄
- MaxPool2d最大池化
- AvgPool2d平均池化
- AdaptiveAvgPool2d自適應(yīng)平均池化
池化操作的一個(gè)重要的目的就是對(duì)卷積后得到的特征進(jìn)行進(jìn)一步處理,池化層可以起到對(duì)數(shù)據(jù)進(jìn)一步濃縮的效果,從而緩解計(jì)算時(shí)內(nèi)存的壓力。
在pytoch中提供很多池化的類,這里主要介紹最**大池化(MaxPool)、平均池化(AvgPool)、自適應(yīng)池化(AdaptiveAvgpool)**的區(qū)別,,其他方法類似。
對(duì)于torch.nn.MaxPool2d()池化操作相關(guān)參數(shù)的應(yīng)用,其使用方法如下所示
torch.nn.MaxPool2d(kernel_size,stride=None,padding=0,dilation=1,return_indices=False,ceil_mode=False)參數(shù)使用說(shuō)明:
kernel_size:(整數(shù)或者數(shù)組)最大池化的窗口大小;
stride:(整數(shù)或數(shù)組,正數(shù))最大值池化窗口移動(dòng)的步長(zhǎng),默認(rèn)值是kernel_size
padding:(整數(shù)或數(shù)據(jù)、正數(shù))輸入的每一條邊補(bǔ)充0的層數(shù)
dilation:(整數(shù)或數(shù)組、正數(shù))一個(gè)控制窗口中元素步幅的參數(shù)
return_indices:如果為True,則會(huì)返回輸出最大值的索引,這樣會(huì)更加便于后面的torch.nn.MaxUnpool2d操作
ceil_mode:如果等于True,計(jì)算輸出信號(hào)的大小時(shí)候,會(huì)使用向上取整,默認(rèn)向下取整。
測(cè)試圖片見(jiàn)下圖
MaxPool2d最大池化
對(duì)卷積后的結(jié)果進(jìn)行最大池化
maxpool2 = nn.MaxPool2d(2,stride=2) pool2_out = maxpool2(imconv2dout) pool2_out_im = pool2_out.squeeze() print('pool2_out.shape')對(duì)原始圖片2160 * 3840進(jìn)行特征映射在經(jīng)過(guò)窗口為22,步長(zhǎng)為2的最大池化后,尺寸變成10781918的特征映射。將兩個(gè)特征映射進(jìn)行可視化
plt.figure(figsize = (12,6)) plt.subplot(1,2,1) plt.imshow(pool2_out_im[0].data,cmap=plt.cm.gray) plt.axis("off") plt.subplot(1,2,2) plt.imshow(pool2_out_im[1].data,cmap=plt.cm.gray) plt.axis("off") plt.show()最大池化的結(jié)果圖像
完整代碼見(jiàn)下圖所示
AvgPool2d平均池化
對(duì)卷積后的輸出結(jié)果進(jìn)行平均池化,并進(jìn)行可視化操作
avgpool2 = nn.AvgPool2d(2,stride=2) pool2_out = avgpool2(imconv2dout) pool2_out_im = pool2_out.squeeze() print(pool2_out.shape) plt.figure(figsize = (12,6)) plt.subplot(1,2,1) plt.imshow(pool2_out_im[0].data,cmap=plt.cm.gray) plt.axis("off") plt.subplot(1,2,2) plt.imshow(pool2_out_im[1].data,cmap=plt.cm.gray) plt.axis("off") plt.show()得到的可視化圖片如下所示
AdaptiveAvgPool2d自適應(yīng)平均池化
AdaAvgpool2 = nn.AdaptiveAvgPool2d(output_size=(100,100)) pool2_out = AdaAvgpool2(imconv2dout) pool2_out_im = pool2_out.squeeze() print(pool2_out.shape)plt.figure(figsize = (12,6)) plt.subplot(1,2,1) plt.imshow(pool2_out_im[0].data,cmap=plt.cm.gray) plt.axis("off") plt.subplot(1,2,2) plt.imshow(pool2_out_im[1].data,cmap=plt.cm.gray) plt.axis("off") plt.show()可視化圖像如同所示
總結(jié)
以上是生活随笔為你收集整理的池化层:最大池化MaxPool、平均池化AvgPool、自适应池化AdaptiveMaxPool区别--基于pytorch框架的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 解决This picacion faie
- 下一篇: 解决jupyter notebook的k