如何利用Bindsnet-Python模拟脉冲神经网络(SNN)?Part II. 添加网络元件(Adding Network Components)

在这里插入图片描述

系列文章目录

Part I. 建立一个网络

BindsNET安装教程



添加网络元件(Adding Network Components)

BindsNET支持三类网络组件:

  1. 神经元层(nodes)
  2. 神经元之间的连接(bindsnet.network.topology)
  3. 用于记录状态变量演变的监视器(bindsnet.network.monitors)。

Note:
在网络中的Components的名称是任意的,并且仅需要是其成分组内唯一的即可(layers,connections和monitors),依据这种唯一性来进行寻址。Bindsnet鼓励用户使用最适合自己的命名方式来开发自己的命名约定。

1. Creating and adding layers

要创建一层或一群节点,以“leaky integrate-and-fire, LIF”神经元为例:

代码示例:

from bindsnet.network.nodes import LIFNodes
# Create a layer of 100 LIF neurons with shape (10, 10).
layer = LIFNodes(n=100, shape=(10, 10))

每个bindsnet.network.nodes对象都有很多关键字参数,但是n(层中的节点数)或者shape(层的形状,可以从中计算出节点数)中的一个是必须存在的。

某些节点对象的其他参数包括:
thresh——给定该层的电压阈值的标量或张量
rest——给定该层的静止电压的标量或张量
traces——是否跟踪该层中每个神经元的“峰值轨迹”
tc_decay——给定该层神经元电压衰减的时间常数标量或张量)

要将层添加到网络,请使用add_layer函数,并为其指定名称(字符串),通过以下方式进行调用:

network.add_layer( layer=layer, name="LIF population")

这样的层保存在dictionary属性中, network.layers,并且可以由用户访问。例如,network.layers[‘LIF population’]

其他层的类型包括:
bindsnet.network.nodes.Input——针对用户指定的输入脉冲 。
bindsnet.network.nodes.McCullochPitts——McCulloch-Pitts神经元模型。
bindsnet.network.nodes.AdaptiveLIFNodes——具有自适应阈值的LIF神经元。
bindsnet.network.nodes.IzhikevichNodes——Izhikevich神经元模型。

可以将任意数量的层添加到网络。

可以通过子类bindsnet.network.nodes.Nodes(具有神经逻辑仿真通用逻辑的抽象类)来实现自定义节点对象。

函数 forward(self, x: torch.Tensor)是计算输入数据对神经元种群的影响,例如,电压变化,脉冲出现等。

函数 reset_state_variables(self)是将神经元状态变量重置为默认值。

函数_compute_decays(self)、forward(self, x: torch.Tensor)、reset_state_variables(self)是必须实现的,因为它们作为抽象函数包含在bindsnet.network.nodes.Nodes内。

2. Creating and adding connections

可以在不同的神经元种群之间添加连接(connections),也可以在一个种群回到自身之间添加一个连接(即循环连接 recurrent connection)。

如果要创建一个全连接 all-to-all:

代码示例:

from bindsnet.network.nodes import Input, LIFNodes
from bindsnet
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值