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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章