1. 程式人生 > 其它 >學習筆記——卷積神經網路概念

學習筆記——卷積神經網路概念

卷積神經網路:以卷積層為主的深度網路結構(卷積層、啟用層、BN層、池化層、FC層、損失層)

卷積層:對影象和濾波矩陣進行內積運算(逐個元素相乘在求和)卷積後得到一個特徵圖

步長:?stride

下采樣?減少?

上取樣?:擴充套件?

padding:對邊緣填充

dilation:空洞卷積,分割網路中會用,其他網路中不用,膨脹,不經過下采樣,增加感受野

kernel一般用3*3

pytorch裡函式nn.Conv2D

常見的卷積操作:

1、分組卷積(group引數)

2、空洞卷積(dilation引數)

3、反捲積:上取樣

、深度可分離卷積(分組卷積+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