Neural Network Toolbox | ![]() ![]() |
LVQ2.1 weight learning function
Syntax
[dW,LS] = learnlv2(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)
Description
learnlv2
is the LVQ2
weight learning function.
learnlv2(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)
takes several inputs,
W - S
x R
weight matrix (or S
x 1
bias vector).
P - R
x Q
input vectors (or ones(1,Q)
).
Z - S
x Q
weighted input vectors.
N - S
x Q
net input vectors.
A - S
x Q
output vectors.
T - S
x Q
layer target vectors.
E - S
x Q
layer error vectors.
gW - S
x R
weight gradient with respect to performance.
gA - S
x Q
output gradient with respect to performance.
D - S
x S
neuron distances.
LP -
Learning parameters, none, LP = []
.
LS -
Learning state, initially should be = []
.
Learning occurs according to learnlv1
's learning parameter, shown here with its default value.
learnlv2(code)
returns useful information for each code
string:
pnames
' - Names of learning parameters.
'pdefaults
' - Default learning parameters.
'needg
' - Returns 1 if this function uses gW
or gA
.
Examples
Here we define a sample input P
, output A
, weight matrix W
, and output gradient gA
for a layer with a two-element input and three neurons.
We also define the learning rate LR
.
Since learnlv2 only needs these values to calculate a weight change (see algorithm below), we will use them to do so.
Network Use
You can create a standard network that uses learnlv2
with newlvq
.
To prepare the weights of layer i
of a custom network to learn with learnlv2
:
net.trainFcn
to 'trainr
'. (net.trainParam
will automatically become trainr
's default parameters.)
net.adaptFcn
to 'trains
'. (net.adaptParam
will automatically become trains
's default parameters.)
net.inputWeights{i,j}.learnFcn
to 'learnlv2
'. Set each net.layerWeights{i,j}.learnFcn
to 'learnlv2
'. (Each weight learning parameter property will automatically be set to learnlv2
's default parameters.)
To train the network (or enable it to adapt):
Algorithm
learnlv2
implements Learning Vector Quantization 2.1, which works as follows:
For each presentation, if the winning neuron i
should not have won, and the runner up j
should have, and the distance di
between the winning neuron and the input p
is roughly equal to the distance dj
from the runner up neuron to the input p
according to the given window,
then move the winning neuron i weights away from the input vector, and move the runner up neuron j weights toward the input according to:
See Also
![]() | learnlv1 | learnos | ![]() |