Matlab 稀疏极限学习机

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

我试图为本文提出的稀疏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);
    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;