资源简介

脉冲神经网络的一个训练方法,基于PYTHON3写的,可以直接运行,神经元模型采用简化的脉冲响应模型。采用ASA训练算法

资源截图

代码片段和文件信息

import numpy as np
import math

def epsilon(time_delta):
alpha0=5.0  #
alpha1=1.25 #
E=math.exp(-time_delta/alpha0)-math.exp(-time_delta/alpha1)
H=1 if time_delta >= 0.0 else 0
return E*H

def window(time_delta):
alpha=2.0
return math.exp(-time_delta/alpha) if time_delta>=0.0 else 0.0

def training(weights input_spikes output_spikes):
#input_spikes=[abc...]
#output_spikes=[[ab][abc]...]
input_node_num=len(weights[0])
output_node_num=len(weights)

max_epoch=100
fire_voltage=10
min_voltage=0.001
threshold=0.001

#for each output spike node do training
for outnd in range(output_node_num):
outspks=output_spikes[outnd]
wts=weights[outnd]
for epoch in range(max_epoch):
#for each output spike of this output spike node
#training
for outspk in outspks:
# compute voltage
voltage=0.0
for i in range(input_node_num):
voltage+=wts[i]*epsilon(outspk-input_spikes[i])
if abs(voltage-fire_voltage)>threshold:
# filtering
f=[]
for i in range(input_node_num):
if epsilon(outspk-input_spikes[i])>=min_voltage:
f.append(i)
# adjust weight
denom=0.0

评论

共有 条评论