public class BiasOrigin extends DecodedOrigin
Part of a projection in which each of the Nodes making up an Ensemble is a source of only excitatory or inhibitory connections.
The theory is presented in Parisien, Anderson & Eliasmith (2007).
Such a projection includes a "base" DecodedOrigin and DecodedTermination (a projection between these may have weights of mixed sign). The projection is expanded with a BiasOrigin a pair of BiasTerminations, and a new NEFEnsemble of interneurons. The make weight signs uniform, a projection is established between the BiasOrigin and BiasTermination, in parallel with the original projection. The effective synaptic weights that arise from the combination of these two projections are of uniform sign. However, the post-synaptic Ensemble receives extra bias current as a result. This bias current is cancelled by a projection from the BiasOrigin through the interneurons, to a second BiasTermination.
TODO: account for transformations in the Termination, which can change sign and magnitude of weightsConstructor and Description |
---|
BiasOrigin(NEFEnsemble ensemble,
java.lang.String name,
Node[] nodes,
java.lang.String nodeOrigin,
float[][] constantOutputs,
int numInterneurons,
boolean excitatory) |
Modifier and Type | Method and Description |
---|---|
NEFEnsemble |
getInterneurons() |
float[] |
getRange() |
void |
optimizeDecoders(float[][] baseWeights,
float[] biasEncoders,
boolean excitatory)
This method adjusts bias decoders so that the bias function is as flat as possible, without changing the
bias encoders on the post-synaptic ensemble.
|
void |
optimizeInterneuronDomain(DecodedTermination interneuronTermination,
DecodedTermination biasTermination)
This method adjusts the interneuron channel so that the interneurons are tuned to the
range of values that is output by the bias function.
|
clone, clone, getConfiguration, getDecoders, getDimensions, getError, getError, getExpressModel, getFunctions, getMode, getName, getNode, getNodeOrigin, getNoise, getRequiredOnCPU, getSTPDynamics, getSTPDynamics, getSTPHistory, getValues, rebuildDecoder, redefineNodes, rescaleDecoders, reset, run, setDecoders, setExpressModel, setMode, setNoise, setNoises, setRequiredOnCPU, setSTPDynamics, setValues, setValues
public BiasOrigin(NEFEnsemble ensemble, java.lang.String name, Node[] nodes, java.lang.String nodeOrigin, float[][] constantOutputs, int numInterneurons, boolean excitatory) throws StructuralException
ensemble
- Parent ensemblename
- Origin namenodes
- Nodes in ensemble?nodeOrigin
- Name of origin to use for bias originconstantOutputs
- ?numInterneurons
- Number of interneurons to createexcitatory
- Excitatory or inhibitory?StructuralException
- if DecodedOrigin can't be createdpublic void optimizeDecoders(float[][] baseWeights, float[] biasEncoders, boolean excitatory)
baseWeights
- Matrix of synaptic weights in the unbiased projection (ie the weights of mixed sign)biasEncoders
- Encoders of the bias dimension on the post-synaptic ensembleexcitatory
- If true, weights are to be kept positive (otherwise negative)public void optimizeInterneuronDomain(DecodedTermination interneuronTermination, DecodedTermination biasTermination)
interneuronTermination
- The Termination on getInterneurons() that recieves input from this OriginbiasTermination
- The BiasTermination to which the interneurons project (not the one to which this Origin
projects directly)public float[] getRange()
public NEFEnsemble getInterneurons()