Адаптируйте нейронную сеть к данным по мере моделирования
[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 | Начальные условия задержки слоя (по умолчанию = нули) |
и возвращает следующее после применения функции adapt net.adaptFcn
с параметрами адаптации net.adaptParam
:
net | Обновленная сеть |
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
времени.