Supporting Data and Software for Event-based computation: Unsupervised elementary motion decomposition

Published: 11-03-2019| Version 1 | DOI: 10.17632/wpzxh93vhx.1
Contributors:
Petruț Antoniu Bogdan,
Garibaldi Pineda-Garcia,
Simon Davidson,
Michael Hopkins,
Robert James,
Steve B. Furber

Description

We show that the presented architecture allows for unsupervised learning; that synaptic rewiring enhanced to initialise synapses by drawing from a distribution of delays produces more specialised neurons for the task of motion decomposition; and that a pair of readout neurons is sufficient to correctly classify the input based on the target layer's activity using rank-order encoding, rather than spike-rate encoding. Folder structure: |--- simulation_statistics --> analysis scripts and pre-processed simulation results ---|-- preproc --> pre-processed simulation results |--- synaptogenesis ---|-- moving_bar_simulations --> training and testing results for motion learning phase ---|-- readout_simulations --> training and testing results for readout phase ---|-- spiking_moving_bar_input --> moving bar spiking input used throughout |--- spinnaker_software --> snapshot of SpiNNaker software used to generate the presented results

Files

Steps to reproduce

1.Install SpiNNaker tools from the attached archive or from the GitHub repository(python 2.7) 2.Change all branches to, in this order of priority: `staging_sp_random_delays`, `struct_pl_merger`, `structural_plasticity` (where available) --deprecation iminent due to plannned inclusion in the next software release. 3.For training run (see available parameters by typing `python random_delays_drifting_gratings.py --help`; NOTE 1: In order to run these commands, a SpiNNaker board MUST be available, either on site or remotely. NOTE 2: this simulation takes at least 5 hours (` --no_iterations 19200000` ms)) `python random_delays_drifting_gratings.py -o random_delay_smax_128_gmax_1_192k_sigma_7.5_3_angle_0_90 --s_max 128 --g_max 0.1 --no_iterations 19200000 --sigma_form_ff 7.5 --sigma_form_lat 3 --t_record 200000 --training_angles 0 90` 4.For testing run (*NOTE*: In order to run these commands, a SpiNNaker board MUST be available, either on site or remotely.): `python random_delays_drifting_gratings.py --testing random_delay_smax_128_gmax_1_192k_sigma_7.5_3_angle_0_90 --s_max 128 --g_max 0.1 --no_iterations 19200000 --sigma_form_ff 7.5 --sigma_form_lat 3 --t_record 200000 --training_angles 0 90` 5. For training and testing the readout neurons (NOTE: In order to run these commands, a SpiNNaker board MUST be available, either on site or remotely.): `python readout_topographic_map.py random_delay_smax_128_gmax_1_192k_sigma_7.5_3_angle_0_90 --unsupervised` 6. Moving bar analysis is done by first pre-processing the results of the previous simulations using `moving_bar_statistics.py` followed by `moving_bar_analysis.py` on the resulting file. `python moving_bar_statistics.py synaptogenesis/testing_random_delay_smax_128_gmax_1_192k_sigma_7.5_3_angle_0_90` followed by `python moving_bar_analysis.py ` 7. Readout analysis is done via the `readout_analysis.py` script. Some naming assumptions exist here: the file name that needs to be provided here is the one resulting from training using structural plasticity (here, `random_delay_smax_128_gmax_1_192k_sigma_7.5_3_angle_0_90`) followed by a relevant suffix, if any.