Brian2学习教程——Intro to Brian part 3: Simulations

英文原文:brian2官方tutorials

中文翻译:【Brian2学习教程之三】Introduction to Brian part 3: Simulations

本文首先对仿真中涉及到的神经元模型进行介绍,并对最后一个例程的实现机制进行分析。

目录

脉冲神经元模型

Hodgkin-Huxley模型

积分点火模型(Integrate and Fire, IF)

基于脉冲神经网络的图像处理


  • 脉冲神经元模型

Hodgkin-Huxley模型

Brian2学习教程——Intro to Brian part 3: Simulations_第1张图片

Brian2学习教程——Intro to Brian part 3: Simulations_第2张图片

积分点火模型(Integrate and Fire, IF)

Brian2学习教程——Intro to Brian part 3: Simulations_第3张图片

Brian2学习教程——Intro to Brian part 3: Simulations_第4张图片

总结: 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。

Brian2学习教程——Intro to Brian part 3: Simulations_第5张图片(407x256)

神经网络输出效果如图2。

Brian2学习教程——Intro to Brian part 3: Simulations_第6张图片

将运行时间缩减一半:run(int(num_samples/2)*ms),会得到半幅图像,如图3。

Brian2学习教程——Intro to Brian part 3: Simulations_第7张图片

你可能感兴趣的:(snn,brian2)