日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

Deep Learning(深度学习)学习笔记整理系列之LeNet-5卷积参数个人理解

發布時間:2025/3/15 pytorch 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Deep Learning(深度学习)学习笔记整理系列之LeNet-5卷积参数个人理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一個典型的例子說明

?????? 一種典型的用來識別數字的卷積網絡是LeNet-5(效果和paper等見這)。當年美國大多數銀行就是用它來識別支票上面的手寫數字的。能夠達到這種商用的地步,它的準確性可想而知。畢竟目前學術界和工業界的結合是最受爭議的。




? ? ? ? ?LeNet-5共有7層,不包含輸入,每層都包含可訓練參數(連接權重)。輸入圖像為32*32大小。這要比Mnist數據庫(一個公認的手寫數據庫)中最大的字母還大。這樣做的原因是希望潛在的明顯特征如筆畫斷電或角點能夠出現在最高層特征監測子感受野的中心。

??????? 我們先要明確一點:每個層有多個Feature Map,每個Feature Map通過一種卷積濾波器提取輸入的一種特征,然后每個Feature Map有多個神經元。

??????? C1層是一個卷積層(為什么是卷積?卷積運算一個重要的特點就是,通過卷積運算,可以使原信號特征增強,并且降低噪音),由6個特征圖Feature Map構成。特征圖中每個神經元與輸入中5*5的鄰域相連。特征圖的大小為28*28,這樣能防止輸入的連接掉到邊界之外(是為了BP反饋時的計算,不致梯度損失,個人見解)。C1有156個可訓練參數(每個濾波器5*5=25個unit參數和一個bias參數,一共6個濾波器,共(5*5+1)*6=156個參數),共156*(28*28)=122,304個連接。

?????? S2層是一個下采樣層(為什么是下采樣?利用圖像局部相關性的原理,對圖像進行子抽樣,可以減少數據處理量同時保留有用信息),有6個14*14的特征圖。特征圖中的每個單元與C1中相對應特征圖的2*2鄰域相連接。S2層每個單元的4個輸入相加,乘以一個可訓練參數,再加上一個可訓練偏置。結果通過sigmoid函數計算。可訓練系數和偏置控制著sigmoid函數的非線性程度。如果系數比較小,那么運算近似于線性運算,亞采樣相當于模糊圖像。如果系數比較大,根據偏置的大小亞采樣可以被看成是有噪聲的“或”運算或者有噪聲的“與”運算。每個單元的2*2感受野并不重疊,因此S2中每個特征圖的大小是C1中特征圖大小的1/4(行和列各1/2)。S2層有12個可訓練參數和5880個連接。




圖:卷積和子采樣過程:卷積過程包括:用一個可訓練的濾波器fx去卷積一個輸入的圖像(第一階段是輸入的圖像,后面的階段就是卷積特征map了),然后加一個偏置bx,得到卷積層Cx。子采樣過程包括:每鄰域四個像素求和變為一個像素,然后通過標量Wx+1加權,再增加偏置bx+1,然后通過一個sigmoid激活函數,產生一個大概縮小四倍的特征映射圖Sx+1

?????? 所以從一個平面到下一個平面的映射可以看作是作卷積運算,S-層可看作是模糊濾波器,起到二次特征提取的作用。隱層與隱層之間空間分辨率遞減,而每層所含的平面數遞增,這樣可用于檢測更多的特征信息。

?????? C3層也是一個卷積層,它同樣通過5x5的卷積核去卷積層S2,然后得到的特征map就只有10x10個神經元,但是它有16種不同的卷積核,所以就存在16個特征map了。這里需要注意的一點是:C3中的每個特征map是連接到S2中的所有6個或者幾個特征map的,表示本層的特征map是上一層提取到的特征map的不同組合(這個做法也并不是唯一的)。(看到沒有,這里是組合,就像之前聊到的人的視覺系統一樣,底層的結構構成上層更抽象的結構,例如邊緣構成形狀或者目標的部分)。

