Brian2學習教程——Intro to Brian part 3: Simulations
阿新 • • 發佈:2018-11-03
英文原文:brian2官方tutorials
中文翻譯:【Brian2學習教程之三】Introduction to Brian part 3: Simulations
本文首先對模擬中涉及到的神經元模型進行介紹,並對最後一個例程的實現機制進行分析。
目錄
積分點火模型(Integrate and Fire, IF)
-
脈衝神經元模型
Hodgkin-Huxley模型
積分點火模型(Integrate and Fire, IF)
總結: HH是基於電導的模型,對神經元的脈衝發放過程模擬細膩,但是過多的引數導致其在學習過程中計算複雜,模型效率低。
IF模型屬於閾值點火模型,是最早的脈衝神經元模型,相比電導模型簡化了很多,被廣泛地應用在工程領域。
還有一種經典的脈衝神經元模型——脈衝響應模型(Spike Response Model),是IF模型的推廣。
更詳細的介紹可參考文獻:脈衝神經網路:模型、學習演算法與應用-程龍
脈衝神經網路學習演算法的研究及其應用-胡志根
基於脈衝神經網路的影象處理
在教程中的最後一個部分,通過輸入一張顯示字型‘Brian'的影象,經過脈衝神經網路後得到的輸出仍然顯示了字型’Brian'。
from brian2 import * start_scope() from matplotlib.image import imread img = (1-imread('brian.png'))[::-1, :, 0].T # 需要將影象檔案新增在同一個資料夾 num_samples, N = img.shape # 分別儲存影象的寬和高(本地影象大小為407*256) ta = TimedArray(img, dt=1*ms) # 228 A = 1.5 tau = 2*ms eqs = ''' dv/dt = (A*ta(t, i)-v)/tau : 1 # 原始碼中加入了噪聲:0.8*xi*tau**-0.5 ''' G = NeuronGroup(N, eqs, threshold='v>1', reset='v=0', method='euler') # 神經網路包含256個神經元 M = SpikeMonitor(G) run(num_samples*ms) # 執行407次,每個時刻使得對應位置的神經元點火,最後組成一幅影象。 plot(M.t/ms, M.i, '.k', ms=3) xlim(0, num_samples) ylim(0, N) xlabel('Time (ms)') ylabel('Neuron index');
影象檔案是從原文中截圖儲存下來的,並去掉了內部電壓附加的噪聲,原圖如圖1。
(407x256)
神經網路輸出效果如圖2。
將執行時間縮減一半:run(int(num_samples/2)*ms),會得到半幅影象,如圖3。