習(xí)筆記(小白筆記))
池化的核心作用池化Pooling一般用在卷積網(wǎng)絡(luò)里有 4 個核心作用1降維下采樣縮小特征圖高、寬減少參數(shù)量、加快計算2特征濃縮把一塊區(qū)域的關(guān)鍵特征保留下來3平移不變性物體稍微偏移不影響提取的特征4抑制過擬合減少冗余信息三類常用的池化1最大池化 MaxPool取區(qū)域最大值保留邊緣、紋理特征2平均池化 AvgPool取區(qū)域平均值保留整體、平滑特征3自適應(yīng)池化 AdaptivePool不管輸入多大強制輸出指定尺寸importtorchimporttorch.nnasnn# 1. 造一個模擬特征張量# shape: [batch1, channel1, height4, width4]xtorch.tensor([[[[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]]],dtypetorch.float32)print(原始張量 shape:,x.shape)#torch.Size([1, 1, 4, 4])print(原始張量)print(x)#tensor([[[[ 1., 2., 3., 4.],[ 5., 6., 7., 8.], [ 9., 10., 11., 12.],[13., 14., 15., 16.]]]])# 最大池化2乘2窗口內(nèi)的最大值max_poolnn.MaxPool2d(kernel_size2,stride2)x_maxmax_pool(x)print(shape:,x_max.shape)#torch.Size([1, 1, 2, 2])print(x_max)#tensor([[[[ 6., 8.],[14., 16.]]]])# 平均池化2乘2窗口內(nèi)的平均值avg_poolnn.AvgPool2d(kernel_size2,stride2)x_avgavg_pool(x)print(shape:,x_avg.shape)#torch.Size([1, 1, 2, 2])print(x_avg)#tensor([[[[ 3.5000, 5.5000],[11.5000, 13.5000]]]])# 自適應(yīng)平均池化 輸出固定 1×1adap_avg_poolnn.AdaptiveAvgPool2d(output_size1)x_adapadap_avg_pool(x)print(shape:,x_adap.shape)#torch.Size([1, 1, 1, 1])print(x_adap)#tensor([[[[8.5000]]]])全連接核心作用維度變換、升維把零散一維浮標(biāo)點 “撐開” 成一張空白網(wǎng)格的大小在進(jìn)入全連接之前我們手里拿到的往往是一串「一維離散點」比如某個海域里只有 5 個浮標(biāo)每個浮標(biāo)測到一個有效波高拼起來就是一個長度為 5 的向量。而后續(xù)的卷積層需要的是「二維矩陣」形式的輸入高度 × 寬度兩者形狀對不上中間就必須靠全連接層來做一次「形狀翻譯」。具體做法是把長度為 N 的一維向量通過一個Linear(N, H*W)的線性層映射成 H×W 個數(shù)值再reshape成 H×W 的二維矩陣。這樣原本零散分布的浮標(biāo)點就被「撐開」鋪滿了一整張網(wǎng)格每個網(wǎng)格點都對應(yīng)一個由所有浮標(biāo)共同決定的數(shù)值。例子輸入只有少數(shù)幾個浮標(biāo)的有效波高輸出一張二維海浪空間分布圖importtorchimporttorch.nnasnn# 假設(shè)海域網(wǎng)格是 8×8共 64 個格點H,W8,8# 只有 5 個浮標(biāo)測得 5 個有效波高buoystorch.randn(1,5)# shape: [batch1, 浮標(biāo)數(shù)5]# 全連接升維5 - 64fcnn.Linear(5,H*W)gridfc(buoys)# shape: [1, 64]gridgrid.reshape(1,1,H,W)# shape: [1, 1, 8, 8]print(grid.shape)# torch.Size([1, 1, 8, 8])優(yōu)點可以把任意長度一維離散點變成二維矩陣解決「浮標(biāo)是離散點不能直接進(jìn)卷積」的難題。無論浮標(biāo)是 3 個、5 個還是 20 個只要調(diào)整Linear的輸入維度都能統(tǒng)一映射到同一張網(wǎng)格上后續(xù)卷積層的接口就固定下來了。缺點沒有空間局部感知不會利用 “相鄰海域海浪高度是漸變” 這個常識單獨用全連接重建出來的空間場效果很差。因為全連接層對每個輸出格點都獨立地連接了全部輸入浮標(biāo)它并不知道「左上角」和「右下角」在空間上是遠(yuǎn)是近也無法表達(dá)「離某個浮標(biāo)越近、波高越接近該浮標(biāo)讀數(shù)」這種先驗。結(jié)果就是重建出的空間場容易出現(xiàn)不自然的跳變和噪點看起來不像真實的海浪分布。也正因為如此全連接在這里只承擔(dān)「升維 變形」的過渡角色真正負(fù)責(zé)把空間結(jié)構(gòu)補回來的是后面的卷積層。卷積層核心作用提取空間局部特征學(xué)習(xí)空間相鄰關(guān)系把粗糙畫布打磨成合理的海浪場學(xué)習(xí)海浪空間平滑、空間分布規(guī)律修復(fù)空間紋理 輸出高質(zhì)量二維網(wǎng)格化有效波高場