Global Average Pooling與FC與Average Pooling與 Global Max Pooling

1. Global Average Pooling

Global Average Pooling(GAP)出自 Network in network

GAP 輸入(H, W, C)-->(1, 1, C)

直接在HW上pooling,將信息壓縮到一個點。

優點:和FC相比無訓練參數,所以可以防止過擬合

參考 https://zhuanlan.zhihu.com/p/37683646

2.與Global Max Pooling

都是壓縮信息。只不過方式不同,SEnet實驗證明,average稍微好一點

參考:https://www.zhihu.com/question/358913301/answer/922183264

3.與 Average Pooling

輸入(H, W, C)

GAP輸出:(1, 1, C):相當於信息壓縮,關注全局特徵

AP(after_pooling_size, after_pooling_size, C):信息提取,保留紋理信息,關注局部特徵。

在數學關係上可以把GAP理解成AP的一種特例

4.torch 實現:

import torch
AP = torch.nn.AvgPool2d(kernel_size=2, stride=2)
GAP = torch.nn.AdaptiveAvgPool2d((1, 1))

img = torch.rand((1, 1, 4, 4))
print(img)
print(AP(img))
print(GAP(img))

(0 ,0 ,.,.) = 
  0.6732  0.6106  0.4917  0.0805
  0.1563  0.3157  0.0982  0.5887
  0.7983  0.1506  0.5492  0.9515
  0.3850  0.7505  0.4365  0.7801
[torch.FloatTensor of size 1x1x4x4]

Variable containing:
(0 ,0 ,.,.) = 
  0.4389  0.3147
  0.5211  0.6793
[torch.FloatTensor of size 1x1x2x2]

Variable containing:
(0 ,0 ,.,.) = 
  0.4885
[torch.FloatTensor of size 1x1x1x1]

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章