Операции с массивами данных
Входной массив P, соответствующий TS моментам времени, может быть представлен в виде массива ячеек Pseq, каждая из которых содержит данные для фиксированного момента времени (сечение по времени):
Pseq = { [p1(1), p2(1), …, pQ(1)] [p1(2), p2(2), …, pQ(2)] ……… [p1(TS), p2(TS), …, pQ(TS)] }.
Этот массив имеет TS ячеек, каждая из которых содержит числовой массив размера R´Q.
Такое описание входного массива ячеек соответствует последовательному представлению наблюдаемых данных во времени.
Если сформировать временные последовательности, то входной массив Р можно описать иначе. Тогда можно говорить о том, что на вход сети подается R реализаций из интервала времени [1 TS], которые могут быть описаны следующим числовым массивом Pcon:
Pcon = [ [p1(1), p1(2), …, p1(TS)]; [p2(1), p2(2), …, p2(TS)]; ……. ; [pQ(1), pQ(2), …, pQ(TS)] ].
Представление входов как числового массива реализаций в формате double соответствует групповому представлению данных.
CELL2MAT
| Преобразование массива числовых ячеек в массив double
| Синтаксис:
M = cell2mat(C)
Описание:
Функция M = cell2mat(C) преобразует массив числовых ячеек C = {M11 M12 ... ; M21 M22 ... ; ...} в числовой массив M = [M11 M12 ...; M21 M22 ... ; ...].
Пример:
С = {[1 2] [3]; [4 5; 6 7] [8; 9]};
cellplot(С) % Рис. 11.63
Рис. 11.63
M = cell2mat(С)
M =
1 2 3
4 5 8
6 7 9
Сопутствующие функции: MAT2CELL.
COMBVEC
| Объединение выборок разных размеров
| Синтаксис:
P = combvec(P1, P2, …)
Описание:
Функция P = combvec(P1, P2, …) объединяет выборки разных размеров в единую выборку по следующему правилу. Процедура выполняется рекуррентно так, что на каждом шаге объединяются только 2 выборки. Рассмотрим первый шаг, когда объединяются массивы P1 размера m1´n1 и P2 размера m2´n2. Тогда образуется массив вида
P = .
Этот массив имеет m1+m2 строк и n1´n2 столбцов. На следующем шаге массив Р принимается за Р1, а массив Р3 – за массив Р2 и процедура повторяется.
Пример:
Рассмотрим следующие 2 выборки Р1 и Р2 и рассчитаем объединенную выборку Р:
P1 = [1 2 3;
4 5 6];
P2 = [7 8;
9 10];
P = combvec(P1,P2)
P =
1 2 3 1 2 3
4 5 6 4 5 6
7 7 7 8 8 8
9 9 9 10 10 10
Добавим выборку Р3:
P3 = [4 5 6];
P = combvec(P,P3)
P =
1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3
4 5 6 4 5 6 4 5 6 4 5 6 4 5 6 4 5 6
7 7 7 8 8 8 7 7 7 8 8 8 7 7 7 8 8 8
9 9 9 10 10 10 9 9 9 10 10 10 9 9 9 10 10 10
4 4 4 4 4 4 5 5 5 5 5 5 6 6 6 6 6 6
Тот же самый результат будет получен, если применить оператор P = combvec(P1,P2,P3).
CON2SEQ, SEQ2CON
| Прямое и обратное преобразования группового и последовательного представления данных
| Синтаксис:
S = con2seq(P)
| P = seq2con(S)
| S = con2seq(P, TS)
|
| Описание:
Функция S = con2seq(P) преобразует числовой массив P размера Q´TS, соответствующий групповому представлению данных, в массив ячеек S размера 1´TS, содержащих числовые массивы размера Q´1 и соответствующий последовательному представлению данных.
Функция S = con2seq(P, TS) преобразует массив ячеек P размера Q´m*TS, соответствующий групповому представлению данных, в массив ячеек S размера Q´TS, соответствующий последовательному представлению. При этом каждая ячейка содержит числовой массив размера 1´m.
Функция P = seq2con(S) преобразует массив ячеек S размера Q´TS, содержащих числовые массивы размера R´m, в массив ячеек Р размера Q´1. При этом каждая ячейка содержит числовой массив размера R´m*TS.
Пример:
Преобразуем числовой массив P размера 2´3, соответствующий групповому представлению данных, в массив ячеек S размера 1´3, содержащих числовые массивы размера 2´1, соответствующий последовательному представлению данных:
P = [1 4 2;
2 5 3]
S = con2seq(P)
p2 = [2´1 double] [2´1 double] [2´1 double]
Преобразуем массив ячеек P размера Q´1, содержащих массивы размера R´m*TS, который соответствует структуре группового представления, в массив ячеек S размера Q´TS, содержащих массивы размера R´m, который соответствует структуре последовательного представления данных:
P = { [1 2; 1 2];
[3 4; 3 4];
[5 6; 5 6] };
S = con2seq(P,2)
S =
[2´1 double] [2´1 double]
[2´1 double] [2´1 double]
[2´1 double] [2´1 double]
Этому массиву соответствует следующее описание:
cell2mat(S), cellplot(S)
ans =
1 2
1 2
3 4
3 4
5 6
5 6
|
| Преобразуем массив ячеек S размера Q´TS, содержащих числовые массивы размера R´m, в массив ячеек Р размера Q´1. При этом каждая ячейка содержит числовой массив размера R´m*TS:
S = {[1; 1] [5; 4] [1; 2];
[3; 9] [4; 1] [9; 8]}
P = seq2con(S)
S =
[2´1 double] [2´1 double] [2´1 double]
[2´1 double] [2´1 double] [2´1 double]
P =
[2´3 double]
[2´3 double]
Сформируем числовой массив P, соответствующий групповому представлению:
P = cell2mat(P)
P =
1 5 1
1 4 2
3 4 9
9 1 8
Сопутствующие функции: CONCUR.
CONCUR
| Создание группы векторов смещений
| Синтаксис:
B = concur(b, q)
Описание:
Функция B = concur(b, q) преобразует вектор смещения b размера S´1 или массив ячеек размера Nl´1, содержащий векторы смещения для Nl слоев сети, в массив размера S´q или в массив ячеек размера Nl´1, содержащий числовые массивы размера S´q.
Примеры:
Функция concur создает 3 копии вектора смещения для данного слоя нейронной сети:
b = [1; 3; 2; –1];
B = concur(b,3)
ans =
1 1 1
3 3 3
2 2 2
–1 –1 –1
Двухслойная нейронная сеть имеет 2 вектора смещения, которые для применения функции concur необходимо объединить в вектор ячеек:
b1 = [1; 3; 2; –1];
b2 = [3; 2; –1];
b = {b1; b2}
B = concur(b,3)
b =
[4´1 double]
[3´1 double]
B =
[4´3 double]
[3´3 double]
Применение функции:
Следующий оператор вычисляет взвешенный вход для слоя с функцией накопления netsum, двумя векторами весов и одним вектором смещения:
n = netsum(z1, z2, b)
Это соотношение реализуется, если векторы z1, z2 и имеют одинаковые размеры, например S´q. Однако если сеть моделируется с помощью функций sim, adapt или train как отклик на q групп векторов, то массивы z1 и z2 должны иметь размер S´q. Прежде чем объединить вектор смещения b с массивами z1 и z2, следует сделать q его копий:
n = netsum(z1,z2,concur(b,q))
Сопутствующие функции: NETSUM, NETPROD, SIM, SEQ2CON, CON2SEQ.
IND2VEC, VEC2IND
| Прямое и обратное преобразования вектора индексов классов в матрицу связности
| Синтаксис:
vec = ind2vec(ind)
ind = vec2ind(vec)
Описание:
Функция vec = ind2vec(ind) преобразует вектор индексов классов в матрицу связности с единицами в каждом столбце, расположенными в строке, соответствующей значению индекса. Матрица связности определена в классе разреженных матриц.
Функция ind = vec2ind(vec) преобразует матрицу связности в вектор индексов классов так, что индекс класса соответствует номеру строки.
Примеры:
Преобразовать вектор индексов классов в матрицу связности.
ind = [1 3 2 3], vec = ind2vec(ind), vec = full(vec)
ind = 1 3 2 3
vec =
(1,1) 1
(3,2) 1
(2,3) 1
(3,4) 1
| vec =
1 0 0 0
0 0 1 0
0 1 0 1
| Преобразовать матрицу связности в вектор индексов классов.
vec = [1 0 0 0;
0 0 1 0;
0 1 0 1];
ind = vec2ind(vec)
ind = 1 3 2 3
MAT2CELL
| Преобразование числового массива в массив ячеек
| Синтаксис:
C = mat2cell(M, mrow, ncol)
Описание:
Функция C = mat2cell(M, mrow, ncol) преобразует числовой массив M размера row´col в массив ячеек, содержащих блоки, разбиение на которые задается векторами mrow и ncol. При этом должно соблюдаться условие: sum(mrow) = row, sum(ncol) = col.
Пример:
Преобразовать числовой массив М размера 3´4 в массив ячеек с разбиением mrow = [2 1], ncol = [1 2 1].
M = [1 2 3 4; 5 6 7 8; 9 10 11 12];
C = mat2cell(M,[2 1],[1 2 1])
C =
[2´1 double] [2´2 double] [2´1 double]
[ 9] [1´2 double] [ 12]
[C{1,:}; C{2,:}]
ans =
1 2 3 4
5 6 7 8
9 10 11 12
Сопутствующие функции: CELL2MAT.
MINMAX
| Вычисление минимальных и максимальных элементов векторов входа
| Синтаксис:
pr = minmax(P)
Описание:
Функция pr = minmax(P) вычисляет минимальные и максимальные значения элементов массива P векторов входа размера R´Q и возвращает массив pr размера R´2 минимальных и максимальных значений строк массива P.
Примеры:
P = [0 1 2; –1 –2 –0.5];
pr = minmax(P)
pr =
0 2.0000
–2.0000 –0.5000
NORMC, NORMR
| Нормировка матрицы по строкам и столбцам
| Синтаксис:
Mr = normr(M)
Mc = normc(M)
Описание:
Функция Mr = normr(M) нормирует длины строк матрицы M к 1.
Функция Mc = normc(M) нормирует длины столбцов матрицы M к 1.
Примеры:
Нормировать матрицу М по строкам и столбцам.
M = [1 2;
3 4];
normr(M)
ans =
0.4472 0.8944
0.6000 0.8000
normc(M)
ans =
0.3162 0.4472
0.9487 0.8944
Анализируя результаты, нетрудно убедиться, что нормированные первая строка и второй столбец одинаковы, поскольку они коллинеарны.
Сопутствующие функции: PNORMC.
PNORMC
| Псевдонормировка столбцов матрицы
| Синтаксис:
pM = pnormc(M,r)
Описание:
Функция pM = pnormc(M, r) нормирует столбцы до заданной длины r, добавляя дополнительную строку к исходной матрице. Такая операция определена как псевдонормировка матрицы. Необходимо соблюдать условие, чтобы длина столбцов исходной матрицы не превышала r.
При вызове функции с одним входным аргументом в форме pM = pnormc(M) по умолчанию принимается, что r равно 1.
Пример:
M = [0.1 0.6;
0.3 0.1];
pM = pnormc(M)
pM =
0.1000 0.6000
0.3000 0.1000
0.9487 0.7937
Сопутствующие функции: NORMC, NORMR.
QUANT
| Округление элементов массива до ближайшего кратного базису округления
| Синтаксис:
qP = quant(P, q)
Описание:
Функция qP = quant(P, q) округляет элементы массива Р до ближайшего значения, кратного базису округления q.
Пример:
Округлим элементы массива Р с точностью до 0.1:
P = [1.333 4.756 –3.897];
qP = quant(P,0.1)
qP = 1.3000 4.8000 –3.9000
SUMSQR
| Сумма квадратов элементов массива
| Синтаксис:
s = sumsqr(M)
Описание:
Функция s = sumsqr(M) вычисляет сумму квадратов всех элементов массива M.
Пример:
M = [ 1 2 3;
4 5 6];
s = sumsqr(M)
s = 91
Графические утилиты
PLOTV
| Отображение векторов в виде линий
| Синтаксис:
plotv(P, LineStyle)
Описание:
Функция plotv(P, LineStyle) строит векторы столбцов массива входа Р размера R´Q; строковая переменная LineStyle позволяет задать тип линии согласно следующей таблице.
Тип линии
| Значение LineStyle
| Непрерывная
| '–', по умолчанию
| Штриховая
| '– –'
| Двойной пунктир
| ':'
| Штрихпунктирная
| '–.'
|
Число строк R массива Р должно быть не меньше чем 2; при значениях R, больших, чем 2, для построения графика используются только первые 2 строки массива Р.
Пример:
P = [–0.4 0.7 0.2;
–0.5 0.1 0.5];
plotv(P,'–'); % Рис.11.64
Результат построения представлен на рис. 11.64.
Рис. 11.64
Сопутствующие функции: PLOTVEC.
PLOTVEC
| Отображение векторов входа в виде маркеров
| Синтаксис:
plotvec(P,color,Marker)
plotvec(P)
hh = plotvec(...)
Описание:
Функция plotvec(P, color, Marker) отображает векторы столбцов массива входа Р размера R´Q в виде маркеров, цвет каждого из которых задается элементами вектор-строки color; строковая переменная Marker позволяет задать тип маркера согласно следующей таблице.
Тип маркера
| Значение Marker
| Тип маркера
| Значение Marker
| Плюс
| '+', по умолчанию
| Пятигранник
| 'p'
| Точка
| '.'
| Шестигранник
| 'h'
| Звездочка
| '*'
| Стрелка вниз
| 'v'
| Кружок
| 'o'
| Стрелка вверх
| '^'
| Крест
| 'x'
| Стрелка влево
| '<'
| Квадрат
| 's'
| Стрелка вправо
| '>'
| Ромб
| 'd'
|
|
|
Число строк R массива Р должно быть не меньше чем 2; для отображения маркеров используются первые 2 или 3 строки массива Р. Графики строятся либо в двумерном, либо в трехмерном пространстве соответственно.
Функция plotvec(P) использует тип маркера по умолчанию, а элементы вектор-строки color соответствуют номеру столбца массива Р.
Функция hh = plotvec(...) возвращает вектор дескрипторов для всех маркеров.
Пример:
P =[ 0.1000 1.0000 0.5000 0.7000
–1.0000 2.0000 0.5000 0.1000
1.0000 0.1000 0.7000 0.5000];
t = minmax(P)';
axis(t(:)')
c = [1 2 3 4];
plotvec(P,c,’o’) % Рис.11.65
Результат представлен на рис. 11.65.
Рис. 11.65
Сопутствующие функции: PLOTV.
PLOTPV
| Отображение векторов входов и целей в виде маркеров
| Синтаксис:
plotpv(P,T)
plotpv(P,T,v)
Описание:
Функция plotpv(P, T) отображает векторы столбцов массива входа Р размера R´Q и массива целей размера S´Q в виде маркеров различного типа. Число строк этих массивов R и S должно быть не более трех.
Функция plotpv(P, T, v) позволяет задать пределы построения графика:
· для двумерных векторов в виде вектора [x_min x_max y_min y_max];
· для трехмерных векторов в виде вектора [x_min x_max y_min y_max z_min z_max].
Пример:
Определим выходы и цели персептрона:
P = [0 0 1 1;
0 1 0 1;
1 0 0 1];
T = [0 0 0 1];
plotpv(P,T) % Рис.11.66
Результат представлен на рис. 11.66.
Рис. 11.66
Сопутствующие функции: PLOTPC.
PLOTPC
| Построение разделяющей линии или плоскости в пространстве векторов входа для персептрона
| Синтаксис:
plotpc(W,b)
plotpc(W,b,hh)
h = plotpc(…)
Описание:
Функция plotpc(W, b) строит разделяющую линию или плоскость, если заданы матрица весов W размера S´R и вектор смещений размера S´1, причем значение R должно быть не более трех. Разделяющая линия или плоскость строятся в пространстве векторов входа, координатные оси которого предварительно формируются с помощью функции plotpv.
Функция plotpc(W, b, hh) иcпользует вектор hh дескрипторов графических объектов Line последних построенных линий и удаляет их перед тем, как построить новую разделяющую линию или плоскость.
Функция h = plotpc(...) возвращает вектор дескрипторов вновь созданных графических объектов Line.
Примеры:
Определим векторы входов и целей и отобразим их в двумерном пространстве входов:
P = [0 0 1 1;
0 1 0 1];
T = [0 0 0 1];
plotpv(P,T)
Создадим персептрон со входами P, зададим произвольные значения весам и смещениям и построим разделяющую линию в пространстве входов:
net = newp(minmax(P),1);
net.iw{1,1} = [–1.2 –1];
net.b{1} = 1.3;
plotpc(net.iw{1,1},net.b{1}) % Рис.11.67
На рис. 11.67 построено начальное положение разделяющей линии и требуется выполнить процедуру настройки параметров персептрона, чтобы правильно классифицировать векторы входа.
Рис. 11.67
Перейдем к построению разделяющей плоскости в трехмерном пространстве:
P = [0 0 1 1;
0 1 0 1;
1 0 0 1];
T = [0 0 0 1];
plotpv(P,T)
Следующие функции создают персептрон со входами, соответствующими значениям вектора P, назначают значения его весам и смещениям и строят разделяющую плоскость:
net = newp(minmax(P),1);
net.iw{1,1} = [–1.2 –1 –0.5];
net.b{1} = 1.3;
plotpc(net.iw{1,1},net.b{1}) % Рис.11.68
Результат представлен на рис. 11.68.
Рис. 11.68
Анализ рис. 11.68 позволяет сделать вывод, что векторы входов и цели в начальном состоянии находятся по разные стороны от плоскости.
Сопутствующие функции: PLOTPV.
HINTONW
| Диаграмма Хинтона для весов
| Синтаксис:
hintonw(W,maxw,minw)
hintonw(W)
Описание:
Функция hintonw(W, maxw, minw) отображает значения элементов матрицы весов W размера S´R в виде диаграммы Хинтона; при этом аргумент maxw соответствует максимальному, а minw – минимальному элементу весовой матрицы. Диаграмма Хинтона – это прямоугольная сетка, в узлах которой изображаются квадраты, площадь которых пропорциональна значению соответствующего веса; цвет квадрата соответствует знаку веса: красный (темный) для отрицательных и зеленый (светлый) для положительных весов.
Функция hintonw(W) использует по умолчанию для аргумента maxw значение max(max(abs(W))), а для аргумента minw значение maxw/100.
Пример:
Зададим случайную матрицу весов и построим для нее диаграмму Хинтона (рис. 11.69), используя значения дополнительных аргументов по умолчанию:
W = rands(4,5)
W =
0.9003 0.7826 0.6428 0.8436 0.8709
–0.5377 0.5242 –0.1106 0.4764 0.8338
0.2137 –0.0871 0.2309 –0.6475 –0.1795
–0.0280 –0.9630 0.5839 –0.1886 0.7873
hintonw(W) % Рис.11.69
Рис. 11.69
Сопутствующие функции: HINTONWB.
HINTONWB
| Диаграмма Хинтона для весов и смещений
| Синтаксис:
hintonwb(W,b,maxw,minw)
hintonwb(W,b)
Описание:
Функция hintonw(W, b, maxw, minw) отображает значения элементов матрицы весов W размера S´R и вектора смещений размера S´1 в виде диаграммы Хинтона; при этом аргумент maxw соответствует максимальному, а minw – минимальному элементу весовой матрицы. Элементы вектора смещений показаны в левой части диаграммы.
Функция hintonw(W, b) использует по умолчанию для аргумента maxw значение max(max(abs(W))), а для аргумента minw значение maxw/100.
Пример:
Зададим случайные матрицу весов и вектор смещений и построим для них диаграмму Хинтона (рис. 11.70), используя значения дополнительных аргументов по умолчанию:
W = rands(4,5);
b = rands(4,1);
hintonwb(W,b) % Рис.11.70
Рис. 11.70
Сопутствующие функции: HINTONW.
PLOTPERF
| График функции качества обучения
| Синтаксис:
plotperf(tr,goal,name,epoch)
plotperf(tr)
Описание:
Функция plotperf(TR, goal, name, epoch) предназначена для построения графиков критерия качества обучения, предельной точности и графиков точности обучения с учетом контрольного и тестового подмножеств. Функция имеет следующие входные аргументы:
TR – массив записей с характеристиками обучения, возвращаемый функцией train;
goal – предельная точность, по умолчанию NaN;
name – имя обучающей функции, по умолчанию ' ';
epoch – число циклов обучения.
Пример:
Зададим 8 значений вектора входа P, соответствующий им вектор целей T, а также контрольное подмножество в виде векторов VV.P и VV.T:
P = 1:8; T = sin(P); VV.P = P; VV.T = T+rand(1,8)*0.1;
Создадим и обучим двухслойную сеть прямой передачи с четырьмя нейронами в первом слое с функцией активации tansig и одним нейроном во втором слое также с функцией активации tansig:
net = newff(minmax(P),[4 1],{'tansig','tansig'});
[net,tr] = train(net,P,T,[],[],VV);
В процессе выполнения процедуры train для построения графика точности обучения также применяется функция plotperf, и во многих случаях этого бывает достаточно для оценки процедуры обучения.
Однако функция plotperf позволяет оформить графики результатов обучения и по завершении этой процедуры, используя дополнительные аргументы.
Например, выполняя обучение с предельной точностью, заданной по умолчанию, на заключительном графике можно указать требуемую точность и оценить длительность обучения (рис. 11.71):
plotperf(tr, 0.005) % Рис.11.71
Рис. 11.71
Для достижения требуемой точности обучения, равной 0.005, требуется не более 10 циклов.
Сопутствующие функции: TRAIN.
ERRSURF, PLOTES
| Вычисление и построение графика поверхности ошибки для нейрона
| Синтаксис:
ES = errsurf(p,t,wv,bv,f)
plotes(wv,bv,ES,v)
Описание:
Функция ES = errsurf(p, t, wv, bv, f) вычисляет массив ES, описывающий поверхность ошибки для нейрона с одним вектором входа p размера 1´Q, одним вектором целей t размера 1´Q; также должны быть заданы векторы весов wv и смещений b и функция активации нейрона f.
Функция plotes(wv, bv, ES, v) строит график поверхности ошибок и линий уровня для нейрона в зависимости от весов wv и смещений b, если задан массив ES, вычисленный с помощью функции errsurf. Для удобства изображения поверхности в трехмерном пространстве можно изменять значение вектора v, который задает направление угла зрения, по умолчанию вектор v равен [–37.5, 30].
Пример:
p = [3 2];
t = [0.4 0.8];
wv = –4:0.4:4; bv = wv;
ES = errsurf(p,t,wv,bv,'logsig');
plotes(wv,bv,es,[60 30]) % Рис.11.72
Результат построения представлен на рис. 11.72.
Рис. 11.72
Сопутствующие функции: PLOTEP.
PLOTEP
| Построение траектории обучения на поверхности ошибки
| Синтаксис:
h = plotep(w,b,e)
h = plotep(w,b,e,h)
Описание:
Функция h = plotep(w, b, e) строит изображающую точку на графиках поверхности ошибок и линий уровня, построенных с помощью функции plotes.
Входные аргументы:
w – текущий вектор весов;
b – текущий вектор смещений;
e – текущая ошибка.
Выходные аргументы:
h – дескриптор, содержащий информацию для построения изображающей точки.
Функция h = plotep(w, b, e, h) – это рекуррентная форма вышеописанной функции, которая позволяет построить траекторию движения изображающей точки.
Применение функции:
Возможность применения функции plotep для построения траектории обучения в пространстве настраиваемых параметров поясняется нижеприведенным script-файлом, который описывает сценарий построения такой траектории. Читатель может реализовать этот сценарий на своем компьютере. Авторы предполагают разместить наиболее интересные примеры расчета нейронных сетей в виде М-файлов на сайте www.mathworks.ru. Данный сценарий обязательно будет включен в число этих М-файлов.
Script
% Задание обучающей последовательности
P = 1:8; T = sin(P);
% Построение поверхности ошибок
w_range = –1:0.2:1; b_range = –1:0.2:1;
ES = errsurf(P, T, w_range, b_range, 'purelin');
plotes(w_range, b_range,ES);
% Формирование нейронной сети
maxlr = 0.40*maxlinlr(P, 'bias');
net = newlin([–2 2], 1, [0], maxlr);
% Задание начальной точки
subplot(1, 2, 2);
h = text(sum(get(gca, 'xlim'))*0.5
sum(get(gca, 'ylim'))*0.5, '*Укажите точку*');
set(h,'horizontal', 'center', 'fontweight', 'bold');
[net.IW{1,1} net.b{1}] = ginput(1);
delete(h);
| % Построение траектории обучения
limiting = net.trainParam.epochs;
limloop = limiting+1;
net.trainParam.epochs = 1;
net.trainParam.goal = .001;
net.trainParam.show = Inf;
h = plotep(net.IW{1}, net.b{1}, mse(T–sim(net, P)));
[net, tr] = train(net, P, T);
r = tr;
epoch = 1; cont = 1;
while (length(r.epoch)<limloop & cont)
epoch = epoch+1;
[net, tr]=train(net, P, T);
if length(tr.epoch)>1
h = plotep(net.IW{1,1}, net.b{1}, tr.perf(2), h);
r.epoch = [r.epoch epoch];
r.perf = [r.perf tr.perf(2)];
r.vperf = [r.vperf NaN];
r.tperf = [r.tperf NaN];
else
cont = 0;
end;
end;
| Рис. 11.73
На рис. 11.73 показан результат выполнения сценария для построения траектории обучения в пространстве настраиваемых параметров. Траектории обучения наглядно видны на графиках линий уровня.
Сопутствующие функции: ERRSURF, PLOTES.
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|