【python】CNN算法
?
人工神經網絡
?神經元
? ? 神經網絡由大量的神經元相互連接而成。每個神經元接受線性組合的輸入后,最開始只是簡單的線性加權,后來給每個神經元加上了非線性的激活函數,從而進行非線性變換后輸出。每兩個神經元之間的連接代表加權值,稱之為權重(weight)。不同的權重和激活函數,則會導致神經網絡不同的輸出。
? ? 舉個手寫識別的例子,給定一個未知數字,讓神經網絡識別是什么數字。此時的神經網絡的輸入由一組被輸入圖像的像素所激活的輸入神經元所定義。在通過非線性激活函數進行非線性變換后,神經元被激活然后被傳遞到其他神經元。重復這一過程,直到最后一個輸出神經元被激活。從而識別當前數字是什么字。
? ? 神經網絡的每個神經元如下
?
? 基本wx + b的形式,其中
- 、表示輸入向量
- 、為權重,幾個輸入則意味著有幾個權重,即每個輸入都被賦予一個權重
- b為偏置bias
- g(z) 為激活函數
- a 為輸出
?卷積神經網絡之層級結構
?
?上圖中CNN要做的事情是:給定一張圖片,是車還是馬未知,是什么車也未知,現在需要模型判斷這張圖片里具體是一個什么東西,總之輸出一個結果:如果是車 那是什么車
所以
最左邊是數據輸入層,對數據做一些處理,比如去均值(把輸入數據各個維度都中心化為0,避免數據過多偏差,影響訓練效果)、歸一化(把所有的數據都歸一到同樣的范圍)、PCA/白化等等。CNN只對訓練集做“去均值”這一步。
? ? 中間是
- CONV:卷積計算層,線性乘積 求和。
- RELU:激勵層,上文2.2節中有提到:ReLU是激活函數的一種。
- POOL:池化層,簡言之,即取區域平均或最大。
? ? 最右邊是
- FC:全連接層
?
?CNN之卷積計算層
CNN怎么進行識別
? ?簡言之,當我們給定一個"X"的圖案,計算機怎么識別這個圖案就是“X”呢?一個可能的辦法就是計算機存儲一張標準的“X”圖案,然后把需要識別的未知圖案跟標準"X"圖案進行比對,如果二者一致,則判定未知圖案即是一個"X"圖案。
? ?而且即便未知圖案可能有一些平移或稍稍變形,依然能辨別出它是一個X圖案。如此,CNN是把未知圖案和標準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
總結
以上是生活随笔為你收集整理的【python】CNN算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 10年深圳,回去了
- 下一篇: Python给自己写一款不一样的吃鸡“外