exponenta event banner

Векторное квантование обучения

Сеть LVQ обучена классификации входных векторов в соответствии с заданными целями.

Пусть X - 10 2-элементных входных векторов, а C - классы, в которые попадают эти векторы. Эти классы могут быть преобразованы в векторы для использования в качестве мишеней, Т, с IND2VEC.

x = [-3 -2 -2  0  0  0  0 +2 +2 +3;
      0 +1 -1 +2 +1 -1 -2 +1 -1  0];
c = [1 1 1 2 2 2 2 1 1 1];
t = ind2vec(c);

Здесь точки данных выводятся на печать. Красный = класс 1, голубой = класс 2. Сеть LVQ представляет кластеры векторов со скрытыми нейронами и группирует кластеры с выходными нейронами для формирования нужных классов.

colormap(hsv);
plotvec(x,c)
title('Input Vectors');
xlabel('x(1)');
ylabel('x(2)');

Figure contains an axes. The axes with title Input Vectors contains 10 objects of type line.

Здесь LVQNET создает слой LVQ с четырьмя скрытыми нейронами и скоростью обучения 0,1. Затем сеть конфигурируется для входов X и целей T. (Конфигурирование, как правило, является ненужным шагом, поскольку выполняется автоматически посредством TRAIN.)

net = lvqnet(4,0.1);
net = configure(net,x,t);

Конкурентные векторы массы нейронов строятся следующим образом.

hold on
w1 = net.IW{1};
plot(w1(1,1),w1(1,2),'ow')
title('Input/Weight Vectors');
xlabel('x(1), w(1)');
ylabel('x(2), w(2)');

Figure contains an axes. The axes with title Input/Weight Vectors contains 11 objects of type line.

Чтобы обучить сеть, сначала переопределите количество периодов по умолчанию, а затем обучите сеть. По окончании переигрывать входные векторы «+» и весовые векторы конкурентных нейронов «о». Красный = класс 1, голубой = класс 2.

net.trainParam.epochs=150;
net=train(net,x,t);

cla;
plotvec(x,c);
hold on;
plotvec(net.IW{1}',vec2ind(net.LW{2}),'o');

Figure contains an axes. The axes with title Input/Weight Vectors contains 14 objects of type line.

Теперь используйте сеть LVQ в качестве классификатора, где каждый нейрон соответствует другой категории. Представить входной вектор [0,2; 1]. Красный = класс 1, голубой = класс 2.

x1 = [0.2; 1];
y1 = vec2ind(net(x1))
y1 = 2