Функция изучения веса LVQ1
[dW,LS] = learnlv1(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)
info = learnlv1('code')
learnlv1 является функцией изучения веса LVQ1.
[dW,LS] = learnlv1(W,P,Z,N,A,T,E,gW,gA,D,LP,LS) берет несколько входных параметров,
W |
|
P |
|
Z |
|
N |
|
A |
|
T |
|
E |
|
gW |
|
gA |
|
D |
|
LP | Изучая параметры, ни один, |
LS | При изучении состояния, первоначально должен быть = |
и возвращается
dW |
|
LS | Новое состояние изучения |
Изучение происходит согласно изучению learnlv1 параметра, показанного здесь с его значением по умолчанию.
LP.lr - 0.01 | Темп обучения |
info = learnlv1(' возвращает полезную информацию для каждого вектора символов code')code:
'pnames' | Имена изучения параметров |
'pdefaults' | Параметры изучения значения по умолчанию |
'needg' | Возвращается 1, если эта функция использует |
Здесь вы задаете случайный вход P, вывод A, матрица веса W, и выводите градиент gA для слоя с двухэлементным входом и тремя нейронами. Также задайте темп обучения LR.
p = rand(2,1); w = rand(3,2); a = compet(negdist(w,p)); gA = [-1;1; 1]; lp.lr = 0.5;
Поскольку learnlv1 только нужны эти значения, чтобы вычислить изменение веса (см. “Алгоритм” ниже), используйте их, чтобы сделать так.
dW = learnlv1(w,p,[],[],a,[],[],[],gA,[],lp,[])
Можно создать стандартную сеть, которая использует learnlv1 с lvqnet. Подготовить веса слоя i пользовательской сети, чтобы учиться с learnlv1,
Установите net.trainFcn на 'trainr'. (net.trainParam автоматически становится параметрами trainr по умолчанию.)
Установите net.adaptFcn на 'trains'. (net.adaptParam автоматически становится параметрами trains по умолчанию.)
Установите каждый net.inputWeights{i,j}.learnFcn на 'learnlv1'.
Установите каждый net.layerWeights{i,j}.learnFcn на 'learnlv1'. (Каждый вес, изучающий свойство параметра, автоматически установлен в параметры learnlv1 по умолчанию.)
Обучать сеть (или позволять ему адаптироваться),
Установите net.trainParam (или net.adaptParam) свойства, как желаемый.
Вызовите train (или adapt).
learnlv1 вычисляет изменение веса dW для данного нейрона от входа P нейрона, вывода A, выходной градиент gA и темп обучения LR, согласно правилу LVQ1, учитывая i, индекс нейрона, вывод a(i) которого равняется 1:
dw(i,:) = +lr*(p-w(i,:)), если gA(i) = 0; = -lr*(p-w(i,:)), если gA(i) = -1