?????? 剛才說C3中每個特征圖由S2中所有6個或者幾個特征map組合而成。為什么不把S2中的每個特征圖連接到每個C3的特征圖呢?原因有2點。第一,不完全的連接機制將連接的數量保持在合理的范圍內。第二,也是最重要的,其破壞了網絡的對稱性。由于不同的特征圖有不同的輸入,所以迫使他們抽取不同的特征(希望是互補的)。

????? 例如,存在的一個方式是:C3的前6個特征圖以S2中3個相鄰的特征圖子集為輸入。接下來6個特征圖以S2中4個相鄰特征圖子集為輸入。然后的3個以不相鄰的4個特征圖子集為輸入。最后一個將S2中所有特征圖為輸入。這樣C3層有1516個可訓練參數和151600個連接。

?????? S4層是一個下采樣層,由16個5*5大小的特征圖構成。特征圖中的每個單元與C3中相應特征圖的2*2鄰域相連接,跟C1和S2之間的連接一樣。S4層有32個可訓練參數(每個特征圖1個因子和一個偏置)和2000個連接。

?????? C5層是一個卷積層,有120個特征圖。每個單元與S4層的全部16個單元的5*5鄰域相連。由于S4層特征圖的大小也為5*5(同濾波器一樣),故C5特征圖的大小為1*1:這構成了S4和C5之間的全連接。之所以仍將C5標示為卷積層而非全相聯層,是因為如果LeNet-5的輸入變大,而其他的保持不變,那么此時特征圖的維數就會比1*1大。C5層有48120個可訓練連接。

??????? F6層有84個單元(之所以選這個數字的原因來自于輸出層的設計),與C5層全相連。有10164個可訓練參數。如同經典神經網絡,F6層計算輸入向量和權重向量之間的點積,再加上一個偏置。然后將其傳遞給sigmoid函數產生單元i的一個狀態。

????? 最后,輸出層由歐式徑向基函數(Euclidean Radial Basis Function)單元組成,每類一個單元,每個有84個輸入。換句話說,每個輸出RBF單元計算輸入向量和參數向量之間的歐式距離。輸入離參數向量越遠,RBF輸出的越大。一個RBF輸出可以被理解為衡量輸入模式和與RBF相關聯類的一個模型的匹配程度的懲罰項。用概率術語來說,RBF輸出可以被理解為F6層配置空間的高斯分布的負log-likelihood。給定一個輸入模式,損失函數應能使得F6的配置與RBF參數向量(即模式的期望分類)足夠接近。這些單元的參數是人工選取并保持固定的(至少初始時候如此)。這些參數向量的成分被設為-1或1。雖然這些參數可以以-1和1等概率的方式任選,或者構成一個糾錯碼,但是被設計成一個相應字符類的7*12大小(即84)的格式化圖片。這種表示對識別單獨的數字不是很有用,但是對識別可打印ASCII集中的字符串很有用。

????? 使用這種分布編碼而非更常用的“1 of N”編碼用于產生輸出的另一個原因是,當類別比較大的時候,非分布編碼的效果比較差。原因是大多數時間非分布編碼的輸出必須為0。這使得用sigmoid單元很難實現。另一個原因是分類器不僅用于識別字母,也用于拒絕非字母。使用分布編碼的RBF更適合該目標。因為與sigmoid不同,他們在輸入空間的較好限制的區域內興奮,而非典型模式更容易落到外邊。

??????? RBF參數向量起著F6層目標向量的角色。需要指出這些向量的成分是+1或-1,這正好在F6 sigmoid的范圍內,因此可以防止sigmoid函數飽和。實際上,+1和-1是sigmoid函數的最大彎曲的點處。這使得F6單元運行在最大非線性范圍內。必須避免sigmoid函數的飽和,因為這將會導致損失函數較慢的收斂和病態問題。

5)訓練過程

??????? 神經網絡用于模式識別的主流是有指導學習網絡,無指導學習網絡更多的是用于聚類分析。對于有指導的模式識別,由于任一樣本的類別是已知的,樣本在空間的分布不再是依據其自然分布傾向來劃分,而是要根據同類樣本在空間的分布及不同類樣本之間的分離程度找一種適當的空間劃分方法,或者找到一個分類邊界,使得不同類樣本分別位于不同的區域內。這就需要一個長時間且復雜的學習過程,不斷調整用以劃分樣本空間的分類邊界的位置,使盡可能少的樣本被劃分到非同類區域中。

