Проверка сети

Будем использовать для проверки сети входы обучающей последовательности:

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.3

На рис. 8.3 приведены графики входного и выходного сигналов.

Рис. 8.3

Как следует из анализа рисунка, сеть справляется с решением задачи детектирования амплитуды на наборах обучающего множества. Однако неясно, как она будет вести себя на других наборах входа. Обладает ли построенная сеть Элмана свойством обобщения? Попробуем проверить это, выполнив следующие исследования.

Подадим на сеть набор сигналов, составленный из двух синусоид с амплитудами 1.6
и 1.2 соответственно:

p3 = sin(1:20)*1.6;

t3 = ones(1,20)*1.6;

p4 = sin(1:20)*1.2;

t4 = ones(1,20)*1.2;

pg = [p3 p4 p3 p4];

tg = [t3 t4 t3 t4];

pgseq = con2seq(pg);

figure(3)

a = sim(net,pgseq);

ime = 1:length(pg);

plot(time, tg, '––', time, cat(2,a{:}))

axis([1 80 0.8 2.2])

Результат представлен на рис. 8.4.

Рис. 8.4

На этот раз сеть хуже справляется с задачей. Сеть стремится детектировать значение амплитуды, но делает это не очень точно. Улучшенное обобщение могло быть получено, обучая сеть на большее количество амплитуд, чем только на значения 1.0 и 2.0. Использование трех или четырех гармонических сигналов с различными амплитудами может привести к намного лучшему датчику амплитуд.

Читатель может продолжить изучение сетей Элмана, используя программу appelm1. Сделав копию этой программы, можно продолжить эксперименты, увеличивая количество нейронов в рекуррентном слое или длительность, а также количество входных наборов.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: