/EvolvingConnectivity

Code for paper Evolving Connectivity for Spiking Neural Networks

Primary LanguagePythonApache License 2.0Apache-2.0

Evolving Connectivity for Recurrent Spiking Neural Networks Repository

This repository contains the implementation of the paper Evolving Connectivity for Recurrent Spiking Neural Networks. It includes the Evolutionary Connectivity (EC) algorithm, Recurrent Spiking Neural Networks (RSNN), and the Evolution Strategies (ES) baseline implemented in JAX.

Getting Started

Prerequisites

  1. Install JAX

  2. Install W&B and log in to your account to view metrics

  3. Install the required dependencies:

pip install -r requirements.txt

Precautions

  • Brax v1 is required (brax<0.9) to reproduce our experiments. Brax v2 has completely rewritten the physics engine and adopted a different reward function.
  • Due to the inherent numerical stochasticity in Brax's physics simulations, variations in results can occur even when using a fixed seed.

Usage

Training EC with RSNN

To set parameters, use the command-line format of OmegaConf. For example:

python ec.py task=humanoid

Running experiment sets

To reproduce the Brax locomotion experiments using EC-RSNN:

python exp_launcher.py include=conf_experiment/ec_brax.yaml

To reproduce the ES experiments:

  • Deep RNN (GRU, LSTM)
python exp_launcher.py include=conf_experiment/rnn_brax.yaml
  • Densely weighted RSNN
python exp_launcher.py include=conf_experiment/dense_snn_brax.yaml

Note: The experiment launcher will automatically allocate all idle GPUs on your machine and run experiments in parallel.

Citation

@inproceedings{wang2023evolving,
    title={Evolving Connectivity for Recurrent Spiking Neural Networks},
    author={Wang, Guan and Sun, Yuhao and Cheng, Sijie and Song, Sen},
    booktitle={Thirty-seventh Conference on Neural Information Processing Systems},
    year={2023},
    url={https://openreview.net/forum?id=30o4ARmfC3}
}

License

This project is licensed under the Apache License 2.0.