Python人工智能深度學習CNN
1.CNN概述
CNN的整體思想,就是對圖片進行下采樣,讓一個函數(shù)只學一個圖的一部分,這樣便得到少但是更有效的特征,最后通過全連接神經網絡對結果進行輸出。
整體架構如下:
輸入圖片
→卷積:得到特征圖(激活圖)
→ReLU:去除負值
→池化:縮小數(shù)據(jù)量同時保留最有效特征
(以上步驟可多次進行)
→輸入全連接神經網絡

2.卷積層
CNN-Convolution
卷積核(或者被稱為kernel, filter, neuron)是要被學出來的,卷積核中的數(shù)就是權重(參數(shù))

做內積,把卷積核的每一個參數(shù)和圖像中對應位置的數(shù)字相乘(對應位置的元素相乘,不同于矩陣乘法),再求和。相當于一個神經元,對輸入的數(shù)據(jù),進行權重的分配,而權重就是卷積核的數(shù)據(jù)。再求和,就是第一個神經元所得到的結果。把這個權重對圖片所有數(shù)據(jù)進行處理,就得到第一個激活圖或特征圖(feature map)。我們可以增加卷積核的數(shù)量,就會得到多層激活圖,可以更好的保留數(shù)據(jù)的空間尺寸。

當卷積核與圖片進行相乘相加的時候,如果卷積核此時正在計算的區(qū)域數(shù)字分布與卷積核類似,所得的求和結果會很大(稱為卷積核被激活了),而其他地方會很小,說明圖像在這個區(qū)域,有和卷積核類似的圖案。

一個卷積核只能識別一個特征。因此我們需要添加多個卷積核,卷積核越多,得到的激活圖就越深,輸入圖像的信息就越多。

對于彩色的圖來說,不需要把顏色分開,卷積核的深度和圖像深度是一樣的,比如彩色是紅綠藍三層,那么卷積核也是三層。
卷積層相當于降采樣的神經網絡,如下圖,本來應該連接36個神經元,但實際連接了9個。

3.池化層
CNN-MaxPooling
在Max Pooling,也就是池化層之前,會需要進行一個ReLU函數(shù)轉化,即把小于0的值全轉為0,其他的不變。
池化層主要就是為了減少數(shù)據(jù)量,選一個尺寸之后,直接用尺寸中的最大值代替那個尺寸。這樣可以減少數(shù)據(jù)從而減少運算量。

如下圖所示,輸入數(shù)據(jù)原本是6*6,通過卷積層之后變成4*4,通過池化層之后變成2*2。對于實際的圖片來說,維度可能很高,因此卷積層,池化層可以多次進行。

4.全連層
將最后得到的高層次特征輸入全連接的神經網絡,即全連層。全連層就是一個全連接的神經網絡,它的參數(shù)數(shù)量就是最后的池化層輸出的數(shù)據(jù)數(shù)量。
同樣的,前向傳播后,計算損失函數(shù)后進行后向傳播,得到各參數(shù)的梯度,對各參數(shù)進行更新,直到找到最佳參數(shù)。
因此,在全連接之前的所有層,不管多少層的卷積、池化,都是為了得到更好的特征的同時降低數(shù)據(jù)量。使得模型可以更好地訓練。
以上就是Python人工智能深度學習CNN的詳細內容,更多關于人工智能CNN深度學習的資料請關注腳本之家其它相關文章!
相關文章
Python安裝配置OpenGL環(huán)境的全過程記錄
這篇文章主要給大家介紹了關于Python安裝配置OpenGL環(huán)境的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-03-03
python人工智能tensorflow函數(shù)tf.layers.dense使用方法
這篇文章主要介紹了python人工智能tensorflow函數(shù)tf.layers.dense的使用方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05
Django框架之中間件MiddleWare的實現(xiàn)
這篇文章主要介紹了Django框架之中間件MiddleWare的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-12-12

