SNN学习

因为老师拓展新方向,被分配了学习脉冲神经网络(SNN)的课题,今天才想到把自己所学的东西一点一点分享出来,和大家一起讨论学习

Nest仿真器具有python2.x用户接口:pynest, 支持众多神经元模型、突触模型和复杂网络结构。

    利用nest官网提供的已经装好nest的virtualbox虚拟电脑文件,对于nest仿真器进行熟悉,了解神经元的构建,仿真流程等。

1、仿真环境的建立

SNN学习_第1张图片

SNN学习_第2张图片

SNN学习_第3张图片

1)  启动虚拟电脑(ps:启动不了试着不启用USB控制器,开机密码nest)

2)  打开terminal,键入pyhton, 进入python Shell,然后进行程序编写

SNN学习_第4张图片

这个虚拟电脑已经装好好几个仿真器,Brain,nest,Neuron

SNN学习_第5张图片

2、Nest仿真器的使用

SNN学习_第6张图片

上图是pynest用户接口的工作原理

先以单个神经元的构建为例:

Nest中的神经网络由两个基本元素组成:nodes和connections

Step1: Creating nodes

Nodes: neurons, devices or sub-networks

使用Create,Getstatus,SetStataus命令:

import pylab  //pylab是一个抽取仿真结果数据并绘图分析的库

import nest

neuron = nest.Create(“iaf_psc_alpha”) //创建单个神经元,模型为iaf_psc_alpha

nest.GetStatus(neuron) //获取创建的神经元的所有状态信息

nest.GetStatus(neuron,[“V_reset”,”V_th”])

nest.SetStatus(neuron,{“I_e”:376.0})  //设置神经元neuron参数

multimeter = nest.Create(“multimeter”) //device,创建万用表multimeter,监测neuron膜电位变化

nest.SetStatus(multimeter,{“withtime”:True,”record_from”:[“V_m”]})  //记录膜电压V_m随时间的变化

spikedetector=nest.Create("spike_detector",params={"withgid":True, "withtime": True}) //device,创建脉冲探测器来监测脉冲活动发放

Step2:Connecting nodes

    nest.Connect(multimeter, neuron)

    nest.Connect(neuron, spikedetector)

Step3:executesimulation

     nest.Simulate(1000.0)    //进行仿真,仿真时间设置为1000ms

Step4:extracting andplotting data from devices

 dmm = nest.GetStatus(multimeter)[0]

Vms = dmm["events"]["V_m"]

ts = dmm["events"]["times"]

import pylab

pylab.figure(1)

pylab.plot(ts, Vms) //绘制膜电压随时间变化曲线

dSD =nest.GetStatus(spikedetector,keys="events")[0]

evs = dSD["senders"]

ts = dSD["times"]

pylab.figure(2)

pylab.plot(ts, evs, ".") //绘制脉冲事件发生与时间的关系

pylab.show()  //显示figure1,figure2

以上是对单个神经元输入恒定电流刺激,来仿真神经元脉冲活动

    还熟悉了单个神经元由两个泊松脉冲发生器激励训练,一个兴奋性刺激,一个一致型刺激,并对连接权重进行分配。还有两个神经元的连接,突触前神经元由恒定电流刺激。

    还熟悉了神经元群的建立方法,参数设置方法以及神经元链接方式的设置。

 具体可以参照官网的pynest参考手册

总结:

l 本周主要熟悉了nest仿真器的使用方法,对于如何在仿真器构建神经元有了初步的印象。

l Nest仿真器具有python接口,接下来对于python语言要进行学习

l 对于nest仿真器的使用要非常熟悉其库函数的使用,后面再继续熟悉仿真器的使用

l 对于以后将要用到的常用神经元模型,考虑再nest仿真器中如何构建

l 考虑大规模神经网络结构的构建,并学习如何部署在并行计算设备上

你可能感兴趣的:(SNN)