NAME
rbf_layer -- create layer of RBF-units.
PROTOTYPE
unitptr rbf_layer( int din, int nodes, float (*f)(float), int mode, unitptr dest)
ARGUMENTS
- int din
- dimensionality of input vector
- int nodes
- number of nodes of layer created.
- float (*f)(float)
- activation function common to all nodes
- int mode
- mode parameter (see below)
- unitptr dest
- host unit for newly created instance
RETURN VALUE:
- unitptr u:
- pointer to newly created unit
INTERFACE OF CREATED UNIT:
For mode=0 or 1
- X_in[din]:
- (input field 0) input vector
- Y_in[din]:
- (input field 1) mask for input vector.
- Eps_in[2]:
- (input field 2) adaptation gains eps1
and eps2
- Ctl_in[2]:
- (input field 3) control inputs c,beta
- X_out[n]:
- (output field 0) output vector y,
holding node activities
- Y_out[1]:
- (output field 1) index of winner node
- Z_out[n*(din+1)]:
- (packed output field 2) weights and
radii.
For mode=2 or 3
- in_0[din]:
- (input field 0) input vector x_0 for
node 0
- in_1[din]:
- (input field 1) input vector x_1 for
node 1
DESCRIPTION:
Creates a layer of n RBF-units. Upon each call of exec_unit
this layer maps a din -dimensional input vector into a
n -dimensional activity pattern. An optional multiplicative
mask g[.] (default values g[i]=1, i=0..din-1) may be
specified (only one mask g[] that is common to all nodes can be
specified). For each node, the actual input "seen" is the
original input vector for that node, but componentwise
multiplied with the corresponding components of the vector g[]
(see the formulae given in Sec. EXECUTION).
The node activities f_i become a linear (precisely: a convex)
combination of the old and of the newly computed
activities. The decay of the old activities is determined by
a decay factor (1-c), where c is the value at the control
pin CTL_in[0] (default is c=1). The newly computed activities
are multiplicatively scaled by the factor c and superimposed
over the decayed old activities. This has the
effect, that the nodes behave like leaky integrators with a
time constant of 1/c iteration steps. Special cases result
for c=1 and c=0. In the former case, the new activities com-
pletely replace the old activities. This is the default
setting after creation of the unit. In the latter case, the
node activities retain their old values and the output does
not change (in fact, in this case, the internal computation
is suppressed; therefore, c=0 can be used to "switch the
unit off").
If mode=0 or 2, the node activities f_i specify the output
X_out directly. If mode=1 or 3, an additional multiplicative
normalization is performed, which normalizes the sum of
all outputs to unity.
If eps1 and eps2 are not both zero, each adapt-call will
perform a refinement step for the centers w[i] and for the
radii sig[i] as given by the formula in Section ADAPTATION.
The "regularization" parameter beta can be used to control
the degree of overlap between the individual node responses.
Small values of beta result in large overlap, however, the
value beta=0 is special: for beta=0, the network operates in
"winner-take-all"-mode. In this mode, X_out[i]=0, except
for the node i=k, where X_out[k]=1 and k denotes the index of
the unit with minimal distance d[k] ("maximal response").
FILE
/local/homes/rhaschke/nst7/man/../o.linx86//../foldersrc/nst_adaptive.c