def run_classify(context, labels_test, sample_duration_test): # Uses outputs as inputs for the matrix! This is because the weights are symmetrized and written in the output. os.system('rm -rf outputs/{directory}/test'.format(**context)) os.system('mkdir -p outputs/{directory}/test/'.format(**context)) ret = os.system('mpirun -n {ncores} ./exp_rbp_flash \ --learn false \ --eta 0.\ --simtime {simtime_test} \ --record_full false \ --record_rasters false \ --record_rates true \ --dir outputs/{directory}/test/ \ --fvh inputs/{directory}/train/{fvh} \ --fho inputs/{directory}/train/{fho} \ --fhh inputs/{directory}/train/{fhh} \ --foe inputs/{directory}/train/{foe} \ --feo inputs/{directory}/train/{feo} \ --fve inputs/{directory}/train/{fve} \ --feh inputs/{directory}/train/{feh} \ --ip_v inputs/{directory}/test/{ip_v}\ --prob_syn 1.\ --nvis {nv} \ --nhid {nh} \ --nout {nc} \ --sigma {sigma}\ '.format(**context)) if ret == 0: print('ran') plotter.plot_ras_spikes('outputs/{}/test/coba.*.{}.ras'.format(context['directory'], '{}'), start=0, end=15, layers=['out'], res=32 * 32, number_of_classes=context['nc'], save=True) # first 5 labels: 7,2,1,0,4 return elib.process_test_classification(context, sample_duration_test, labels_test)
def run_classify(context, labels_test, sample_duration_test): # Uses outputs as inputs for the matrix! This is because the weights are symmetrized and written in the output. os.system('rm -rf outputs/{directory}/test'.format(**context)) os.system('mkdir -p outputs/{directory}/test/'.format(**context)) ret = os.system('mpirun -n {ncores} ./exp_rbp_flash \ --learn false \ --eta 0.\ --simtime {simtime_test} \ --record_full false \ --record_rasters false \ --record_rates true \ --dir outputs/{directory}/test/ \ --fvh inputs/{directory}/train/{fvh} \ --fho inputs/{directory}/train/{fho} \ --fhh inputs/{directory}/train/{fhh} \ --foe inputs/{directory}/train/{foe} \ --feo inputs/{directory}/train/{feo} \ --fve inputs/{directory}/train/{fve} \ --feh inputs/{directory}/train/{feh} \ --ip_v inputs/{directory}/test/{ip_v}\ --prob_syn {prob_syn}\ --nvis {nv} \ --nhid {nh} \ --nout {nc} \ --sigma {sigma}\ '.format(**context)) if ret == 0: print('ran') plotter.plot_ras_spikes('outputs/{}/test/coba.*.{}.ras'.format( context['directory'], '{}'), start=0, end=15, layers=['out'], res=context['nv'] - context['nc'], number_of_classes=context['nc'], save=True) # first 5 labels: 7,2,1,0,4 rate_class, first_class, rate_confusion_data_frame, first_confusion_data_frame, ouput_spikes_per_label, ouput_spikes_per_label_norm = elib.process_test_classification( context, sample_duration_test, labels_test) plotter.plot_output_spike_count(ouput_spikes_per_label, 'Output spike count per label', save=True, image_title='out_spk') plotter.plot_output_spike_count(ouput_spikes_per_label_norm, 'Normalized ouput spike count per label', save=True, image_title='out_spk_norm') plotter.plot_confusion_matrix(rate_confusion_data_frame, save=True) #plotter.plot_confusion_matrix(first_confusion_data_frame, save=True) return rate_class, first_class