脈沖神經(jīng)網(wǎng)絡(luò):MATLAB實現(xiàn)脈沖神經(jīng)網(wǎng)絡(luò)(Spiking Neural Network,SNN) 用于圖像分類
一、脈沖神經(jīng)網(wǎng)絡(luò)
脈沖神經(jīng)網(wǎng)絡(luò) (Spiking Neural Network,SNN) ,是第三代神經(jīng)網(wǎng)絡(luò)。其旨在彌合神經(jīng)科學(xué)和機器學(xué)習(xí)之間的差距,使用最擬合生物神經(jīng)元機制的模型來進行計算,更接近生物神經(jīng)元機制。脈沖神經(jīng)網(wǎng)絡(luò)與目前流行的神經(jīng)網(wǎng)絡(luò)和機器學(xué)習(xí)方法有著根本上的不同。SNN 使用脈沖——這是一種發(fā)生在時間點上的離散事件——而非常見的連續(xù)值。每個峰值由代表生物過程的微分方程表示出來,其中最重要的是神經(jīng)元的膜電位。本質(zhì)上,一旦神經(jīng)元達(dá)到了某一電位,脈沖就會出現(xiàn),隨后達(dá)到電位的神經(jīng)元會被重置。對此,最常見的模型是 Leaky Integrate-And-Fire (LIF) 模型。此外,SNN 通常是稀疏連接的,并會利用特殊的網(wǎng)絡(luò)拓?fù)洹?/p>
二、數(shù)據(jù)集簡介
訓(xùn)練集共有十張光學(xué)字符圖片構(gòu)成分別是1,2,3,4,5,6,7,8,9,0。其對應(yīng)類別可表示為:
1: 1 0 0 0 0 0 0 0 0 0
2: 0 1 0 0 0 0 0 0 0 0
3: 0 0 1 0 0 0 0 0 0 0
4: 0 0 0 1 0 0 0 0 0 0
5: 0 0 0 0 1 0 0 0 0 0
6: 0 0 0 0 0 1 0 0 0 0
7: 0 0 0 0 0 0 1 0 0 0
8: 0 0 0 0 0 0 0 1 0 0
9: 0 0 0 0 0 0 0 0 1 0
0: 0 0 0 0 0 0 0 0 0 1
原始圖像(訓(xùn)練集):

將上述10個光學(xué)字符圖像編碼成時間脈沖:

含噪圖像(測試集):

三、MATLAB實現(xiàn)
3.1部分代碼如下:
最大訓(xùn)練次數(shù)為30次,訓(xùn)練集上準(zhǔn)確率隨迭代次數(shù)的變化圖如下:

可以看出SNN在訓(xùn)練集上準(zhǔn)確率達(dá)到90%。
3.2測試集上的預(yù)測效果:
預(yù)測值為:
1: 1 0 0 0 0 0 0 0 0 0 (正確)
2: 0 1 0 0 0 0 1 0 0 0 (錯誤)
3: 0 0 1 0 0 0 0 0 0 0 (正確)
4: 0 0 0 1 0 0 0 0 0 0 (正確)
5: 0 0 0 0 1 0 0 0 0 0 (正確)
6: 0 0 0 0 0 1 0 0 0 0 (正確)
7: 0 0 0 0 0 0 1 0 0 0 (正確)
8: 0 0 0 1 0 0 0 1 0 0 (錯誤)
9: 0 0 0 0 0 0 0 0 1 0 (正確)
0: 0 0 0 0 0 0 0 0 0 1 (正確)
由此可以看出,SNN在測試集上的準(zhǔn)確率為80%。
四、完整MATLAB代碼
完整MATLAB代碼請?zhí)砑觰p主的主頁聯(lián)系方式。?