sgnt_generating_online.asv
来自「用matlab编写的基于自生成神经网络(self-generated neura」· ASV 代码 · 共 83 行
ASV
83 行
function [Node] = sgnt_generating_online(y1,m)
% Generating A Self-Generating Neural Tree for traning a SGNN
% Copyright By Li Aiguo in 22/11/2004
%Input: y1: training set
% m: input vector dimision
%Ouput: node: a SGNT
% node(j): (wj1,...,wjm);cj; Father_ptr; FirstChild_ptr; NextSibling_ptr
%*****************************************************************************
% [nr,nc]= size(y1);
% if nr< nc y1=y1'; end
%**************************************************************
% Generating a SGNT named node
%**************************************************************
% generating a root of the tree
for k=1:1:m node(1,k)= y1(1,k); end
node(1,m+1)= 1;
node(1,m+2)= 0;
node(1,m+3)= 0;
node(1,m+4)= 0;
%****************************************************
% Generating the tree
[nr,nc]= size(y1);
j= 2;
for i=2:1:nr
% choose(i,node)
[noder,nodec]= size(node);
for h=1:1:noder
for k=1:1:m w(k)= node(h,k); end
d1(h,2)=h;
% d1(h,1)=sqrt((y1(i,:)-w)*(y1(i,:)-w)');
d1(h,1)=sum((y1(i,:)-w).^2);
end
d1= paixu(d1,1);
winner= d1(1,2);
%*************************************************
if node(winner,m+3)== 0 % winner is a leaf
% copy(n_j,n_win); and % connect(n_j,n_win);
node(j,:)= node(winner,:);
node(j,m+1)= 1;
node(j,m+2)= winner;
node(j,m+3)= 0;
node(j,m+4)= 0;
node(winner,m+3)= j;
j= j+1;
end
% copy(n_j,e_i);
for k=1:1:m node(j,k)= y1(i,k); end
node(j,m+1)= 1;
node(j,m+2)= winner;
node(j,m+3)= 0;
node(j,m+4)= 0;
% connect(n_j,n_win);
node(winner,m+1)= node(winner,m+1)+1;
xx= node(winner,m+3);
while(xx >0)
if node(xx,m+4)==0 node(xx,m+4)=j; break; end
xx= node(xx,m+4);
end
j=j+1;
% update(e_i,n_win)
for k=1:1:m
node(winner,k)= node(winner,k)+(y1(i,k)-node(winner,k))/node(winner,m+1);
end
while(winner > 1)
winner= node(winner,m+2);
node(winner,m+1)= node(winner,m+1)+1;
for k=1:1:m
node(winner,k)= node(winner,k)+(y1(i,k)-node(winner,k))/node(winner,m+1);
end
end
end
Node = node;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?