資源簡介
脈沖神經網絡的一個訓練方法,基于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
評論
共有 條評論