卷積神經網絡
全連接NN
每個神經元與前後相鄰層的每一個神經元都有連接關係,輸入是特徵,輸出爲預測的結果。
參數個數: 前層*後層爲權重w+後層偏置b
待優化參數過多容易導致模型過擬合,實際應用中會先對原始圖像進行特徵提取再吧提取到的特徵餵給全連接神經網絡
卷積 Convolution
- 卷積可認爲是一種有效提取圖像特徵的方法
- 一般會用一個正方形卷積核,遍歷圖片上的每個點。圖片區域內,相對應的每一個像素值,乘以卷積核內想對應點的權重,求和,再加上偏置。
輸出圖片變長=(輸入圖片邊長-卷積核長+1)/步長
全零填充 Padding
在輸入圖片的周圍添加一圈0,可以保證輸出圖片大小和輸出圖片大小相同
在Tensorflow框架中,使用參數padding='SAME'表示全零填充,padding=‘VAILD’爲不使用全零填充
Tensorflow計算卷積
tf.nn.conv2d(
[batch,5,5,1], #輸入描述 分辨率 與 通道數
[3,3,1,16], #卷積核描述 行列分辨率 通道數 核個數
[1,1,1,1] #核滑動步長 行步長 列步長
padding='VALID'
)
池化 Pooling
- 池化用於減少特徵數量
- 最大值池化可提取圖片紋理,均值池化可保留背景特徵
Tensorflow計算池化:
#最大值池化
tf.nn.max_pool(
[batch,28,28,6], #輸入描述 分辨率 與 通道數
[1,2,2,1], #池化核描述 行列分辨率 通道數 核個數
[1,2,2,1] #池化核滑動步長 行步長 列步長
padding='SAME' )
#平均值池化
pool=tf.nn.avg_pool
捨棄 Dropout
在神經網絡的訓練過程中,將一部分神經元按照一定的概率從神經網絡中短暫捨棄。使用時被捨棄的神經元回覆鏈接。
tf.nn.dropout(上層輸出,暫時捨棄的概率)
卷積NN:藉助卷積核(kernel)提取特徵後,送入全連接網絡
lenet5