About Inferno¶
Architecture¶
Neural Components¶
Sequence of a forward pass and the data type of the tensors for the inputs and outputs for each neural component. Here, “inj” are optional injected values (which are only supported on some types of synapses) and “mapping” is the internal, trainable mapping for a given connection.
Neurons¶
Neurons are responsible for converting values on the wire into sequences of discrete events, called spikes or action potentials. When a neuron generates an action potential, it is said to have spiked or fired. Each group of neurons is represented by Inferno with the Neuron and InfernoNeuron classes, where the former is the most general interface and the latter includes some implementation to work with provided mixins. Each Neuron implements a common mode of dynamics (the neuron model being simulated) with common hyperparameters. Neurons serve a similar role to the non-linear activation functions of artificial neural networks, but are generally far more complex. They need to maintain an internal state, chiefly in the form of membrane potential or membrane voltage, which is defined as the difference in electric potential between the interior of a neuron and the extracellular medium that surrounds it.
Synapses¶
Synapses are responsible for converting the discrete outputs from neurons into continuous inputs for neurons. Each group of synapses is represented by Inferno with the Synapse and InfernoSynapse classes, where the former is the most general interface and the latter includes some implementation to work with provided mixins. Each Synapse implements a common mode of kinetics (the synapse model being simulated) with common hyperparameters. There is no direct equivalent in artificial neural networks. Inferno also uses Synapse classes as the way of working with trainable, heterogeneous delays by storing the state of multiple previous steps and interpolating between them.
Connections¶
Connections are responsible for taking multiple inputs from one or more groups of neurons and combining them for input to another group of neurons. Each connection is represented by Inferno with the Connection class. The responsibility of a connection can be divided in two. The first is converting from discrete spikes into continuous values, which Inferno does by injecting a Synapse as a dependency into a Connection. The second is applying a trainable mapping of weights (and optionally biases and delays) to the inputs from the composed Synapse. This second responsibility is the same as that of a layer in artificial neural networks.
Modelling Components¶
Inferno’s modelling components do not strictly represent any specific part of the biological neural networks that spiking neural networks seek to model, but instead are used to aid the modelling itself.
Layers¶
Layers manage the wiring between one or more connections that receive input from outside the layer, and one or more groups of neurons that take input from those connections. Each layer is represented by Inferno with the Layer class. Inferno uses these to manage the triggers for monitors (Monitor) that record the state varibles used for training connections.
Cells¶
Cells are a bundling of a connection and a group of neurons which takes its input from the connection output. Each cell is represented by Inferno with the Cell class. Each Cell is tied to the Layer which created it and is used for training connections. Specifically, it is used to register a connection with training methods that presynaptic and postsynaptic spikes as the basis for parameter updates.
Updaters¶
Updaters are used to update the trainable parameters of a component. Each updater is represented by Inferno with the Updater class, and can be used on any subclass of Updatable.
Accumulators¶
Accumulators are used to store and apply the updates for a specific trainable parameter. Each accumulator is represented by Inferno with the Accumulator class. They are created and managed by the Updater for a given object. Each Accumulator can not only apply multiple updates, but it can control how multiple updates are reduced together, and how potentiative and depressive updates are applied to keep the updatable parameter within a desired range.
Component Composition¶
Composition of the different neural and modelling components as defined by the Inferno library.