赞
踩
因为老师拓展新方向,被分配了学习脉冲神经网络(SNN)的课题,今天才想到把自己所学的东西一点一点分享出来,和大家一起讨论学习
Nest仿真器具有python2.x用户接口:pynest, 支持众多神经元模型、突触模型和复杂网络结构。
利用nest官网提供的已经装好nest的virtualbox虚拟电脑文件,对于nest仿真器进行熟悉,了解神经元的构建,仿真流程等。
1、仿真环境的建立
1) 启动虚拟电脑(ps:启动不了试着不启用USB控制器,开机密码nest)
2) 打开terminal,键入pyhton, 进入python Shell,然后进行程序编写
这个虚拟电脑已经装好好几个仿真器,Brain,nest,Neuron
2、Nest仿真器的使用
上图是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 考虑大规模神经网络结构的构建,并学习如何部署在并行计算设备上
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。