exponenta event banner

приспособиться

Адаптировать нейронную сеть к данным по мере ее моделирования

Синтаксис

[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

Обновленная сеть

Y

Сетевые выходы

E

Сетевые ошибки

Pf

Окончательные условия задержки на входе

Af

Условия конечной задержки на уровне

tr

Запись об обучении (epoch и perf)

Обратите внимание, что T является необязательным и требуется только для сетей, для которых требуются целевые объекты. Pi и Pf также являются необязательными и должны использоваться только для сетей с задержками на входе или уровне.

adaptАргументы сигнала s могут иметь два формата: массив ячеек или матрица.

Формат массива ячеек проще всего описать. Это наиболее удобно для сетей с несколькими входами и выходами и позволяет представлять последовательности входов,

P

Niоколо-TS массив ячеек

Каждый элемент P{i,ts} является Riоколо-Q матрица.

T

Ntоколо-TS массив ячеек

Каждый элемент T{i,ts} является Viоколо-Q матрица.

Pi

Niоколо-ID массив ячеек

Каждый элемент Pi{i,k} является Riоколо-Q матрица.

Ai

Nlоколо-LD массив ячеек

Каждый элемент Ai{i,k} является Siоколо-Q матрица.

Y

Noоколо-TS массив ячеек

Каждый элемент Y{i,ts} является Uiоколо-Q матрица.

E

Noоколо-TS массив ячеек

Каждый элемент E{i,ts} является Uiоколо-Q матрица.

Pf

Niоколо-ID массив ячеек

Каждый элемент Pf{i,k} является Riоколо-Q матрица.

Af

Nlоколо-LD массив ячеек

Каждый элемент Af{i,k} является Siоколо-Q матрица.

где

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} =

Вход i в момент времени ts = k - ID

Pf{i,k} =

Вход i в момент времени ts = TS + k - ID

Ai{i,k} =

Выход слоя i в момент времени ts = k - LD

Af{i,k} =

Выход слоя i в момент времени ts = TS + k - LD

Формат матрицы можно использовать, если необходимо смоделировать только один временной шаг (TS = 1). Это удобно для сетей только с одним входом и выходом, но может использоваться с сетями, которые имеют больше.

Каждый аргумент матрицы находится путем сохранения элементов соответствующего аргумента массива ячеек в одной матрице:

P

(sum of Riоколо-Q матрица

T

(sum of Viоколо-Q матрица

Pi

(sum of RiоколоID*Q) матрица

Ai

(sum of SiоколоLD*Q) матрица

Y

(sum of Uiоколо-Q матрица

E

(sum of Uiоколо-Q матрица

Pf

(sum of RiоколоID*Q) матрица

Af

(sum of SiоколоLD*Q) матрица

Примеры

Здесь две последовательности из 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 времена.

См. также

| | |

Представлен до R2006a