Нейроны в конкурентоспособном слое учатся представлять различные области входного пробела, где входные векторы происходят.
P является набором случайным образом сгенерированных, но кластеризованных точек тестовых данных. Здесь точки данных построены.
Конкурентоспособная сеть будет использоваться, чтобы классифицировать эти точки в естественные классы.
% Create inputs X. bounds = [0 1; 0 1]; % Cluster centers to be in these bounds. clusters = 8; % This many clusters. points = 10; % Number of points in each cluster. std_dev = 0.05; % Standard deviation of each cluster. x = nngenc(bounds,clusters,points,std_dev); % Plot inputs X. plot(x(1,:),x(2,:),'+r'); title('Input Vectors'); xlabel('x(1)'); ylabel('x(2)');
Здесь COMPETLAYER берет два аргумента, количество нейронов и темпа обучения.
Мы можем сконфигурировать сетевые входные параметры (обычно сделанный автоматически TRAIN) и построить начальные векторы веса, чтобы видеть их попытку классификации.
Векторы веса (o's) будут обучены так, чтобы они произошли сосредоточенные в кластерах входных векторов (+ 's).
net = competlayer(8,.1); net = configure(net,x); w = net.IW{1}; plot(x(1,:),x(2,:),'+r'); hold on; circles = plot(w(:,1),w(:,2),'ob');
Определите номер эпох, чтобы обучаться прежде, чем остановиться и обучаться, этот конкурентоспособный слой (может занять несколько секунд).
Постройте обновленные веса слоя на том же графике.
net.trainParam.epochs = 7;
net = train(net,x);
w = net.IW{1};
delete(circles);
plot(w(:,1),w(:,2),'ob');
Теперь мы можем использовать конкурентоспособный слой в качестве классификатора, где каждый нейрон соответствует различной категории. Здесь мы задаем, входной вектор X1 как [0; 0.2].
Вывод Y, указывает, какой нейрон отвечает, и таким образом которые классифицируют вход, принадлежит.
x1 = [0; 0.2]; y = net(x1)
y = 8×1
0
1
0
0
0
0
0
0