⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rbnc.m

📁 这个为模式识别工具箱
💻 M
字号:
%RBNC Radial basis function neural network classifier% % 	W = RBNC(A,UNITS)%% INPUT%   A       Dataset%   UNITS   Number of RBF units in hidden layer%% OUTPUT%   W       Radial basis neural network mapping%	 % DESCRIPTION% A feed-forward neural network classifier with one hidden layer of at most % UNITS (default: 100) radial basis units is computed for labeled dataset A. % Uses the Mathworks' Neural Network toolbox.%% SEE ALSO% MAPPINGS, DATASETS, BPXNC, NEURC, RNNC%% This routine calls MathWork's SOLVERB routine (Neural Network toolbox) % as SOLVB.% Copyright: R.P.W. Duin, duin@ph.tn.tudelft.nl% Faculty of Applied Sciences, Delft University of Technology% P.O. Box 5046, 2600 GA Delft, The Netherlands% $Id: rbnc.m,v 1.10 2004/04/28 07:43:39 duin Exp $function w = rbnc(a,units)	prtrace(mfilename);		if exist('nnet') ~= 7		error('Neural network toolbox not found')	end	if (nargin < 2) | (isempty(units))     prwarning(1,'no number of hidden units specified, assuming 100');		units = 100; 	end	if (nargin <1) | isempty(a)		% Create an empty mapping:		w = mapping(mfilename,units);		w = setname(w,'RBF Neural Network');		return	end	% Training target values.	target_low  = 0.1;	target_high = 0.9;	islabtype(a,'crisp');	isvaldset(a,2,2); % at least 2 objects per class, 2 classes	[m,k,c] = getsize(a); nlab = getnlab(a);	% Set standard training parameters.	disp_freq = inf;			% Display interval: switch off	err_goal = 0.005*m;	  % Sum squared error goal, stop if reached	sigma	   = 0.5;		    % RBF kernel width	% Create target matrix: row C contains a high value at position C,	% the correct class, and a low one for the incorrect ones (place coding).	target = target_low * ones(c,c) + (target_high - target_low) * eye(c);	target = target(nlab,:)';	% Shift and scale the training set to zero mean, unit variance.	ws = scalem(a,'variance');	% Add noise to training set, as SOLVB sometimes has problems with	% identical inputs.	r = randn(m,k) * 1e-10; 	% Compute RBF network.	% RD I changed the below call from NEWRBE() to NEWRB() and added	%    the number of units as parameter. NEWRBE always uses M units	% net     = newrb(+(a*ws)'+r',target,sigma);	net     = newrb(+(a*ws)'+r',target,0,sigma,units,units+1);	weight1 = net.IW{1,1}; weight2 = net.LW{2,1};	bias1   = net.b{1}; bias2 = net.b{2};	n_hidden_units = length(bias1);	% Construct resulting map. First apply the shift and scale mapping WS.	% The first layer then calculates EXP(-D), where D are the squared	% distances to RBF kernel centers, scaled by the biases.	w = ws*proxm(weight1,'distance',2);				% RBF distance map	w = w*cmapm(bias1'.^(-2),'scale');				% Multiply by scale (sq. bias)	w = w*cmapm(n_hidden_units,'nexp');				% Take negative exponential	% Second layer is affine mapping on output of first layer, followed	% by a sigmoid mapping.	w = w*affine(weight2',bias2',[],getlablist(a))*sigm;	w = setname(w,'RBF Neural Classf');return

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -