Notebook "нейронные сети" Глава 2
Вид материала | Документы |
C334. trainc C337. trainr С344. traingd С346. traingda |
- Программа дисциплины «Теория нечетких множеств и нейронные сети» Для специальности, 567.45kb.
- Самостоятельная работа по прогнозированию экономических процессов на тему: нейронные, 148.65kb.
- Лекция 2 Лекция «Нейронные сети» Начнем с определения: Искусственные нейронные сети, 131.57kb.
- "Нейроновые сети ", 374.46kb.
- Нейронные сети как механизм представления лексико-семантической информации, 376.06kb.
- Программа, 39.37kb.
- Нейронные сети: алгоритм обратного распространения, 336.15kb.
- Предупреждение. Спасение. Помощь, 3059.76kb.
- Нейрокомпьютерная обработка сигналов и изображений, 184.71kb.
- Нейронные сети: основы теории / А. И. Галушкин. М. Горячая линия Телеком, 2010., 585.42kb.
C334. TRAINC
Сформировать нейронную сеть на основе персептрона с одним выходом и вектором входа из двух элементов, принимающих значения в диапазоне [–2 2].
Формирование сети:
net = newp([-2 2; -2 2],1);
Формирование векторов входа и цели:
P = [ 2 1 -2 -1; 2 -2 2 1]; T = [ 0 1 0 1];
Обучение с циклическим представлением входа:
net.trainFcn='trainc';
[net,TR]=train(net,P,T);
TRAINC, Epoch 0/100
TRAINC, Epoch 3/100
TRAINC, Performance goal met.
Выполним моделирование сети при заданном входе:
Y = sim(net, P)
Y =
0 1 0 1
Найдем значения весов и смещения:
net.IW{1,1}, net.b{1}
ans =
-2 -3
ans =
1
C337. TRAINR
Сформировать самоорганизующуюся нейронную сеть для разделения векторов входа на два класса. Векторы входа состоят из двух элементов со значениями из диапазона [0 1]. Сеть имеет два выхода (по числу классов) и обучается с помощью функции trainr.
Формирование сети:
clear, net = newc([0 1; 0 1], 2);
Формирование векторов входа:
P = [.1 .8 .1 .9; .2 .9 .1 .8];
Обучение с циклическим представлением входа:
net.trainFcn ='trainr';
net = train(net,P);
TRAINR, Epoch 0/100
TRAINR, Epoch 25/100
TRAINR, Epoch 50/100
TRAINR, Epoch 75/100
TRAINR, Epoch 100/100
TRAINR, Maximum epoch reached.
Выполним моделирование сети, и значения выхода преобразуем в индексы классов:
Y = sim(net,P); Yc = vec2ind(Y)
Yc =
2 1 2 1
Градиентные алгоритмы обучения
С344. TRAINGD
Заданы следующие обучающие последовательности входов P и целей T:
P = [0 1 2 3 4 5]; T = [0 0 0 1 1 1];
Поскольку соответствие между входом и целью носит явно выраженный нелинейный характер, то будем использовать нейронную сеть с нелинейными сигмоидальными функциями активации. Выберем двухслойную нейронную сеть с прямой передачей сигнала; в первом слое используем 2 нейрона с функцией активации tansig, а во втором - 1 нейрон с функцией активации logsig. Для обучения сети применим функцию traingd.
Формирование сети:
net = newff([0 5],[2 1],{'tansig','logsig'},'traingd');
Обучение сети:
net.trainParam.epochs=1000; net.trainParam.show=50;
net.trainParam.goal = 0.01;
[net,TR] = train(net,P,T);
TRAINGD, Epoch 0/1000, MSE 0.015653/0.01, Gradient 0.0317272/1e-010
TRAINGD, Epoch 50/1000, MSE 0.0151675/0.01, Gradient 0.0305964/1e-010
TRAINGD, Epoch 100/1000, MSE 0.0147153/0.01, Gradient 0.0295528/1e-010
TRAINGD, Epoch 150/1000, MSE 0.0142928/0.01, Gradient 0.0285863/1e-010
TRAINGD, Epoch 200/1000, MSE 0.0138969/0.01, Gradient 0.0276881/1e-010
TRAINGD, Epoch 250/1000, MSE 0.0135251/0.01, Gradient 0.026851/1e-010
TRAINGD, Epoch 300/1000, MSE 0.013175/0.01, Gradient 0.0260685/1e-010
TRAINGD, Epoch 350/1000, MSE 0.0128447/0.01, Gradient 0.0253352/1e-010
TRAINGD, Epoch 400/1000, MSE 0.0125324/0.01, Gradient 0.0246461/1e-010
TRAINGD, Epoch 450/1000, MSE 0.0122366/0.01, Gradient 0.0239972/1e-010
TRAINGD, Epoch 500/1000, MSE 0.011956/0.01, Gradient 0.0233848/1e-010
TRAINGD, Epoch 550/1000, MSE 0.0116892/0.01, Gradient 0.0228057/1e-010
TRAINGD, Epoch 600/1000, MSE 0.0114354/0.01, Gradient 0.022257/1e-010
TRAINGD, Epoch 650/1000, MSE 0.0111935/0.01, Gradient 0.0217363/1e-010
TRAINGD, Epoch 700/1000, MSE 0.0109625/0.01, Gradient 0.0212413/1e-010
TRAINGD, Epoch 750/1000, MSE 0.0107419/0.01, Gradient 0.0207702/1e-010
TRAINGD, Epoch 800/1000, MSE 0.0105308/0.01, Gradient 0.020321/1e-010
TRAINGD, Epoch 850/1000, MSE 0.0103287/0.01, Gradient 0.0198922/1e-010
TRAINGD, Epoch 900/1000, MSE 0.0101349/0.01, Gradient 0.0194824/1e-010
TRAINGD, Epoch 937/1000, MSE 0.0099965/0.01, Gradient 0.0191906/1e-010
TRAINGD, Performance goal met.
Выполним моделирование сети:
Y = sim(net,P)
Y =
Columns 1 through 4
0.1034 0.0460 0.0968 0.8716
Columns 5 through 6
0.8966 0.8968
С346. TRAINGDA
Заданы следующие обучающие последовательности входов P и целей T:
clear, P = [0 1 2 3 4 5]; T = [0 0 0 1 1 1];
Поскольку соответствие между входом и целью носит явно выраженный нелинейный характер, то будем использовать нейронную сеть с нелинейными сигмоидальными функциями активации. Выберем двухслойную нейронную сеть с прямой передачей сигнала; в первом слое используем 2 нейрона с функцией активации tansig, а во втором - 1 нейрон с функцией активации logsig. Для обучения сети применим функцию traingda.
Формирование сети:
net = newff([0 5],[2 1],{'tansig','logsig'},'traingda');
Обучение сети:
net.trainParam.epochs = 500; net.trainParam.goal = 0.01;
[net,TR] = train(net,P,T); grid on
TRAINGDA, Epoch 0/500, MSE 0.428879/0.01, Gradient 0.133123/1e-006
TRAINGDA, Epoch 25/500, MSE 0.419751/0.01, Gradient 0.143599/1e-006
TRAINGDA, Epoch 50/500, MSE 0.379232/0.01, Gradient 0.169519/1e-006
TRAINGDA, Epoch 75/500, MSE 0.0778148/0.01, Gradient 0.110517/1e-006
TRAINGDA, Epoch 100/500, MSE 0.033615/0.01, Gradient 0.0718189/1e-006
TRAINGDA, Epoch 125/500, MSE 0.0209789/0.01, Gradient 0.074307/1e-006
TRAINGDA, Epoch 150/500, MSE 0.0141581/0.01, Gradient 0.0685576/1e-006
TRAINGDA, Epoch 167/500, MSE 0.00993758/0.01, Gradient 0.0257991/1e-006
TRAINGDA, Performance goal met.
Выведем график изменения параметра скорости настройки в процессе обучения:
figure(2), clf, plot(TR.lr, 'LineWidth',2), grid on
title('Параметр скорости настройки')
xlabel('Число циклов')
Выполним моделирование сети:
Y = sim(net,P)
Y =
Columns 1 through 4
0.0216 0.0303 0.1558 0.8271
Columns 5 through 6
0.9506 0.9596