2、卷積神經網絡概念

學習目標:瞭解卷積神經網絡概念和相關操做;網絡

1、全鏈接神經網絡ide

定義:每一個神經元與先後相鄰層的每個神經元都有鏈接,輸入:特徵,輸出:預測的結果。函數

參數個數:w+b = ∑ (前層 × 後層 + 後層)
學習

注意:待優化的參數過多, 容易致使模型過擬合。 在實際應用中,會先對原始圖像進行特徵提取,把提取到的特徵餵給全鏈接
網絡,再讓全鏈接網絡計算出分類評估值。

2、卷積 Convolutional
2.1 定義
優化

卷積是一種有效提取圖片特徵的方法。 通常用一個正方形卷積核,遍歷圖片上的每個像素點。圖片與卷積核重合區域內相對應的每個像素值乘卷積核
內相對應點的權重,而後求和, 再加上偏置後,最後獲得輸出圖片中的一個像素值。


spa

 例如,5x5x1 的灰度圖片(1 表示單通道, 5x5 表示分辨率,共有 5 5列個灰度值)。 若用一個 3x3x1 的卷積覈對此 5x5x1 的灰度圖片進行卷積, 偏置項b=1
當前位置計算一個卷積值:(-1)x1+0x0+1x2+(-1)x5+0x4+1x2+(-1)x3+0x4+1x5+1=13d

輸出圖片邊長=(輸入圖片邊長卷積核長+1/步長,此圖爲:(5 – 3 + 1)/ 1 = 3, 輸出圖片是 3x3 的分辨率, 用了 1 個卷積核, 輸出深度是 1,最後輸出的是3x3x1 的圖片。
code

2.2 全零填充 Padding
blog

在輸入圖片周圍進行全零填充,能夠保證輸出圖片的尺寸和輸入圖片一致 。例如:5x5x1 的圖片周圍進行全零填充, 可以使輸出圖片仍保持 5x5x1
維度。 這個全零填充的過程叫作
padding
圖片

使用 padding 的輸出圖片邊長 = 輸入圖片邊長/步長; 

標記:若是用全零填充, 也就是 padding=SAME。 若是不用全零填充, 也就是 padding=VALID
3、函數操做

tf.nn.conv2d是TensorFlow裏面實現卷積的函數,實際上這是搭建卷積神經網絡比較核心的一個方法.

函數原型:

    tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, name=None)

函數說明:

    

其中,

(1)batch 表示一次喂入多少張圖片;分辨率:5行5列;灰度圖爲單通道,參數寫 1,RGB 三個顏色組成的彩色圖爲3通道,參寫3;

(2)注意: 卷積核的通道數是由輸入圖片的通道數決定的,卷積核的通道數等於輸入圖片的通道數,因此卷積核的通道數也是 1。一共有 16 個這樣的卷積核,說明卷積操做後輸出圖片的深度是 16,也就是輸出爲16 通道,輸出16張3*3的feature map。

(3)核滑動步長:第一個 1 和最後一個 1 這裏是固定的,這句表示橫向縱向都以 1 爲步長。最後一個參數表示是否使用 padding。

RGB 三個顏色組成的彩色圖:

卷積核的深度應該等於輸入圖片的通道數,因此使用 3x3x3的卷積核,最後一個 3 表示匹配輸入圖像的 3 個通道。

卷積計算方法:和單層卷積核類似,卷積核爲了匹配紅綠藍三個顏色,把三層的卷積核套在三層的彩色圖片上,重合的 27 個像素進行對應點的乘加運算,最後的結果再加上偏置項 b,求得輸出圖片中的一個值。

tf.nn.conv2d函數:

4、池化

3.1 最大池化

  卷積核在輸入圖片重合部分取最大值,Tensorflow最大池化用 tf.nn.max_pool 函數;這裏結果就被壓縮爲原來的1/4。

函數描述:

3.2 平均池化

  卷積核在輸入圖片重合部分取平均值,平均池化用 tf.nn.avg_pool 函數。 

捨棄 Dropout

        在神經網絡訓練過程當中,爲了減小過多參數常使用 dropout 的方法,將一部分神經元按照必定機率從神經網絡中捨棄。這種捨棄是臨時性的,僅在訓練時捨棄一些神經元;在使用神經網絡時,會把全部的神經元恢復到神經網絡中。好比上面這張圖,在訓練時一些神經元不參加神經網絡計算了。Dropout 能夠有效減小過擬合,加快模型的訓練速度。

dropout 一 般 會 放 到 全 連 接 網 絡 中 。 如 果在 訓 練 參 數 的 過 程 中 , 輸 出=tf.nn.dropout(上層輸出,暫時捨棄神經元的機率),這樣就有指定機率的神經元被隨機置零,置零的神經元不參加當前輪的參數優化。

總結:

卷積神經網絡能夠認爲由兩部分組成:(1)對輸入圖片進行特徵提取;(2)就是全鏈接網絡。只不過喂入全鏈接網絡的再也不是原始圖片,而是通過若干次卷積、激活和池化後的特徵信息。

相關文章
相關標籤/搜索