Matlab 稀疏极限学习机
我试图为本文提出的稀疏ELM开发代码。我使用了随机隐藏的神经元内核。和乙状结肠激活功能 但代码在时间方面表现不佳。训练所需的时间远远超过预期 我认为在更新d时存在一些问题 文件:- 以下是我的代码实现:-Matlab 稀疏极限学习机,matlab,machine-learning,neural-network,svm,Matlab,Machine Learning,Neural Network,Svm,我试图为本文提出的稀疏ELM开发代码。我使用了随机隐藏的神经元内核。和乙状结肠激活功能 但代码在时间方面表现不佳。训练所需的时间远远超过预期 我认为在更新d时存在一些问题 文件:- 以下是我的代码实现:- function [model]=selm2(tr,tr_c,L,seed,C) [N, In] = size(tr); [tempH, W_ih, BiasofHiddenNeurons]=Selm_Hiddenoutput(tr,L, 'sigmoid',seed
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;
您是否使用探查器计算出哪个部分占用的时间最多?是的!!!“d”的更新花费的时间最多。@nkjt我使用了分析器,它说g=g*alpha-1;这花了很多时间。但由于有必要对其进行更新,因此无需对其进行更改。第二个最耗时的语句是d=-signg;