Neuromodule:
Filter:
Neuromodule/Classes (extension) | Streams-Patterns-Events

Neuromodule
ExtensionExtension

Dynamic time-discrete neuromodule

Description

Neuromodules are a model for experimenting with the temporal dynamics of time-discrete neural networks, following Frank Pasemann, Complex dynamics and the structure of small neural networks, Network: Comput. Neural Syst. 13, 2002, pp. 195--216.

They implement the map:

In other words,

"The widespread recurrent structures found in biological neural networks imply the possibility of complex neural dynamics and, in fact, oscillatory and chaotic activity has been observed frequently in brains. This suggests that complex dynamics may play an important role for specific functions of the brain. Therefore, these dynamical properties have found increasing attention in recent years; but it still remains an open question to what extent and through which kind of mechanisms oscillatory and chaotic dynamics can contribute to effective signal processing in the brain." (p. 195f.)


This iso-periodic diagram shows the "metric landscape" of a 2-module (numbers denoting the cycle length). The plot is in the (w11,w12)-subspace for fixed parameters w21 = −6, θ1 = −3, θ2 = 4. (image from Pasemann 2002, p. 201).

Class Methods

.new

Return a new instance.

Arguments:

x

Array of initial values for each node. This sets the size of the network.

theta

Bias for each node. This is typically where an external input enters.

weights

Array of arrays of values (postive or negative real numbers), which specify the strength of a connection. See also below: -weights

outs

Array of indices, which nodes are used as output. When none is given, all nodes are output.

Instance Methods

.theta

Set or get the current bias values. This can be a number, or anything that responds to value by retuning thomething that responds to the math operations, e.g. a Stream, andother Neuromodule, or a Function.

Returns:

Array

.numCells

Number of nodes in the network.

Returns:

Integer

.x

Set or get the current node values.

Returns:

Array

.weights

Set or get the current weights. Each weight can be a number, or anything that responds to value by retuning thomething that responds to the math operations, e.g. a Stream, andother Neuromodule, or a Function.

A simple example with size = 2 shows the meaning of the values in the array:

Returns:

Array of Arrays

.outs

Set or get the current outputs, an array of indices. If set to nil, the module returns all node values.

Returns:

Array of Integers

.next

Calculate the next state. A neuromodule is a stream, see: AbstractFunction and Stream.

Arguments:

inval

This argument is passed to theta and weight.

Returns:

Array of values

Combining and modifying modules

.fillMissing

Fill up any missing weights and thetas.

.addAll

Add all nodes (cells) from another neuromodule to this.

Arguments:

neuromodule

Another Neuromodule.

Returns:

this

.merge

Merge this with another neuromodule and create a new one.

Arguments:

neuromodule

Another Neuromodule.

Returns:

A new Neuromodule.

.rewire

Make connections between the existing nodes by changing their respective weights.

Arguments:

triples

An array that specifies [from-node-index, to-node-index, new-weight]

CHECK AGAIN THE ORDER!!

func

If given, it will be called to produce the weight for the node, taking as arguments: old-value, new-value, from-index, to-index.

postWarnings

If set to true, post warnings if inidces don't match weights dimensions.

Visualization

.dotStructure

Returns a string with a dot-language graph (which can then be rendered with graphViz).

Examples