英文原文: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。