1. 程式人生 > >Brian2學習教程——Intro to Brian part 3: Simulations

Brian2學習教程——Intro to Brian part 3: Simulations

英文原文:brian2官方tutorials

中文翻譯:【Brian2學習教程之三】Introduction to Brian part 3: Simulations

本文首先對模擬中涉及到的神經元模型進行介紹,並對最後一個例程的實現機制進行分析。

目錄

脈衝神經元模型

Hodgkin-Huxley模型

積分點火模型(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。