agarwalmanvi / gennzoo

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GeNNZoo: Model Zoo for GeNN

This repository is my project for Google Summer of Code 2020.

Setting up your environment

You can find the environment.yml to recreate my local development environment in conda. Note that you may have to build pygenn from source or from one of the provided wheels, following the instructions here.

Navigating the repository

Below, you can find a description of the different folders and files to help you navigate the code.

  1. The neuron models and weight update models are housed in the models/ directory. It contains all the models you need for running the scripts in this repository.

  2. A good place to start are the two tutorial notebooks: Spike-driven Synaptic Plasticity Tutorial parts I and II. They explain the neuron model and weight update model from the paper: "Learning Real-World Stimuli in a Neural Network with Spike-Driven Synaptic Dynamics" by J. M. Brader, W. Senn and S. Fusi.. They also show how to reproduce some of the simulations described in this paper.

  3. We also include scripts to reproduce simulations from the paper: "SuperSpike: Supervised Learning in Multilayer Spiking Neural Networks" by F. Zenke and S. Ganguli.

    a. timed_spikes_exp1.py corresponds to the simulation from Fig. 2.
    Task description: Teach one output neuron to fire 5 equidistant spikes in a time-window of 500 ms. The output neuron receives input from a population of 100 neurons in the form of a frozen Poisson spike train.

    b. timed_spikes_exp2.py corresponds to the simulation from Fig. 4.
    Task description: This is the same task as in timed_spike_exp1.py but now with the addition of a hidden layer of 4 neurons to the network topology.

    c. xor.py corresponds to the simulation from Fig. 5.
    Task description: Teach a network to solve the XOR task. The input population consists of 100 neurons, divided into three non-overlapping groups: time-reference, input 1, and input 2. The hidden layer consists of 100 neurons. The output layer consists of 2 output neurons, one for each class.

    d. pattern.py corresponds to the simulation from Fig. 6.
    Task description: Teach a network to produce a predefined spike train. The chosen spike train is the pattern given here. The number of input and output neurons can depend on the chosen spike train. The number of hidden neurons can be changed depending on the desired configuration.

For each of these scripts, I have also provided inline comments where necessary to make the code clearer.

Mentors

Dr. Jamie Knight, Prof. Thomas Nowotny

About


Languages

Language:Jupyter Notebook 74.8%Language:Python 25.2%