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

📄 createnetrsom.m

📁 a neural network,Recursive SOM and Marge SOM ,can be use for time series and data fit.
💻 M
字号:
function Net = CreateNetRSOM(INNum , RSOMSize , varargin)%   CreateNetRSOM   Create recurrent self-organizing map (RSOM) network%                   structure%%   Inputs:     INNum:      Number of inputs%               RSOMSize:   Number of neurons%               PROPERTIES: See bellow.%%   Output:     Net:        RSOM network structure%%   Example:%   1) Create a default network with two inputs and 4x6 map:%   Net = CreateNetRSOM(1 , [4 , 6]);%   2) Create a network with one input, 8x8 map, where the%   neighborhood variance is 2 and learning function is 'RSOMHebbV01':%   Net = CreateNetRSOM(1 , [8 , 8] , 'RSOMNeiFunP' , 2 , ...%   'RSOMUnSLFun' , 'RSOMHebbV01');%%   This function creates a RSOM network structure that can be passed to%   'SimNetRSOM' for simulation and learning and it has all necessary%   information about the network.%   There are several properties with default values that one can define%   for the network, as listed bellow. These properties can be assigned in%   a pairwised manner. Please check RSOMSimV01 and RSOMSimV02 for complete%   examples on how to override default values.%%   Properties:%   RSOMType:   Can be 'RecSOM' for Recursive Self-Organizing Maps [1] or%               'SOMSD' for Self-Organizing Maps for Structured Data [2].%               Default is 'RecSOM'.%   RSOMTopo:   Topology of the network, can be 'Hex' forhexagonal or%               'Grid' for reqular square lattice connections. Default is%               'Hex'.%   RSOMNeiFunP: Variance parameter for neighborhood function, default = 5.%   RSOMUnSLFun: Learning function, should be a file name or 'None' if no%               training is required. Defaults is 'None'.%   RSOMUnSLStepIN: Learning rate for input weights, default = 0.1.%   RSOMUnSLStepC: Learning rate for recurrent weights, default = 0.1.%%   [1]. T. Voegtlin. "Recursive self-organizing maps". Neur.Netw.,%   15(8-9):979-991, 2002.%   [2]. M. Hagenbuchner, A. Sperduti, and A.C. Tsoi. "A Self-Organizing Map%   for Adaptive Processing of Structured Data". IEEE Transactions on Neural%   Networks, 14(3):491-505, 2003.%%   ---------------------------------------------------------%   Amir Reza Saffari Azar Alamdari%   http://www.ymer.org/main.htm , amir@ymer.org%   ---------------------------------------------------------%-----Initialization%% RSOMRSOMType    = 'RecSOM';INRSOMWType = 'Random';RSOMWType   = 'Random';RSOMDist    = 'Link';RSOMTopo    = 'Hex';RSOMNeiFun  = 'Guass';RSOMNeiFunP = 5;RSOMDFun    = 'Euclid';RSOMCFun    = 'Exp';RSOMDINP    = 3;RSOMDCP     = 1;RSOMUnSLMode    = 'Online';RSOMUnSLFun     = 'None';RSOMUnSLStepIN  = 0.1;RSOMUnSLStepC   = 0.1;%% Misc.ShowMessages    = 1;%% Checking inputsif length(varargin) > 0        VarCounter  = 1;        while VarCounter < length(varargin)        CurArg  = varargin{VarCounter};                switch  CurArg                        case 'RSOMType'                RSOMType    = varargin{VarCounter + 1};                VarCounter  = VarCounter + 2;                        case 'INRSOMWType'                INRSOMWType = varargin{VarCounter + 1};                VarCounter  = VarCounter + 2;                            case 'RSOMWType'                RSOMWType   = varargin{VarCounter + 1};                VarCounter  = VarCounter + 2;                            case 'RSOMDist'                RSOMDist    = varargin{VarCounter + 1};                VarCounter  = VarCounter + 2;                            case 'RSOMTopo'                RSOMTopo    = varargin{VarCounter + 1};                VarCounter  = VarCounter + 2;                            case 'RSOMNeiFun'                RSOMNeiFun  = varargin{VarCounter + 1};                VarCounter  = VarCounter + 2;                            case 'RSOMNeiFunP'                RSOMNeiFunP = varargin{VarCounter + 1};                VarCounter  = VarCounter + 2;                            case 'RSOMDFun'                RSOMDFun    = varargin{VarCounter + 1};                VarCounter  = VarCounter + 2;                            case 'RSOMCFun'                RSOMCFun    = varargin{VarCounter + 1};                VarCounter  = VarCounter + 2;                            case 'RSOMDINP'                RSOMDINP = varargin{VarCounter + 1};                VarCounter  = VarCounter + 2;                            case 'RSOMDCP'                RSOMDCP = varargin{VarCounter + 1};                VarCounter  = VarCounter + 2;                            case 'RSOMUnSLMode'                RSOMUnSLMode    = varargin{VarCounter + 1};                VarCounter      = VarCounter + 2;                            case 'RSOMUnSLFun'                RSOMUnSLFun     = varargin{VarCounter + 1};                VarCounter      = VarCounter + 2;                            case 'RSOMUnSLStepIN'                RSOMUnSLStepIN  = varargin{VarCounter + 1};                VarCounter      = VarCounter + 2;                            case 'RSOMUnSLStepC'                RSOMUnSLStepC   = varargin{VarCounter + 1};                VarCounter      = VarCounter + 2;                            case 'ShowMessages'                ShowMessages    = varargin{VarCounter + 1};                VarCounter      = VarCounter + 2;                            otherwise                error('Unknown input !!!')                        end    endend%-----Creating weights%% RSOMRSOMNum = prod(RSOMSize);switch INRSOMWType        case 'Random'                WINRSOM = randn(INNum , RSOMNum);            otherwise                error('Unknown INRSOMWType !!!')        endswitch RSOMType        case 'RecSOM'                switch RSOMWType            case 'Random'                WRSOM   = randn(RSOMNum , RSOMNum);            otherwise                error('Unknown RSOMWType !!!')        end                TempState   = zeros(RSOMNum , 1);            case 'SOMSD'                switch RSOMWType            case 'Random'                WRSOM   = max(RSOMSize)*rand(size(RSOMSize , 2) , RSOMNum);            otherwise                error('Unknown RSOMWType !!!')        end                TempState   = zeros(size(RSOMSize , 2) , 1);            otherwise                error('Unknown RSOMType !!!')        endswitch RSOMTopo        case 'Hex'                RSOMPos = hextop(RSOMSize);            case 'Grid'                RSOMPos = gridtop(RSOMSize);            otherwise                error('Unknown RSOMTopo !!!')        endswitch RSOMDist        case 'Link'                RSOMPosD    = linkdist(RSOMPos);            otherwise                error('Unknown RSOMDist !!!')        end%-----Creating network object%% RSOMDimStr      = struct('INNum' , INNum , 'RSOMNum' , RSOMNum , 'RSOMSize' , RSOMSize);RSOMStr     = struct('RSOMType' , RSOMType , 'INRSOMWType' , INRSOMWType , 'RSOMWType' , RSOMWType , 'RSOMDist' , RSOMDist , 'RSOMTopo' , RSOMTopo , ...    'RSOMNeiFun' , RSOMNeiFun , 'RSOMNeiFunP' , RSOMNeiFunP , 'RSOMDFun' , RSOMDFun , 'RSOMCFun' , RSOMCFun , 'RSOMDINP' , RSOMDINP , ...    'RSOMDCP' , RSOMDCP , 'RSOMPos' , RSOMPos , 'RSOMPosD' , RSOMPosD);RSOMLStr    = struct('RSOMUnSLMode' , RSOMUnSLMode , 'RSOMUnSLFun' , RSOMUnSLFun , 'RSOMUnSLStepIN' , RSOMUnSLStepIN , ...    'RSOMUnSLStepC' , RSOMUnSLStepC);RSOMSStr    = struct('RSOMState' , TempState , 'Epoch' , 1 , 'MaxEpoch' , 100);RSOMWStr    = struct('WINRSOM' , WINRSOM , 'WRSOM' , WRSOM);MiscStr     = struct('ShowMessages' , ShowMessages);%% NetNet = struct('Dim' , DimStr , 'RSOM' , RSOMStr , 'W' , RSOMWStr , 'Learn' , RSOMLStr , 'State' , RSOMSStr , 'Misc' , MiscStr);if ShowMessages    disp('Creating network: Done.')endreturn

⌨️ 快捷键说明

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