Последовательный способ.

Формирование архитектуры нейронной сети.

Следующий оператор создает сеть с прямой передачей сигнала

net = newff([-1 2; 0 5],[3,1],{'tansig','purelin'},'traingd');

gensim(net)

Эта сеть использует один вектор входа с двумя элементами, имеющими допустимые границы значений [-1 2] и [0 5];

- имеет 2 слоя с 3 нейронами в первом слое и 1 нейроном во втором слое;

- используемые функции активации: tansig - в первом слое, purelin – во втором слое;

- используемая функция обучения traingd.

Инициализация нейронной сети.

После того как сформирована архитектура сети, должны быть заданы начальные значения весов и смещений, или иными словами, сеть должна быть инициализирована. Такая процедура выполняется с помощью метода init для объектов класса network. Оператор вызова этого метода имеет вид

net = init(net);

Если мы хотим заново инициализировать веса и смещения в первом слое, используя функцию rands, то следует ввести следующую последовательность операторов:

net.layers{1}.initFcn = 'initwb';

net.inputWeights{1,1}.initFcn = 'rands';

net.biases{1,1}.initFcn = 'rands';

net.biases{2,1}.initFcn = 'rands';

net = init(net);

Обучение нейронных сетей

Статические сети.

Воспользуемся моделью однослойной линейной сети с двухэлементным вектором входа, значения которого находятся в интервале [–1 1] и нулевым параметром скорости настройки, как это было для случая адаптации:

clear

net = newlin([-1 1;-1 1],1, 0, 0);

net.IW{1} = [0 0];

net.b{1} = 0;

Требуется обучить параметры сети так, чтобы она формировала линейную зависимость вида

.

Последовательный способ.

Представим обучающую последовательность в виде массивов ячеек

P = {[-1; 1] [-1/3; 1/4] [1/2; 0] [1/6; 2/3]};

T = {-1 -5/12 1 1};

Теперь все готово к обучению сети. Будем обучать ее с помощью функции train в течение 30 циклов. Для обучения и настройки параметров сети используем функции trainwb и learnwh, соответственно.

net.inputWeights{1,1}.learnParam.lr = 0.2;

net.biases{1}.learnParam.lr = 0;

net.trainParam.epochs = 30;

net1 = train(net,P,T);

 

TRAINB, Epoch 0/30, MSE 0.793403/0.

TRAINB, Epoch 25/30, MSE 0.00373997/0.

TRAINB, Epoch 30/30, MSE 0.00138167/0.

TRAINB, Maximum epoch reached.

Параметры сети после обучения равны следующим значениям

W = net1.IW{1}

W =

1.9214 0.9260

y = sim(net1, P)

y =

[-0.9954] [-0.4090] [0.9607] [0.9376]

EE = mse([y{:}]-[T{:}])

EE =

0.0014

Групповой способ.

Для этого представим обучающую последовательность в виде массивов формата double array:

P = [-1 -1/3 1/2 1/6; 1 1/4 0 2/3];

T = [-1 -5/12 1 1];

net1 = train(net,P,T);

TRAINB, Epoch 0/30, MSE 0.793403/0.

TRAINB, Epoch 25/30, MSE 0.00373997/0.

TRAINB, Epoch 30/30, MSE 0.00138167/0.

TRAINB, Maximum epoch reached.

Параметры сети после обучения равны следующим значениям

W = net1.IW{1}

W =

1.9214 0.9260

y = sim(net1, P)

y =

-0.9954 -0.4090 0.9607 0.9376

EE = mse(y-T)

EE =

0.0014

Последовательный способ.

Обратимся к линейной модели нейронной сети с одним входом и одним элементом запаздывания.

Установим начальные условия для элемента запаздывания, весов и смещения, равными нулю; параметр скорости настройки, равным 0.5.

clear

net = newlin([-1 1],1,[0 1],0.5);

Pi = {0};

net.IW{1} = [0 0];

net.biasConnect = 0;

net.trainParam.epochs = 22;

Чтобы применить последовательный способ обучения, представим входы и цели как массивы ячеек

P = {-1/2 1/3 1/5 1/4};

T = { -1 1/6 11/15 7/10};

Используем для этой цели М-функцию train

net1 = train(net, P, T, Pi);

TRAINB, Epoch 0/22, MSE 0.513889/0.

TRAINB, Epoch 22/22, MSE 3.65137e-005/0.

TRAINB, Maximum epoch reached.

Параметры сети после обучения равны следующим значениям

W = net1.IW{1}

W =

1.9883 0.9841

y = sim(net1, P)

y =

[-0.9941] [0.1707] [0.7257] [0.6939]

EE = mse([y{:}]-[T{:}])

EE =

3.6514e-005


<== предыдущая лекция | следующая лекция ==>
Метод градиентного спуска с постоянным шагом | Алгоритм функционирования сети




Дата добавления: 2016-03-30; просмотров: 556;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.007 сек.