【python】CNN算法
?
人工神經(jīng)網(wǎng)絡(luò)
?神經(jīng)元
? ? 神經(jīng)網(wǎng)絡(luò)由大量的神經(jīng)元相互連接而成。每個神經(jīng)元接受線性組合的輸入后,最開始只是簡單的線性加權(quán),后來給每個神經(jīng)元加上了非線性的激活函數(shù),從而進(jìn)行非線性變換后輸出。每兩個神經(jīng)元之間的連接代表加權(quán)值,稱之為權(quán)重(weight)。不同的權(quán)重和激活函數(shù),則會導(dǎo)致神經(jīng)網(wǎng)絡(luò)不同的輸出。
? ? 舉個手寫識別的例子,給定一個未知數(shù)字,讓神經(jīng)網(wǎng)絡(luò)識別是什么數(shù)字。此時的神經(jīng)網(wǎng)絡(luò)的輸入由一組被輸入圖像的像素所激活的輸入神經(jīng)元所定義。在通過非線性激活函數(shù)進(jìn)行非線性變換后,神經(jīng)元被激活然后被傳遞到其他神經(jīng)元。重復(fù)這一過程,直到最后一個輸出神經(jīng)元被激活。從而識別當(dāng)前數(shù)字是什么字。
? ? 神經(jīng)網(wǎng)絡(luò)的每個神經(jīng)元如下
?
? 基本wx + b的形式,其中
- 、表示輸入向量
- 、為權(quán)重,幾個輸入則意味著有幾個權(quán)重,即每個輸入都被賦予一個權(quán)重
- b為偏置bias
- g(z) 為激活函數(shù)
- a 為輸出
?卷積神經(jīng)網(wǎng)絡(luò)之層級結(jié)構(gòu)
?
?上圖中CNN要做的事情是:給定一張圖片,是車還是馬未知,是什么車也未知,現(xiàn)在需要模型判斷這張圖片里具體是一個什么東西,總之輸出一個結(jié)果:如果是車 那是什么車
所以
最左邊是數(shù)據(jù)輸入層,對數(shù)據(jù)做一些處理,比如去均值(把輸入數(shù)據(jù)各個維度都中心化為0,避免數(shù)據(jù)過多偏差,影響訓(xùn)練效果)、歸一化(把所有的數(shù)據(jù)都?xì)w一到同樣的范圍)、PCA/白化等等。CNN只對訓(xùn)練集做“去均值”這一步。
? ? 中間是
- CONV:卷積計(jì)算層,線性乘積 求和。
- RELU:激勵層,上文2.2節(jié)中有提到:ReLU是激活函數(shù)的一種。
- POOL:池化層,簡言之,即取區(qū)域平均或最大。
? ? 最右邊是
- FC:全連接層
?
?CNN之卷積計(jì)算層
CNN怎么進(jìn)行識別
? ?簡言之,當(dāng)我們給定一個"X"的圖案,計(jì)算機(jī)怎么識別這個圖案就是“X”呢?一個可能的辦法就是計(jì)算機(jī)存儲一張標(biāo)準(zhǔn)的“X”圖案,然后把需要識別的未知圖案跟標(biāo)準(zhǔn)"X"圖案進(jìn)行比對,如果二者一致,則判定未知圖案即是一個"X"圖案。
? ?而且即便未知圖案可能有一些平移或稍稍變形,依然能辨別出它是一個X圖案。如此,CNN是把未知圖案和標(biāo)準(zhǔn)X圖案一個局部一個局部的對比,如下圖所示
?參考文章:https://blog.csdn.net/v_JULY_v/article/details/51812459?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163084129916780366542043%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163084129916780366542043&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-51812459.pc_search_result_hbase_insert&utm_term=cnn&spm=1018.2226.3001.4187
總結(jié)
以上是生活随笔為你收集整理的【python】CNN算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 10年深圳,回去了
- 下一篇: 软考-架构师-第六章-开发方法 第二节