Git Product home page Git Product logo

spikeflow's Introduction

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!

spikeflow's People

Contributors

colinator avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.