Thank you @kernfel,
I gave 25 circle images for training and 13 images for testing(combined with circle and cross images)
Circle_spike_count = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 8, 8, 11, 15, 18, 21, 21, 21, 24, 24]
len(circle_spike_count) = 38
And this circle_spike_count
was taken via:
circle_spike_count = []
#for i in range(1000):
for train in range(25):
Syn_inp_hid.learning = True
Syn_hid_out.learning = True
izh_output.simulate = True
izh_cross.v = c
digit_ta_input = b2.TimedArray([inp_data.T]*(volt/second), dt = 10*ms)
b2.run(duration)
circle_spike_count.append(spike_mon_out.num_spikes) #ORG
#TESTing the simulation
#for k in range(1000):
for test in range(13):
Syn_inp_hid.learning = True
Syn_hid_out.learning = True
idx = [0,0,1,1,0,1,1,1,1,0,0,1,0] # 46,15%
#idx = [1,1,1,1,1,1,1,0,0,0,0,0,0] # 53.84%
#idx = [0,0,0,0,0,0,1,1,1,1,1,1,1] # 38.46%
#idx = [1,1,1,1,1,1,1,1,1,1,1,1,1] # 0% because network doesn't know what is cross, and we want to test whether it can recognize circle without giving circle
#we are saying like recognize is it circle or not but giving cross
#idx = [0,0,0,0,0,0,0,0,0,0,0,0,0] # 100% because network fed with circle only
#idx = [1,1,1,1,1,1,1,1,1,1,1,1,0] # 15%
#idx = [0,0,0,0,0,0,0,0,0,0,0,0,1] # 84%
#idx = [1,0,0,0,0,0,0,0,0,0,0,0,0]
#idx = random.choice([0,1])
#Circle
if idx == 0:
izh_cross.v = c
izh_circle.v = 0*mV
izh_output.simulate = True
#Cross
elif idx == 1:
izh_cross.v = 0*mV
izh_circle.v = c
izh_output.simulate = False
inp_data = data[idx[test]]
digit_ta_input = b2.TimedArray([inp_data.T]*(volt/second), dt = 10*ms)
b2.run(100*ms)
circle_spike_count.append(spike_mon_out.num_spikes) #ORG
Ref. taken from @touches,
My question is why neuron fires on testing phase differently? In the training phase, they(circle) fired only once, then why when we give external stimulus (testing phase) fires differently?
Thank you