Notebook "нейронные сети" Глава 2

Вид материалаДокументы
C368. trainoss
C370. traimlm
С373. trainbr
Подобный материал:
1   ...   17   18   19   20   21   22   23   24   ...   33

C368. TRAINOSS


Заданы следующие обучающие последовательности входов P и целей T:

P = [0 1 2 3 4 5]; T = [0 0 0 1 1 1];

Поскольку соответствие между входом и целью носит явно выраженный нелинейный характер, то будем использовать нейронную сеть с нелинейными сигмоидальными функциями активации. Выберем двухслойную нейронную сеть с прямой передачей сигнала; в первом слое используем 2 нейрона с функцией активации tansig, а во втором - 1 нейрон с функцией активации logsig. Для обучения сети применим функцию trainoss.

Формирование сети:

net = newff([0 5],[2 1],{'tansig','logsig'},'trainoss');

Обучение сети:

net.trainParam.epochs = 50; net.trainParam.show = 10;

net.trainParam.goal = 0.0001;

[net,TR] = train(net,P,T); grid on


TRAINOSS-srchbac, Epoch 0/50, MSE 0.468812/0.0001, Gradient 0.199095/1e-006

TRAINOSS-srchbac, Epoch 10/50, MSE 0.0080093/0.0001, Gradient 0.116508/1e-006

TRAINOSS-srchbac, Epoch 20/50, MSE 0.00339965/0.0001, Gradient 0.0136916/1e-006

TRAINOSS-srchbac, Epoch 26/50, MSE 4.15302e-005/0.0001, Gradient 0.000220306/1e-006

TRAINOSS, Performance goal met.

Выполним моделирование сети:

Y = sim(net,P)


Y =

Columns 1 through 4

0.0002 0.0002 0.0031 0.9875

Columns 5 through 6

0.9935 0.9936

C370. TRAIMLM


Заданы следующие обучающие последовательности входов P и целей T:

P = [0 1 2 3 4 5]; T = [0 0 0 1 1 1];

Поскольку соответствие между входом и целью носит явно выраженный нелинейный характер, то будем использовать нейронную сеть с нелинейными сигмоидальными функциями активации. Выберем двухслойную нейронную сеть с прямой передачей сигнала; в первом слое используем 2 нейрона с функцией активации tansig, а во втором - 1 нейрон с функцией активации logsig. Для обучения сети применим функцию trainlm.

Формирование сети:

net = newff([0 5],[2 1],{'tansig','logsig'},'trainlm');

Обучение сети:

net.trainParam.epochs = 50; net.trainParam.show = 10;

net.trainParam.goal = 0.0001;

[net,TR] = train(net,P,T); grid on


TRAINLM, Epoch 0/50, MSE 0.463676/0.0001, Gradient 1.60204/1e-010

TRAINLM, Epoch 10/50, MSE 0.000125314/0.0001, Gradient 0.00115041/1e-010

TRAINLM, Epoch 11/50, MSE 1.68681e-005/0.0001, Gradient 0.000171152/1e-010

TRAINLM, Performance goal met.

Данный алгоритм имеет адаптивный параметр mu, изменение которого построено в виде графика:

figure(2), clf, plot(TR.mu, 'LineWidth',2), grid on

title('Параметр адаптации')

xlabel('Число циклов')

Выполним моделирование сети:

Y = sim(net,P)


Y =

Columns 1 through 4

0.0006 0.0006 0.0049 0.9924

Columns 5 through 6

0.9970 0.9970

С373. TRAINBR


Рассмотрим задачу аппроксимации синусоидальной функции, которая зашумлена нормально распределенным шумом:

P = [-1:.05:1]; T = sin(2*pi*P) + 0.1*randn(size(P));

Сформируем для решения этой задачи двухслойную нейронную сеть прямой передачи сигнала. Вход сети принимает значения в диапазоне от –1 до 1. Первый слой имеет 20 нейронов с функцией активации tansig, второй слой имеет один нейрон с функцией активации purelin . В качестве обучающей используем функцию trainbr.

Формирование сети

net = newff([-1 1],[20,1],{'tansig','purelin'},'trainbr');

Обучение сети:

net.trainParam.epochs = 50; net.trainParam.show = 10;

net = train(net,P,T); grid on


TRAINBR, Epoch 0/50, SSE 35.495/0, SSW 21461.6, Grad 6.54e+001/1.00e-010, #Par 6.10e+001/61

TRAINBR, Epoch 10/50, SSE 0.165045/0, SSW 3033.99, Grad 2.17e-001/1.00e-010, #Par 2.94e+001/61

TRAINBR, Epoch 20/50, SSE 0.186866/0, SSW 1579.57, Grad 3.73e-001/1.00e-010, #Par 2.56e+001/61

TRAINBR, Epoch 30/50, SSE 0.202243/0, SSW 988.328, Grad 1.13e-001/1.00e-010, #Par 2.24e+001/61

TRAINBR, Epoch 40/50, SSE 0.215021/0, SSW 677.114, Grad 4.84e-002/1.00e-010, #Par 1.99e+001/61

TRAINBR, Epoch 50/50, SSE 0.226781/0, SSW 389.632, Grad 1.32e-001/1.00e-010, #Par 1.64e+001/61

TRAINBR, Maximum epoch reached.


Выполним моделирование сети и построим графики исследуемых функций

Y = sim(net,P);

figure(2), clf, h1=plot(P,Y,'LineWidth',2);

hold on, set(h1,'Color',[1/2,1/2,0])

plot(P,T,'+r','MarkerSize',6,'LineWidth',2), grid on

legend('выход', 'вход')

Функции оценки качества обучения