Главная страница
Культура
Искусство
Языки
Языкознание
Вычислительная техника
Информатика
Финансы
Экономика
Биология
Сельское хозяйство
Психология
Ветеринария
Медицина
Юриспруденция
Право
Физика
История
Экология
Промышленность
Энергетика
Этика
Связь
Автоматика
Математика
Электротехника
Философия
Религия
Логика
Химия
Социология
Политология
Геология

Медведев В.С., Потемкин В.Г. Нейронные сети. MATLAB 6. В. Г. Потемкин



Скачать 14.83 Mb.
Название В. Г. Потемкин
Анкор Медведев В.С., Потемкин В.Г. Нейронные сети. MATLAB 6.doc
Дата 26.04.2017
Размер 14.83 Mb.
Формат файла doc
Имя файла Медведев В.С., Потемкин В.Г. Нейронные сети. MATLAB 6.doc
Тип Книга
#3790
страница 47 из 50
1   ...   42   43   44   45   46   47   48   49   50

Операции с массивами данных


Входной массив 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)

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.

Информация о сети и ее топологии





DISP, DISPLAY

Вывод на экран свойств нейронной сети

Синтаксис:

disp(net)

display(net)

Описание:

Команда disp(net) выводит на экран свойства нейронной сети с именем net.

Команда display(net) выводит на экран не только свойства нейронной сети, но и ее имя.

Пример:

Создадим персептрон и выведем на экран его свойства:

net = newp([–1 1; 0 2],3); display(net)

net =

Neural Network object:

architecture:

numInputs: 1

numLayers: 1

biasConnect: [1]

inputConnect: [1]

layerConnect: [0]

outputConnect: [1]

targetConnect: [1]

numOutputs: 1 (read–only)

numTargets: 1 (read–only)

numInputDelays: 0 (read–only)

numLayerDelays: 0 (read–only)

subobject structures:

inputs: {11 cell} of inputs

layers: {11 cell} of layers

outputs: {11 cell} containing 1 output

targets: {11 cell} containing 1 target

biases: {11 cell} containing 1 bias

inputWeights: {11 cell} containing 1 input weight

layerWeights: {11 cell} containing no layer weights

functions:

adaptFcn: ‘adaptwb’

initFcn: ‘initlay’

performFcn: ‘mae’

trainFcn: ‘trainwb’

parameters:

adaptParam: .passes

initParam: (none)

performParam: (none)

trainParam: .epochs, .goal, .max_fail, .show,

.time

weight and bias values:

IW: {11 cell} containing 1 input weight matrix

LW: {11 cell} containing no layer weight matrices

b: {11 cell} containing 1 bias vector

other:

userdata: (user stuff)

Справка:

help network/disp

help network/display

Сопутствующие функции: DISP, SIM, INIT, TRAIN, ADAPT.


PLOTSOM

Отображение топологии карты Кохонена

Синтаксис:

plotsom(pos)

plotsom(W,D,nd)

Описание:

Функция plotsom(pos) отображает топологию карты Кохонена в виде узлов N-мерной сетки, используя массив координат узлов размера NS, помечает узлы красным цветом и соединяет их линиями. Координаты узлов сетки рассчитываются с помощью М-функций gridtop, hextop, randtop. Размерность сетки при использовании функции plotsom не должна превышать значения 3; если размерность сетки больше, то выводятся только 3 координаты.

Функция plotsom(W, D, nd) строит сетку в пространстве весов, задаваемых матрицей W размера SN, если заданы матрица расстояний D размера SS и евклидово расстояние nd между соседними нейронами, по умолчанию равное 1.

Пример:

Рассмотрим способы отображения двумерных и трехмерных карт Кохонена; для этого с помощью М-функции gridtop рассчитаем сетку с прямоугольной топологией:

pos = gridtop(4,3);

plotsom(pos) % Рис.11.74,а

Для отображения двумерной карты Кохонена в пространстве весов зададим случайную матрицу весов W размера 122 и вычислим матрицу расстояний D на выбранной сетке:

W = rand(12,2);

D = dist(pos);

plotsom(W,D) % Рис.11.74,б



а



б

Рис. 11.74

Выполним аналогичные построения для трехмерной карты Кохонена:

pos = gridtop(4,3,3);

plotsom(pos) % Рис.11.75,а

D = dist(pos);

W = rand(36,3);

plotsom(W, D) % Рис.11.75,б



а



б

Рис. 11.75

Сопутствующие функции: NEWSOM, LEARNSOM, INITSOM.


GRIDTOP

Расчет сетки с прямоугольной топологией

Синтаксис:

gridtop(dim1,dim2,...,dimN)

Описание:

Функция pos = gridtop(dim1, dim2, ..., dimN) рассчитывает положения нейронов
на N-мерной сетке с прямоугольной топологией, если задано число нейронов dimI по размерности i, и возвращает массив координат узлов pos размера NS, где S = .

Пример:

Рассчитать положения нейронов на четырехмерной сетке с прямоугольной топологией размера 5432 и выполнить попытку построить график.

pos = gridtop(5,4,3,2);

plotsom(pos) % Рис.11.76

Warning – PLOTSOM only shows first three dimensions.

Предупреждение – PLOTSOM выводит только 3 размерности.

Рис. 11.76

В результате будет построен график только по трем последним размерностям (рис. 11.76).

Сопутствующие функции: HEXTOP, RANDTOP.


HEXTOP

Расчет сетки с гексагональной топологией

Синтаксис:

pos = hextop(dim1,dim2,...,dimN)

Описание:

Функция pos = hextop(dim1, dim2, ..., dimN) рассчитывает положения нейронов
на N-мерной сетке с гексагональной топологией, если задано число нейронов dimI по размерности i, и возвращает массив координат узлов pos размера NS, где S =

Пример:

Рассчитать положения нейронов на трехмерной сетке с гексагональной топологией размера 543 с 60 нейронами и построить график их расположения

pos = hextop(5,4,3); plotsom(pos) % Рис.11.77

Рис. 11.77

Сопутствующие функции: GRIDTOP, RANDTOP.


RANDTOP

Расчет сетки со случайной топологией

Синтаксис:

pos = randtop(dim1,dim2,...,dimN)

Описание:

Функция pos = hextop(dim1, dim2, ..., dimN) рассчитывает положения нейронов
на N-мерной сетке с гексагональной топологией, если задано число нейронов dimI по размерности i, и возвращает массив координат узлов pos размера NS, где S =

Пример:

Рассчитать положения нейронов на трехмерной сетке со случайной топологией
размера 543 с 60 нейронами и построить график их расположения.

pos = randtop(5,4,3); plotsom(pos) % Рис.11.78

Рис. 11.78

Сопутствующие функции: GRIDTOP, HEXTOP.

NNTOOL

Вызов графического интерфейса пользователя

Синтаксис:

nntool

Описание:

Команда nntool открывает окно Network/Data Manager (Управление сетью/данными), которое позволяет управлять вводом и выводом данных, создавать, обучать и моделировать нейронные сети.

Подробно работа с графическим интерфейсом пользователя ППП Neural Network Toolbox описана в разд. 1.2.
1   ...   42   43   44   45   46   47   48   49   50
написать администратору сайта