Skip to main content
Latest PyPI version Python versions Test coverage

KerasSpiking

KerasSpiking provides tools for training and running spiking neural networks directly within the Keras framework. The main feature is keras_spiking.SpikingActivation, which can be used to transform any activation function into a spiking equivalent. For example, we can translate a non-spiking model, such as

inp = tf.keras.Input((5,))
dense = tf.keras.layers.Dense(10)(inp)
act = tf.keras.layers.Activation("relu")(dense)
model = tf.keras.Model(inp, act)

into the spiking equivalent:

# add time dimension to inputs
inp = tf.keras.Input((None, 5))
dense = tf.keras.layers.Dense(10)(inp)
# replace Activation with SpikingActivation
act = keras_spiking.SpikingActivation("relu")(dense)
model = tf.keras.Model(inp, act)

Models with SpikingActivation layers can be optimized and evaluated in the same way as any other Keras model. They will automatically take advantage of KerasSpiking’s “spiking aware training”: using the spiking activations on the forward pass and the non-spiking (differentiable) activation function on the backwards pass.

KerasSpiking also includes various tools to assist in the training of spiking models, such as additional regularizers and filtering layers.

If you are interested in building and optimizing spiking neuron models, you may also be interested in NengoDL. See this page for a comparison of the different use cases supported by these two packages.

Documentation

Check out the documentation for

Release history

0.3.0 (November 8, 2021)

Compatible with TensorFlow 2.1.0 - 2.7.0

Added

  • LowpassCell, Lowpass, AlphaCell, and Alpha layers now accept both initial_level_constraint and tau_constraint to customize how their respective parameters are constrained during training. (#21)

Changed

  • The tau time constants for LowpassCell, Lowpass, AlphaCell, and Alpha are now always clipped to be positive in the forward pass rather than constraining the underlying trainable weights in between gradient updates. (#21)

  • Renamed the Lowpass/Alpha tau parameter to tau_initializer, and it now accepts tf.keras.initializers.Initializer objects (in addition to floats, as before). Renamed the tau_var weight attribute to tau. (#21)

Fixed

  • SpikingActivation, Lowpass, and Alpha layers will now correctly use keras_spiking.default.dt. (#20)

0.2.0 (February 18, 2021)

Compatible with TensorFlow 2.1.0 - 2.4.0

Added

  • Added the keras_spiking.Alpha filter, which provides second-order lowpass filtering for better noise removal for spiking layers. (#4)

  • Added keras_spiking.callbacks.DtScheduler, which can be used to update layer dt parameters during training. (#5)

  • Added keras_spiking.default.dt, which can be used to set the default dt for all layers that don’t directly specify dt. (#5)

  • Added keras_spiking.regularizers.RangedRegularizer, which can be used to apply some other regularizer (e.g. tf.keras.regularizers.L2) with respect to some non-zero target point, or a range of acceptable values. This functionality has also been added to keras_spiking.regularizers.L1L2/L1/L2 (so they can now be applied with respect to a single reference point or a range). (#6)

  • Added keras_spiking.regularizers.Percentile which computes a percentile across a number of examples, and regularize that statistic. (#6)

  • Added keras_spiking.ModelEnergy to estimate energy usage for Keras Models. (#7)

Changed

  • keras_spiking.SpikingActivation and keras_spiking.Lowpass now return sequences by default. This means that these layers will now have outputs that have the same number of timesteps as their inputs. This makes it easier to process create multi-layer spiking networks, where time is preserved throughout the network. The spiking fashion-MNIST example has been updated accordingly. (#3)

  • Layers now support multi-dimensional inputs (e.g., output of Conv2D layers). (#5)

Fixed

  • KerasSpiking layers’ reset_state now resets to the value of get_initial_state (as documented in the docstring), rather than all zeros. (#12)

  • Fixed a bug with keras_spiking.Alpha on TensorFlow 2.1, where a symbolic tensor in the initial state shape could not be converted to a Numpy array. (#16)

0.1.0 (August 14, 2020)

Compatible with TensorFlow 2.1.0 - 2.3.0

Initial release

Release files for keras-spiking 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for keras-spiking 0.3.0
File Size Uploaded
keras-spiking-0.3.0.tar.gz 59.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for keras-spiking 0.3.0
File Interpreter ABI Platform
keras_spiking-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 96.8 kB

Release files / keras-spiking-0.3.0.tar.gz

Download URL keras-spiking-0.3.0.tar.gz
Size 59.7 kB
Tags Source
SHA-256 checksum
How to use checksums
7e729ff7102ee4a9fcb3901aa0763164ff8ea780b8482101c01d8cca14f8bde4
BLAKE2b-256 checksum
How to use checksums
51be017f6edf2589e4b9436b321a752ff552ed2f8a65c4b7c3977ec16ce69d61
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.5.0 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.7

Release files / keras_spiking-0.3.0-py3-none-any.whl

Download URL keras_spiking-0.3.0-py3-none-any.whl
Size 37.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4d45667f6d47c6a549181e3e58dc14f1f038753902a12f160eab0810490806e8
BLAKE2b-256 checksum
How to use checksums
5aebde4345b214dd01cc52015eec2d9295becab161ad650285e42c9ec9ff9861
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.5.0 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.7

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page