A block in Synapse is an information processing element in a topology. It consists of a forward propagator, a backwards propagator, a forward update rule and a backwards update rule. Blocks can be linked together to form a topology.
Anatomy of a block
The central element in the block is the forward propagator. It is a processing element that maps one or more inputs on to one or more outputs. It is activated in the forward pass of a control system. In the Function layer block for instance the forward propagator takes one input signal, applies a function to it and returns an output signal while a Weight layer block takes an input signal, multiplies it with a weight matrix and outputs the product.
A forward propagator usually has a closely related back propagator. Usually the back propagator mirrors the action of the forward version in order to support systems based on error correction, but can in principle support completely independent operation. A forward propagator can be compatible with multiple back propagators. All forward propagators are compatible with the Blocking propagator that simply stops a signal flow.
Forward propagators are in context often referred to as "components" while back propagators are often called just "propagator".
Main article: Update rule
A block can have two different update rules attached to it. Update rules are adaptation algorithms. The forward update rule must be compatible directly with the forward propagator while the back update rule must be compatible with the back propagator. The two update rules are activated in the forward and back passes of the control system.
The "No update" update rule is compatible with all propagators and does as the name implies nothing. It is used if no other compatible update rule is found.
Signals and ports
The basic object of communication between blocks is the signal object. It is in principle a generic object containing a data package and associated meta-data. The sources and destinations of signals are called ports. A signal travels from one port to another. Most blocks in Synapse are single port blocks, meaning that they have one input and one output port.
There are however also several multi port blocks where the block has several independent input ports. When connecting to or from a multi port block, its GUI will change to allow the user to select from/to which port the link should go. The start and end of the links are color coded to indicate source and destination ports. The block themselves have ports indicated on their GUI: on the left side are color coded input ports while on the right side are the color coded output ports.
When multiple signals are connected to the same port their signals are superimposed (i.e. added).
Base and GUI levels
Blocks as most other Synapse components consist of two separate levels: a base level that performs the actual calculations and a GUI level that shows a presentable interface to the user. This is in order to make deployed systems lean, small, fast and compatible with the .NET compact framework. Typically the block GUI level contains a graphical interface which can basically be anything that Windows Forms support and a setting object displayed in the settings browser. When a block is selected in design mode or training mode the settings that are shown are a merge of general block settings and the specific settings for the forward and back propagators as well as the update rules.
The common block settings are merged with the settings of the propagators and the update rules and can be modified using the settings browser.
- List of Block components - List of all Synapse block components.