TensorFlow (4-1) CNN Basics

1. Convolution:

Convolution 中譯為捲積,是兩個函數的一種數學運算。文言一點的定義是表徵函數 f 與經過翻轉和平移的 g 的乘積函數所圍成的曲邊梯形的面積。 白話一點就是 f 和 g 的乘積加總(加總是針對不連續函數的說法,若 f 和 g 是連續的就是積分)。

圖像的捲積運算:

上圖我們畫出 9 pixels 的 image f 用 9 pixels 的 g 捲積的過程。捲積的計算由左上到右下為 0*4 + 0*0 + 0*0 + 0*0 + 1*0 + 1*0 + 0*0 + 1*0 + 2*(-4) = -8,捲積完結果放在中心。

捲積的結果可以視為是 image f 對 mask g 的響應。


2. 對 RGB 的矩陣捲積:

影像可以想像成 H*W*D 的三維矩陣,對三維矩陣的捲積要用三個維度的 mask。透過這種機制我們可以攫取 RGB 顏色上的特徵。

假設我們想找的特徵 (g) 有 6 個,則我們捲積完的結果會是一個深度是 6 的 bulk。



3. Pooling:

Pooling 的中文是池化,概念上是選擇捲積後的資訊的手段,透過池化也可以減少之後運算的負擔。常見的池化方式有平均池化和最大池化

對 4 pixels 平均池化

結果為 1.25。

對 4 pixels 最大池化

結果為 3。


4. CNN 的流程:

CNN 全名為 Convolutional Neural Network,主要的流程如下,先有個概念即可:


  1. 輸入圖片
  2. 捲積然後用 relu 輸出響應​
  3. 池化 ​(選擇較重要的資訊)
  4. 重複 2 和 3​
  5. 扁平化並連接神經元​
  6. softmax​ 輸出機率


Reference

[1] Tom Hope, Yehezkel S. Resheff, and Itay Lieder, Learning TensorFlow A Guide to Building Deep Learning Systems , O'Reilly Media (2017)

[2] Nikhil Buduma, Fundamentals of Deep Learning Designing Next-Generation Machine Intelligence Algorithms, O'Reilly Media (2017)

[3] Aurélien Géron, Hands-On Machine Learning with Scikit-Learn and TensorFlow Concepts, Tools, and Techniques to Build Intelligent Systems , O'Reilly Media (2017)

留言

熱門文章