我试图通过以下文章为稀疏ELM开发代码。我使用随机隐藏的神经元内核。和乙状结肠激活功能。
但是代码在时间方面表现不佳。接受训练的时间远远超过预期。
我认为更新 d
时存在一些问题论文: - http://www.ntu.edu.sg/home/egbhuang/pdf/Sparse-ELM-IEEE-T-Cybernetics.pdf
这是我的代码实现: -
function [model]=selm2(tr,tr_c,L,seed,C)
[N, In] = size(tr);
[tempH, W_ih, BiasofHiddenNeurons]=Selm_Hiddenoutput(tr,L, 'sigmoid',seed);
H=[tempH ones(N,1)];
delta = H*H';
% f=funcpredict(alpha,tr_c,tr,delta);
G=(tr_c*tr_c').*delta;
%%%%%%%%%%%%%%%%%%%%% algo starts %%%%%%%%%%%%%%%%%%%%%
alpha=zeros(N,1);
g=G*alpha-1;
J=g;
d=ones(N,1);
while min(J(:))<-(10^-3)
J=g.*d;
[mini ind]=min(J);
% temp=G*alpha;
alpha(ind)=alpha(ind) + ((-g(ind))/delta(ind,ind));
if alpha(ind)<0
alpha(ind)=0;
elseif alpha(ind)>C
alpha(ind)=C;
end
g=G*alpha-1;
d=-sign(g);
d(alpha==C)=-1;
d(alpha==0)=1;
% % for i=1:N
% if alpha(ind)==0
% d(ind)=1;
% elseif alpha(ind)==C
% d(ind)=-1;
% % else
% % d(ind)= -sign(g(i));
% end
% end
end
support= (alpha~=0);
supportvec=[tr(support,:) tr_c(support)];
model.wih=W_ih;
model.bias=BiasofHiddenNeurons;
model.alpha=alpha(support);
model.vectors=supportvec;