前言:
{
之前从工作中了解到了脉冲神经网络(Spiking Neural Network,SNN)。SNN在1952年被首次提出,被誉为第三代神经网络[1]。不过这次不打算再读论文了,我想直接找段代码[2]读读看。
此篇记录中的代码和图全都来自[2]。
}
正文:
{
代码比较少,一共不到700行,只分成了两个.py文件:FinalProject.py和FinalProjectNeuron.py。FinalProject.py应该是人口文件。
GenreClassifier是分类器的类。根据代码1,此分类器的网络结构很简单,有1个输入层,3个隐含层和1个输出层,具体是138-10-20-10-1。可以看到输出层的权值被单独地初始化了。
#代码1
def __init__(self):
self.timeStep = 2
self.learningRate = 0.001
self.spikingThreshold = 0.8 #Found through testing my specific neurons
self.inputLayerSize = 138
self.numSeconds = 2005 #Number of input neurons/pixels
self.timeThreshold = 10 #Time to simulate neuron for
self.classifications = 2
self.hiddenLayerNum = 3
self.neuronPerLayer = [10, 20, 10]
self.dataList = []
self.isFirst = 0
self.inputLayer = []
for i in range(self.inputLayerSize):
self.inputLayer.append(Neuron(self.timeThreshold,0))
self.middleLayer = []
currNumInputs = 138
for i in range(self.hiddenLayerNum):
currLayer = []
for j in range(self.neuronPerLayer[i]):
currLayer.append(Neuron(sel