?????? 卷積網絡在本質上是一種輸入到輸出的映射,它能夠學習大量的輸入與輸出之間的映射關系,而不需要任何輸入和輸出之間的精確的數學表達式,只要用已知的模式對卷積網絡加以訓練,網絡就具有輸入輸出對之間的映射能力。卷積網絡執行的是有導師訓練,所以其樣本集是由形如:(輸入向量,理想輸出向量)的向量對構成的。所有這些向量對,都應該是來源于網絡即將模擬的系統的實際“運行”結果。它們可以是從實際運行系統中采集來的。在開始訓練前,所有的權都應該用一些不同的小隨機數進行初始化。“小隨機數”用來保證網絡不會因權值過大而進入飽和狀態,從而導致訓練失敗;“不同”用來保證網絡可以正常地學習。實際上,如果用相同的數去初始化權矩陣,則網絡無能力學習。

?????? 訓練算法與傳統的BP算法差不多。主要包括4步,這4步被分為兩個階段:

第一階段,向前傳播階段:

a)從樣本集中取一個樣本(X,Yp),將X輸入網絡;

b)計算相應的實際輸出Op

????? 在此階段,信息從輸入層經過逐級的變換,傳送到輸出層。這個過程也是網絡在完成訓練后正常運行時執行的過程。在此過程中,網絡執行的是計算(實際上就是輸入與每層的權值矩陣相點乘,得到最后的輸出結果):

????????? Op=Fn(…(F2(F1(XpW(1))W(2))…)W(n)

第二階段,向后傳播階段

a)算實際輸出Op與相應的理想輸出Yp的差;

b)按極小化誤差的方法反向傳播調整權矩陣。

6)卷積神經網絡的優點

??????? 卷積神經網絡CNN主要用來識別位移、縮放及其他形式扭曲不變性的二維圖形。由于CNN的特征檢測層通過訓練數據進行學習,所以在使用CNN時,避免了顯式的特征抽取,而隱式地從訓練數據中進行學習;再者由于同一特征映射面上的神經元權值相同,所以網絡可以并行學習,這也是卷積網絡相對于神經元彼此相連網絡的一大優勢。卷積神經網絡以其局部權值共享的特殊結構在語音識別和圖像處理方面有著獨特的優越性,其布局更接近于實際的生物神經網絡,權值共享降低了網絡的復雜性,特別是多維輸入向量的圖像可以直接輸入網絡這一特點避免了特征提取和分類過程中數據重建的復雜度。

??????? 流的分類方式幾乎都是基于統計特征的,這就意味著在進行分辨前必須提取某些特征。然而,顯式的特征提取并不容易,在一些應用問題中也并非總是可靠的。卷積神經網絡,它避免了顯式的特征取樣,隱式地從訓練數據中進行學習。這使得卷積神經網絡明顯有別于其他基于神經網絡的分類器,通過結構重組和減少權值將特征提取功能融合進多層感知器。它可以直接處理灰度圖片,能夠直接用于處理基于圖像的分類。

?????? 卷積網絡較一般神經網絡在圖像處理方面有如下優點: a)輸入圖像和網絡的拓撲結構能很好的吻合;b)特征提取和模式分類同時進行,并同時在訓練中產生;c)權重共享可以減少網絡的訓練參數,使神經網絡結構變得更簡單,適應性更強。

---------------------------------------------------------------------------------------------------->上面都是俺copy來的

作者不屑于講里面參數的計算過程,俺看了好久好久才算出來,下面是我對作者上文中參數計算的理解:

1.C1層是一個卷積層(為什么是卷積?卷積運算一個重要的特點就是,通過卷積運算,可以使原信號特征增強,并且降低噪音),由6個特征圖Feature Map構成。特征圖中每個神經元與輸入中5*5的鄰域相連。特征圖的大小為28*28,這樣能防止輸入的連接掉到邊界之外(是為了BP反饋時的計算,不致梯度損失,個人見解)。C1有156個可訓練參數(每個濾波器5*5=25個unit參數和一個bias參數,一共6個濾波器,共(5*5+1)*6=156個參數),共156*(28*28)=122,304個連接。---->這一段作者說的很清楚,不用多說了

