臺大李巨集毅--CNN
阿新 • • 發佈:2019-01-01
CNN與普通深度學習(全網路連線 )的很大區別就是:CNN是關注圖片的一小部分,一小部分的。而普通深度學習是把影象的每一個畫素全部拉長,都作為輸入。
一:CNN整體流程
1. CNN – Convolution
CNN 的Convolution與 普通DNN (Fully Connected )的異同
**由上面的三個圖可以看見,CNN的卷積過程,其實就是 普通DNN 訓練模型的過程。
不同點是:
1. 若把CNN的卷積理解DNN,那麼訓練時,相當於每次僅僅選出
個輸入元素,而普通DNN一般是
個輸入元素(即所有輸入元素都用)。
(這裡n是Filter矩陣的維度,m是輸入的image矩陣的維度)
2. 若把CNN的卷積理解DNN,那麼DNN有很多的權重值都要保持一致(即是共享的)。如上面最後一張圖。顏色相同的線,就表明那裡的元素要保持一致。**
2. CNN – – Max Pooling
3. CNN – – Flatten
二:CNN程式碼實現
三:為什麼CNN比普通DNN(Fully Connected)要好
1. 引數少
根據是上面已經講解的內容,CNN其實可以理解為是:簡化版本的DNN(Fully Connected)
但是CNN的不同點就在於,
1. CNN的引數少
如上圖,下一層一個神經元其實只取上一層的
個神經元(n是Filter的行數),而DNN要使用上一層所有的神經元。(還有其他地方都顯示的CNN引數少)
2. . 下一層每一個神經元之間其實共用的權重(上面已講)
2. 同一內容,只用一個神經元處理即可。哪怕在圖片中,該內容在其他地方。The same patterns appear in different regions.
3. Subsampling the pixels will not change the object
4. Some patterns are much smaller than the whole image
考慮每個神經元主要對影象哪方面進行分類?(Which image make the a specific neuron active?)
- 對於第一層神經元,可以直接觀察它對每一個影象的選擇,就可以確定出該神經元偏好於哪方面的影象。
- 對於高層的神經元