Skip to content

colinator/spikeflow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

spikeflow

Spiking neural networks in tensorflow.

Installation: pip install coming soon. I'll wait until it achieves just a little bit of stability... some feedback'd help here...

Hypothesis: Biological plausibility in neural networks is not an obstacle, but a benefit, for machine learning applications.

Proof: None. Yet.

The purpose of this library is to explore the connection between computational neuroscience and machine learning, and to practice implementing efficient and fast models in tensorflow.

Spikeflow makes it easy to create arbitrarily connected layers of spiking neurons into a tensorflow graph, and then to 'step time'.

Spikeflow will concentrate on facilitating the exploration of spiking neuron models, local-only learning rules, dynamic network construction, the role of inhibition in the control of attractor dynamics, etc.

The library will implement:

  • multiple models of spiking neurons, including
    • Leaky Integrate-and-fire
    • Izhikevich
    • Poisson (can convert things like images to spike trains)
    • Hodgkin-Huxley? Taking requests...
  • arbitrary connections between layers of similar neurons, including
    • feed-foward
    • recurrent
    • inhibitory
    • layer compositing (layers can have sub-layers with a single input and output)
  • multiple models of synapses, including
    • simple weights
    • synapses with decay
    • synapses with failure
    • synapses with post-synaptic reset
    • synapses with delay
  • out-of-graph and in-graph learning rules, including
    • out-of-graph weight modification
    • out-of-graph STDP, compatible with model.step_time's end timestep callback
    • in-graph STDP with weight bounds
    • symmetric STDP
    • three-factor STDP
    • others? taking requests!
  • forms of dynamic neural network construction, including
    • Synaptic pruning and synaptogenesis
    • Neuron pruning and neurogenesis
    • Other structure modification

The basic modeling idea is this:

model = BPNNModel.compiled_model(input_shape,
  [ neuronlayer1, neuronlayer2, ...],
  [ connections1, connections2, ...])

model.run_time(data_generator, end_time_step_callback)

See the examples in the jupyter_examples directory.

Feedback and collaborators welcome!

About

Python library for easy creation and running of spiking neural networks in tensorflow.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published