Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ModelNeyrosetey-Методичка.doc
Скачиваний:
160
Добавлен:
09.02.2015
Размер:
398.85 Кб
Скачать

Лабораторная работа № 6. Сети Эльмана

Цели работы: 1) изучение архитектуры рекуррентных нейронных сетей Эльмана и специальных функций для их создания, инициализации, настройки весов и смещений, обучения; 2) ознакомление с демонстрационным примером и его скриптом, а также приобретение навыков построения сетей управления движущимися объектами, построения систем технического зрения и решения других динамических задача.

Задание 1. Создать рекуррентную нейронную сеть Эльмана, которая для случайной булевой последовательности из нулей и единиц выдаёт булеву последовательность, имеющую единицы только в том случае, когда во входной последовательности встретились две единицы подряд:

P = round (rand ( 1, 20 ));

T = [0 ( P ( 1 : end – 1 ) + P ( 2 : end ) = = 2 )];

Pseq = con2seq(P); % – массив ячеек Pseq;

Tseq = con2seq(T); % – массив ячеек Tseq;

net – newelm ( [0 1], [10, 1], {′tansig′, ′logsig′})

% 10 нейронов во входном слое

gensim(net)

net.trainParam.goal = 0.001;

net.trainParam.epochs = 1000;

net = train(net, Pseq, Tseq);

Y = sim(net, Pseq)

Y1 = seq2con(Y);

E = round(T – Y1{1}) % нулевые ошибки.

Задание 2. Создать сеть Эльмана для детектирования амплитуды гармонического сигнала, выполнив следующие действия:

1. Создать выборки из двух синусоид с амплитудами 1.0 и 2.0:

p1 = sin(1 : 20);

p2 = sin(1 : 20) * 2;

2. Сформировать целевые векторы:

t1 = ones(1, 20);

t2 = ones(1, 20) * 2;

3. Сформировать набор векторов входа и целей:

p = [p1 p2 p1 p2];

t = [t1 t2 t1 t1].

4. Сформировать обучающие последовательности:

Pseq = con2seq(p); % массив ячеек;

Tseq = con2seq(t); % массив ячеек;

5. Создать сеть Эльмана:

net = newelm( [ -2 2], [10, 1], …

{′tansig′, ′purelin′}, …, ′traingdx′)

net.layers{1}, net.IW{1, 1}, net.LW{1, 1}

net.layers{2}, net.LW{2, 1}.

6. Обучить сеть:

net.trainParam.epochs = 1000;

net.trainParam.show = 25;

net.trainParam.goal = 0.01;

[net, tr] = train(net, Pseq, Tseq);

net.IW{1, 1}, net.LW{1, 1}, net.LW{2, 1}.

7. Проверить сеть на обучающей последовательности:

figure(2)

a = sim(net, Pseq);

time = 1 : length(p);

plot(time, t, ′- -′, time, cat(2, a {:} ) )

axis([1 80 0.8 2.2]).

8. Проверить сеть на произвольной последовательности:

p3 = sin(1 : 20) * 1.6;

t3 = ones(1, 20) * 1.6;

p4 = sin(1 : 20) * 1.2; t4 = ones(1, 20) * 1.2;

p9 = [p3 p4 p3 p4];

t9 = [t3 t4 t3 t4];

pgseq = con2seq(pg);

figure(3);

a = sim(met, pgseq);

time = 1 : length(pg);

time = 1 : length(pg);

plot(time, tg, ‘- -’, time, cat(2, a{ : } ) )

axis( [1 80 0.8 2.2] ).

Лабораторная работа № 7. Сети Хопфилда

Цели работы: 1) изучение архитектуры рекуррентных нейронных сетей Хопфилда и специальных функций для их создания, взвешивания входов, накопления и активизации; 2) ознакомление с демонстрационными примерами и их скриптами, а также приобретение навыков построения таких сетей для решения задач распознавания образов и создания ассоциативной памяти.

Задание 1. Создать сеть Хопфилда с двумя устойчивыми точками в трёхмерном пространстве, выполнив следующие команды:

T =[-1 -1 1 ; 1 -1 1] % целевые вершины

net =newhop(T); % создание сети

net, gensim(net) % параметры и структура сети

Ai = T ; % начальные условия для линий задержки

Y = sim(net,2,[], Ai); % сеть устойчива

Ai ={[-0.9 ; -0.8 ; 0.7]};

Y=sim(net,{1 5},{}, Ai); % переход к устойчивому состоянию [-1 -1 1]

Задание 2. Создать сеть Хопфилда с четырьмя устойчивыми точками в двухмерном пространстве, выполнив следующие команды:

T = [1 -1; -1 1; 1 1; -1 -1]′

plot(T(1, : ),T(2, : ), ′*r′) % точки равновесия;

axis([-1.1 1.1 -1.1 1.1]);

title(′Точки равновесия проектируемой сети′);

xlabel(′a(1)′), ylabel(′a(2)′)

net =newhop(T);

W=net.LW{1,1}

b=net.b{1,1}

Ai = T;

Y=sim(net,4,[],Ai)

plot(T(1, : ),T(2, : ), ′*r′), hold on ]

axis([-1.1 1.1 -1.1 1.1]) xlabel(‘a(1)’), ylabel(′a(2)′)

new=newhop(T);

[Y,Pf,Af]=sim(net,4,[],T);

for i=1:25

a={rands(2,1)};

[Y,Pf,Af]=sim(net,{1,20},{},a);

record=[cell2mat(a),cell2mat(Y)]

start=cell2mat(a);

plot(start(1.1), start(2.1),′kx′.record(1,:),record(2,:))

end

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]