2.S2層是一個下采樣層(為什么是下采樣?利用圖像局部相關性的原理,對圖像進行子抽樣,可以減少數據處理量同時保留有用信息),有6個14*14的特征圖。特征圖中的每個單元與C1中相對應特征圖的2*2鄰域相連接。S2層每個單元的4個輸入相加,乘以一個可訓練參數,再加上一個可訓練偏置。結果通過sigmoid函數計算。可訓練系數和偏置控制著sigmoid函數的非線性程度。如果系數比較小,那么運算近似于線性運算,亞采樣相當于模糊圖像。如果系數比較大,根據偏置的大小亞采樣可以被看成是有噪聲的“或”運算或者有噪聲的“與”運算。每個單元的2*2感受野并不重疊,因此S2中每個特征圖的大小是C1中特征圖大小的1/4(行和列各1/2)。S2層有12個可訓練參數和5880個連接。

---->6個2*2的小方框,每個有一個參數,加上一個偏置,也就是(1+1)*6=12個可訓練參數

---->對于S2層的每一個圖的每一個點,連接數是(2*2+1)=5,總共是14*14*6*(2*2+1)=5880個連接

3.C3層也是一個卷積層,它同樣通過5x5的卷積核去卷積層S2,然后得到的特征map就只有10x10個神經元,但是它有16種不同的卷積核,所以就存在16個特征map了。這里需要注意的一點是:C3中的每個特征map是連接到S2中的所有6個或者幾個特征map的,表示本層的特征map是上一層提取到的特征map的不同組合(這個做法也并不是唯一的)。

例如,存在的一個方式是:C3的前6個特征圖以S2中3個相鄰的特征圖子集為輸入。接下來6個特征圖以S2中4個相鄰特征圖子集為輸入。然后的3個以不相鄰的4個特征圖子集為輸入。最后一個將S2中所有特征圖為輸入。這樣C3層有1516個可訓練參數和151600個連接。

---->這里的參數和連接數最不好理解啦

---->從C3的角度看,它有16個圖.把每個圖對應的參數加起來就行了:

6*(3*25+1) + 6*(4*25+1) + 3*(4*25+1)+ 1*(6*25+1)=1516個可訓練參數

---->上面的1516*10*10=151600個連接


4.S4層是一個下采樣層,由16個5*5大小的特征圖構成。特征圖中的每個單元與C3中相應特征圖的2*2鄰域相連接,跟C1和S2之間的連接一樣。S4層有32個可訓練參數(每個特征圖1個因子和一個偏置)和2000個連接。

---->16個2*2的小方框,每個有一個參數,加上一個偏置,也就是(1+1)*16=32個可訓練參數


---->對于S4層的每一個圖的每一個點,連接數是(2*2+1)=5,總共是5*5*16*(2*2+1)=2000個連接


5.?C5層是一個卷積層,有120個特征圖。每個單元與S4層的全部16個單元的5*5鄰域相連。由于S4層特征圖的大小也為5*5(同濾波器一樣),故C5特征圖的大小為1*1:這構成了S4和C5之間的全連接。之所以仍將C5標示為卷積層而非全相聯層,是因為如果LeNet-5的輸入變大,而其他的保持不變,那么此時特征圖的維數就會比1*1大。C5層有48120個可訓練連接。

---->120*(5*5*16+1)=48120個可訓練連接


6.?F6層有84個單元(之所以選這個數字的原因來自于輸出層的設計),與C5層全相連。有10164個可訓練參數。如同經典神經網絡,F6層計算輸入向量和權重向量之間的點積,再加上一個偏置。然后將其傳遞給sigmoid函數產生單元i的一個狀態。

---->84*(120+1)=10164個可訓練連接



總結

以上是生活随笔為你收集整理的Deep Learning(深度学习)学习笔记整理系列之LeNet-5卷积参数个人理解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。