稀疏极限学习机

时间:2014-06-15 07:05:17

标签: matlab machine-learning neural-network svm

我试图通过以下文章为稀疏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;

0 个答案:

没有答案