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

Выполним проверку сети, используя входную последовательность обучающего подмножества и сравнивая выход сети с фактическим значением сигнала T (рис. 9.5):

Q1 = 40;

a = sim(net,P1(:,1:Q1));

t1 = 6:Q1+5;

plot(time(t1),a,'*r', time(1:Q1+5),T(1,1:Q1+5))

xlabel('Time, c');

Рис. 9.5

Как следует из анализа этого рисунка, нейронная сеть достаточно точно отслеживает входной сигнал.

Теперь проверим работу сети, используя контрольное множество T2. Определим длину входной последовательности N1, равную 20, и построим график реакции сети (рис. 9.6):

N1 = 20;

Tt = T2(1,1:N1);

P2(1,:) = Tt(1,:);

P2(2,2:end) = Tt(1,1:end–1);

P2(3,3:end) = Tt(1,1:end–2);

P2(4,4:end) = Tt(1,1:end–3);

P2(5,5:end) = Tt(1,1:end–4);

a = sim(net,P2);

figure(3), clf

h1 = plot(time(1:size(P2, 2)–5), a(1:end–5), '*'); hold on

h2 = plot(time(1:size(P2, 2)–5), Tt(6:end), 'r');

Рис. 9.6

Вычислим погрешность сети, используя информацию из описания графических
объектов Line с дескрипторами h1 и h2:

y1 = get(h1,'YData'); y2 = get(h2,'YData');

minlength = min(length(y1), length(y2));

e = y1(1:minlength) – y2(1:minlength);

nre = sqrt(mse(e));

График погрешности экстраполяции в функции от длины обучающего сигнала и в зависимости от количества точек экстраполяции в качестве параметра показан на рис. 9.7.

Рис. 9.7

Из анализа этого графика следует, что при малом числе экстраполируемых точек 6, 8 и длительности обучающей последовательности более 0.1 с погрешности малы. С ростом числа экстраполируемых точек 10, 20, 30 требуется большая длина обучающей последовательности, и при длине, превышающей 20 тактов (0.5 с), погрешность не зависит от числа точек экстраполяции и монотонно убывает с увеличением длины обучающего множества.

Читатель может обратиться к демонстрационному примеру applin1, где исследуется подобная задача.


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



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