www.gusucode.com > nnet 案例源码 matlab代码程序 > nnet/democ1.m
%% Competitive Learning % Neurons in a competitive layer learn to represent different regions of the % input space where input vectors occur. % % Copyright 1992-2011 The MathWorks, Inc. %% % P is a set of randomly generated but clustered test data points. Here the % data points are plotted. % % A competitive network will be used to classify these points into natural % classes. % 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)'); %% % Here COMPETLAYER takes two arguments, the number of neurons and the % learning rate. % % We can configure the network inputs (normally done automatically % by TRAIN) and plot the initial weight vectors to see their attempt at % classification. % % The weight vectors (o's) will be trained so that they occur centered in % clusters of input vectors (+'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'); %% % Set the number of epochs to train before stopping and train this competitive % layer (may take several seconds). % % Plot the updated layer weights on the same graph. net.trainParam.epochs = 7; net = train(net,x); w = net.IW{1}; delete(circles); plot(w(:,1),w(:,2),'ob'); %% % Now we can use the competitive layer as a classifier, where each neuron % corresponds to a different category. Here we define am input vector % X1 as [0; 0.2]. % % The output Y, indicates which neuron is responding, and thereby which class % the input belongs. x1 = [0; 0.2]; y = net(x1)