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

📄 artmap_init.m

📁 ARTMAP的MATLAB工具箱
💻 M
字号:
function [artmap_net] = artmap_init( MAPTYPEArg, MArg, LArg,...				     MAX_F2_SIZEArg,...				     defaultParams, varargin )%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% artmap_init.m%% Description: initialization for a single ARTMAP network%% Authors: Suhas Chelian, Norbert Kopco%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Inputs and Default Values%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% MAPTYPEArg = (nothing)%   1 - Fuzzy ARTMAP%   2 - ART-EMAP%   3 - ARTMAP_IC%   4 - DIST_ARTMAP% MArg = (nothing)%   The number of input dimensions, not including complement coding.% L = (nothing)%   The number of output classes, labeled 1 to L.% MAX_F2_SIZE = (nothing)%   The maximum number of F2 nodes.% defaultParams = (nothing)%   Whether to use default parameters or not.%% If defaultParams is set to one:%   alpha = .01;%   p = 1;%   beta = 1;%   epsilon = -.001;%   rho_a_bar = 0;%   rho_ab = .99;%   Tu = alpha*M;% Else (using 'varagin', set at either the first 6 or all of them)%   alpha = varargin{1}; %   p = varargin{2};%   beta = varargin{3};%   epsilon = varargin{4};%   rho_a_bar = varargin{5};%   rho_ab = varargin{6};%   Tu = varargin{7};%%   DO_WEBER = varagin{8};%   DO_CBD = varagin{9};%   DO_TRAIN_WTA = varagin{10};%   DO_TRAIN_ICG = varagin{11};%   DO_TRAIN_IC = varagin{12};%   DO_TEST_IC = varagin{13};%   DO_TEST_WTA = varagin{14};%   DO_TEST_SCG = varagin{15};%   DO_TEST_ICG = varagin{16};%   DO_OLD_Tj = varargin{17};%   DO_KAPPA_VEC = varargin{18};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Outputs%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% artmap_net%   The initialized ARTMAP network.  artmap_net.fail is set to one%   if a problem was detected in the initialization.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*****************************************************************************%  * Constants and Parameters%  ****************************************************************************/%// ARTMAP type.  Toggle EXACTLY one flag.MAPTYPE = MAPTYPEArg;FUZZY_ARTMAP = 0;ARTMAP_IC = 0;ART_EMAP = 0;DIST_ARTMAP = 0;if ( MAPTYPE == 1 )  FUZZY_ARTMAP = 1;elseif ( MAPTYPE == 2 )  ART_EMAP = 1;elseif ( MAPTYPE == 3 )    ARTMAP_IC = 1;else  DIST_ARTMAP = 1;end%// Constants definitions and training/testing DataM = MArg;		%// Dimensionality of input vectors (not including complement 		%//	coding)L = LArg;		%// Number of output classes%EPOCHS = EPOCHSArg;	%// Number of training epochsMAX_F2_SIZE = MAX_F2_SIZEArg;	%// Max number of F2 nodes.  Increase this if you run out			%//	in training.%// Parametersif ( defaultParams == 1 ) alphaArg = .01;	%// CBD and Weber law signal parameter pArg = 1;		%// CAM rule power betaArg = 1;		%// learning rate epsilonArg = -.001;	%// MT rule parameter rho_a_barArg = 0;	%// ARTa baseline vigilance rho_abArg = .99;       %// Mapfield vigilance TuArg = alphaArg*MArg;	%// F0 -> F2 signal to uncomited nodes.			%//	NOTE:  Changes for each input with Weber			%//	Lawelse alphaArg = varargin{1}{1};  pArg = varargin{1}{2}; betaArg = varargin{1}{3}; epsilonArg = varargin{1}{4}; rho_a_barArg = varargin{1}{5}; rho_abArg = varargin{1}{6}; TuArg = varargin{1}{7}; endalpha = alphaArg;		%// CBD and Weber law signal parameterp = pArg;			%// CAM rule powerbeta = betaArg;		%// learning rateepsilon = epsilonArg;	%// MT rule parameterrho_a_bar = rho_a_barArg;		%// ARTa baseline vigilancerho_ab = rho_abArg;Tu = TuArg;			%// F0 -> F2 signal to uncomited nodes.			%//	NOTE:  Changes for each input with Weber			%//	Law						F0_SIZE = M*2;	%// Size of the F0 layer. Identical to size of the F1 layerF2_SIZE = MAX_F2_SIZE; %// Size of the F0 layer. Identical to size of                       %//	the F1 layer% /*****************************************************************************%  * System Setup%  ****************************************************************************/%// Singal Rule, Weber or CBDDO_WEBER = 0;DO_CBD = FUZZY_ARTMAP | ART_EMAP | ARTMAP_IC | DIST_ARTMAP;if ( DO_WEBER == 1 )  DO_CBD = 0;end% // Training mode.  ICG = Increased CAM GradientDO_TRAIN_WTA = FUZZY_ARTMAP | ART_EMAP | ARTMAP_IC;DO_TRAIN_ICG = DIST_ARTMAP;% // Instance coutingDO_TRAIN_IC = DIST_ARTMAP | ARTMAP_IC;DO_TEST_IC = DIST_ARTMAP | ARTMAP_IC;% // Testing mode.  SCG = Simple CAM GradientDO_TEST_WTA = FUZZY_ARTMAP;DO_TEST_SCG = 0;DO_TEST_ICG = DIST_ARTMAP | ARTMAP_IC | ART_EMAP;i = 0;if ( FUZZY_ARTMAP )  i = i + 1;endif ( ART_EMAP )  i = i + 1;endif ( ARTMAP_IC )  i = i + 1;endif ( DIST_ARTMAP )  i = i + 1;endfail = 0;if ( i ~=1 )  disp( 'Wrong number of systems chosen.  Choose exactly one system!' ...	);  fail = 1;%  quit;endif ( DIST_ARTMAP & ~DO_CBD )  disp( 'dARTMAP must use CBD (check DO_CBD)' );  fail = 1;%  quit;end% Initialization of LTM weightstau_ij = zeros(F0_SIZE,MAX_F2_SIZE);tau_ji = zeros(MAX_F2_SIZE,F0_SIZE);c = zeros(1,MAX_F2_SIZE);% Initialize Kappa after we know what DO_KAPPA_VEC is%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Pack%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%artmap_net.type = MAPTYPE;artmap_net.M = M;artmap_net.L = L;artmap_net.EPOCHS = 0;              % (actually set in artmap_train)artmap_net.MAX_F2_SIZE = MAX_F2_SIZE;artmap_net.TRAIN_N = 0;             % (actually set in artmap_train)artmap_net.input = [];              % "artmap_net.output = [];             % "artmap_net.TEST_N = 0;              % (actually set in artmap_test)artmap_net.te_input = [];           % "artmap_net.te_output = [];          % "artmap_net.alpha = alpha;artmap_net.p = p;artmap_net.beta = beta;artmap_net.epsilon = epsilon;artmap_net.rho_a_bar = rho_a_bar;artmap_net.rho_ab = rho_ab;artmap_net.Tu = Tu;artmap_net.F0_SIZE = M*2;artmap_net.F2_SIZE = MAX_F2_SIZE;if ( defaultParams | size(varargin{1},2) < 8 )% Defaults artmap_net.DO_WEBER = DO_WEBER; artmap_net.DO_CBD = DO_CBD; artmap_net.DO_TRAIN_WTA = DO_TRAIN_WTA; artmap_net.DO_TRAIN_ICG = DO_TRAIN_ICG; artmap_net.DO_TRAIN_IC = DO_TRAIN_IC; artmap_net.DO_TEST_IC = DO_TEST_IC; artmap_net.DO_TEST_WTA = DO_TEST_WTA; artmap_net.DO_TEST_SCG = DO_TEST_SCG; artmap_net.DO_TEST_ICG = DO_TEST_ICG;  artmap_net.DO_OLD_Tj = 0; artmap_net.DO_KAPPA_VEC = 0; kappa = zeros(1, MAX_F2_SIZE);else% On your own! artmap_net.DO_WEBER = varargin{1}{8}; artmap_net.DO_CBD = varargin{1}{9}; artmap_net.DO_TRAIN_WTA = varargin{1}{10}; artmap_net.DO_TRAIN_ICG = varargin{1}{11}; artmap_net.DO_TRAIN_IC = varargin{1}{12}; artmap_net.DO_TEST_IC = varargin{1}{13}; artmap_net.DO_TEST_WTA = varargin{1}{14}; artmap_net.DO_TEST_SCG = varargin{1}{15}; artmap_net.DO_TEST_ICG = varargin{1}{16};  artmap_net.DO_OLD_Tj = varargin{1}{17}; if ( artmap_net.DO_OLD_Tj )   artmap_net.Tu = artmap_net.M; end  artmap_net.DO_KAPPA_VEC = varargin{1}{18}; if ( artmap_net.DO_KAPPA_VEC == 0 )   kappa = zeros(1, MAX_F2_SIZE); else   kappa = zeros( MAX_F2_SIZE, L ); end endartmap_net.fail = fail;artmap_net.tau_ij = tau_ij; % weights, buttom-upartmap_net.tau_ji = tau_ji; % weights, top-downartmap_net.c = c;           % instance countsartmap_net.C = 0;           % number of commited nodes (actually                            % set in artmap_train)artmap_net.kappa = kappa;      % Mapfield (actually set in artmap_train)artmap_net.Delta = [];      % refractory nodes (set in artmap_train)artmap_net.rho = 0;

⌨️ 快捷键说明

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