學習筆記——卷積神經網路概念
卷積神經網路:以卷積層為主的深度網路結構(卷積層、啟用層、BN層、池化層、FC層、損失層)
卷積層:對影象和濾波矩陣進行內積運算(逐個元素相乘在求和)卷積後得到一個特徵圖
步長:?stride
下采樣?減少?
上取樣?:擴充套件?
padding:對邊緣填充
dilation:空洞卷積,分割網路中會用,其他網路中不用,膨脹,不經過下采樣,增加感受野
kernel一般用3*3
pytorch裡函式nn.Conv2D
常見的卷積操作:
1、分組卷積(group引數)
2、空洞卷積(dilation引數)
3、反捲積:上取樣
4、深度可分離卷積(分組卷積+1*1卷積)
5、可變形卷積等:卷積和的shape不固定
6、標準卷積
4和6用的比較多
感受野:
加深網路可以增加非線性表達能力,增加引數量
如何理解卷積層的引數量和計算量——引數量:參與計算引數的個數,佔用記憶體空間,FLOPS:每秒浮點數計算的次數,衡量硬體效能;計算速度
Flops:計算量
如何壓縮卷積層引數和計算量?
1、採用多個3*3卷積核代替大卷積核
2、採用深度可分離卷積
3、通過shuffle
4、pooling
5、stride=2
常見卷積層結構組合:堆疊(VGG);跳連(Resnet,加快模型收斂);並聯(inception)
池化層:對輸入的特徵圖進行壓縮——1、使特徵圖變小,簡化網路的計算複雜度;2、特徵壓縮,提取主要特徵
最大池化;平均池化。非線性nn.Maxpool2d
上取樣:方法一:Resize,雙線性插值直接縮放,類似於影象縮放
方法二:反捲積
5.7啟用層:
增加網路的非線性,進而提升網路的表達能力。Relu等,torch.nn.Relu(inplace=TRUE)
BatchNorm層
通過一定的規範化的手段,把每層的神經網路任意神經元這個輸入值的分佈強行拉回到均值為0,方差為1的標準正態分佈,是歸一化的一種手段,減少影象之間的絕對差異,加快訓練速度。不適用問題:image-to-image以及對噪聲敏感的任務
全連線層:線性模組
連線所有特徵,將輸出值送給分類器,對影象尺寸敏感。參數多,配合dropout,抑制一些特徵,embeding,
1、對前一層的特徵進行一個加權和(卷積層將資料輸入對映到隱層的特徵空間)將特徵空間通過線性變換對映到樣本標記空間
2、可以通過1*1卷積+globel average pooling 代替
3、可以通過全連線層引數冗餘
4、全連線層引數和尺寸有關
Dropout層
1、在訓練過程中隨機扔掉一些神經元:減少引數,防止過擬合,使模型變得簡單,結構最小化約束
2、測試過程中不適用隨機啟用,所有神經元都啟用
3、防止或減輕過擬合使用的函式,一般用在全連線層
nn.dropout
損失層:
設定一個損失函式用來比較網路的輸出和目標值,通過最小化損失來驅動網路的訓練。
網路的損失通過向前操作計算,網路引數相對於損失函式的梯度則通過反向操作(導數)計算
分類問題:交叉熵
本文來自部落格園,作者:程式設計coding小白,轉載請註明原文連結:https://www.cnblogs.com/zhenhua1203/p/15099865.html