cd src
pip install --editable .
This repository contains code for generating random spiking neural networks as reservoirs. These reservoirs are simulated for some time with spiking inputs relative to a datasample in a data set. Then, with a matrix of weights(DPE) which uses the average spiking rate of each neuron as the input, gradient descent is used to train the weights on classificaion and timeseries prediction tasks.
- Training / EO idea
- Generate a random SNN
- for each sample in the dataset
- Final accuracy (trainability of SNN) can be used as the fitness of generated SNN
- number of output neurons required can also be used as the fitness of generated SNN (would require multiple DPEs per SNN to be tested (should be fast))
- Save SNN with fitness
- repeat 'till a collecion (population) of SNNs with fitnesses are obtained and do EO
-
Future Ideas
- Generate multiple SNNs and have one DPE for each of them
- train the DPEs like above, and use the collection of SNNs as a genome for EO
- Use multiple DPE, SNN outputs as lists of guesses like in Thousand Brains
- use single encoder with attributes passed in over time
- investigate unsupervised approach
-
Notes
- In unshuffled datasets, the accuracy is artificially high during training. This is due to the DPE learning weights that can switch between classes after a few datasamples into the new class