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,主要的流程如下,先有個概念即可:
- 輸入圖片
- 捲積然後用 relu 輸出響應
- 池化 (選擇較重要的資訊)
- 重複 2 和 3
- 扁平化並連接神經元
- 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)
留言
張貼留言