Адаптируйте нейронную сеть к данным, когда это симулировано
[net,Y,E,Pf,Af,tr] = adapt(net,P,T,Pi,Ai)
Введите help network/adapt
.
Эта функция вычисляет сетевые выходные параметры и ошибки после каждого представления входа.
[net,Y,E,Pf,Af,tr] = adapt(net,P,T,Pi,Ai)
берет
net | Сеть |
P | Сетевые входные параметры |
T | Сетевые цели (значение по умолчанию = нули) |
Pi | Начальный вход задерживает условия (значение по умолчанию = нули) |
Ai | Начальные условия задержки слоя (значение по умолчанию = нули) |
и возвращает следующее после применения адаптировать функционального net.adaptFcn
параметрами адаптации net.adaptParam
:
net | Сеть Updated |
Y | Сетевые выходные параметры |
E | Сетевые ошибки |
Pf | Итоговый вход задерживает условия |
Af | Условия задержки последнего слоя |
tr | Учебная запись ( |
Обратите внимание на то, что T
является дополнительным и является только необходимым для сетей, которые требуют целей. Pi
и Pf
являются также дополнительными и только должен использоваться в сетях, которые ввели или задержки слоя.
adapt
аргументы сигнала могут иметь два формата: массив ячеек или матрица.
Формат массива ячеек является самым легким описать. Это является самым удобным для сетей с несколькими вводами и выводами и позволяет последовательностям входных параметров быть представленными,
P |
| Каждый элемент |
T |
| Каждый элемент |
Pi |
| Каждый элемент |
Ai |
| Каждый элемент |
Y |
| Каждый элемент |
E |
| Каждый элемент |
Pf |
| Каждый элемент |
Af |
| Каждый элемент |
где
Ni | = | net.numInputs |
Nl | = | net.numLayers |
No | = | net.numOutputs |
ID | = | net.numInputDelays |
LD | = | net.numLayerDelays |
TS | = | Количество временных шагов |
Q | = | Пакетный размер |
Ri | = | net.inputs{i}.size |
Si | = | net.layers{i}.size |
Ui | = | net.outputs{i}.size |
Столбцы Pi
, Pf
, Ai
, и Af
упорядочены от самого старого условия задержки до нового:
Pi{i,k} | = | Введите |
Pf{i,k} | = | Введите |
Ai{i,k} | = | Слой выход |
Af{i,k} | = | Слой выход |
Матричный формат может использоваться, если только один временной шаг должен быть симулирован (TS = 1
). Это удобно для сетей только с одним вводом и выводом, но может использоваться с сетями, которые имеют больше.
Каждый матричный аргумент найден путем хранения элементов соответствующего аргумента массива ячеек в одной матрице:
P | ( |
T | ( |
Pi | ( |
Ai | ( |
Y | ( |
E | ( |
Pf | ( |
Af | ( |
Здесь две последовательности 12 шагов (где T1
как известно, зависит от P1
) используются, чтобы задать работу фильтра.
p1 = {-1 0 1 0 1 1 -1 0 -1 1 0 1}; t1 = {-1 -1 1 1 1 2 0 -1 -1 0 1 1};
Здесь linearlayer
используется, чтобы создать слой с входным диапазоном [-1 1]
, один нейрон, входные задержки 0 и 1, и скорость обучения 0,1. Линейный слой затем симулирован.
net = linearlayer
([0 1],0.1);
Здесь сеть адаптируется к одной передаче через последовательность.
Среднеквадратическая ошибка сети отображена. (Поскольку это - первый вызов adapt
, Pi
по умолчанию используется.)
[net,y,e,pf] = adapt(net,p1,t1); mse(e)
Обратите внимание на то, что ошибки являются довольно большими. Здесь сеть адаптируется еще к 12 временным шагам (использующий предыдущий Pf
как новые начальные условия задержки).
p2 = {1 -1 -1 1 1 -1 0 0 0 1 -1 -1}; t2 = {2 0 -2 0 2 0 -1 0 0 1 0 -1}; [net,y,e,pf] = adapt(net,p2,t2,pf); mse(e)
Здесь сеть адаптируется к 100, проходит через целую последовательность.
p3 = [p1 p2]; t3 = [t1 t2]; for i = 1:100 [net,y,e] = adapt(net,p3,t3); end mse(e)
Ошибка после 100 проходит через последовательность, очень мал. Сеть адаптировалась к отношению между входом и целевыми сигналами.
adapt
вызывает функцию, обозначенную net.adaptFcn
, использование значений параметров адаптации обозначается net.adaptParam
.
Учитывая входную последовательность с TS
шаги, сеть обновляется можно следующим образом: Каждый шаг в последовательности входных параметров представлен сети по одному. Вес сети и значения смещения обновляются после каждого шага, прежде чем представлен следующий шаг в последовательности. Таким образом сетью является обновленный TS
\times.