亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? wremove.m

?? SVDD的工具箱
?? M
字號:
function W = Wremove(W,c)%WREMOVE Remove an object from the incsvdd%%        W = WREMOVE(W,W.C)%% Remove object W.C from structure W (see Wstartup). W.C should be an index% to the object defined in the global matrix X_incremental. An updated% version of W is returned.%% See also: incsvdd, inckernel, Wstartup, Wadd% we assume we have a valid SVDD solution. That means, we have:%  X_incremental, W.y%  W.kernel, W.kpar.type, kpar.s%  W.C%  W.alf, W.b%  W.setS, W.Ks,%  W.setE, W.Ke,%  W.setR, W.Kr,%  W.R, W.grad.%% Of course, from X_incremental,W.y,W.alf,W.b and W.C, be can derive the rest. But because% we will switch from adding and removing objects, I assume all the% rest is also available.% Check for the dataset:global X_incremental;if isempty(X_incremental)	error('I am expecting a global variable X_incremental');endif length(c)>1	error('Please remove just a single object.');end% so, here we go thensetD = (1:size(X_incremental,1))';%fprintf('Removing object number %d\n',c);if ~any(W.setR==c)  % not so easy, c is a support vector or error vector...    % so, remove it from W.setS or W.setE:  if ~isempty(W.setE) & any(W.setE==c)  % object from W.setE    %fprintf('Object %d will be removed from E\n',c);    nrE = find(W.setE==c);    W.Ke(nrE,:) = [];    W.setE(nrE) = [];  else            % object from W.setS    %fprintf('Object %d will be removed from S\n',c);    nrS = find(W.setS==c);    if isempty(nrS)      warning('Object cannot be found in S, E or W.R!');    end    % W.Ks has 1 extra row and column, be careful with this extra 1    W.Ks(nrS+1,:) = [];  % remove the row    W.setS(nrS) = [];    W.Ks(:,nrS+1) = [];  % W.Ks is never empty: always the W.y row/column    if ~isempty(W.setE), W.Ke(:,nrS) = []; end    if ~isempty(W.setR), W.Kr(:,nrS) = []; end    % don't forget the W.R:    W.R = change_R(W.R,-nrS,0,0);  end    done = 0; % to check if stable solution is found.  while ~done    % compute the kernel matrix entry for the object,    % this is necessary for computing beta and gamma, and after that    % for updating the gradients for all objects.    K = feval(W.kernel,W.kpar,c,setD);    Kc = 2*(W.y(c)*W.y(setD)').*K;    % compute beta, (this excludes c)    beta = zeros(length(W.setS)+1,1);    beta = -W.R*[W.y(c); Kc(W.setS)'];    % compute gamma, (this includes c, although it is not stricly    % necessary, I think...)    gamma = Kc';    % again, special cares for an possible empty W.setS:    if isempty(W.setS)       gamma = W.y(c)*W.y(setD);      %duptonow = W.y(c)*W.b;      duptonow = 0; % im not sure...    else % the more or less normal case      if ~isempty(W.setE)        gamma(W.setE) = gamma(W.setE) + [W.y(W.setE) W.Ke]*beta;      end      if ~isempty(W.setR)        gamma(W.setR) = gamma(W.setR) + [W.y(W.setR) W.Kr]*beta;      end      gamma(c) = gamma(c) + [W.y(c) Kc(W.setS)]*beta;      gamma(W.setS) = 0;      %duptonow = W.alf(c);      duptonow = 0; % so, I don't know...    end    % I'm not interested in the gradient of c, the only stopping    % criterion is, that \alpha_c = 0.    % (1) check the own lower bound:    if isempty(W.setS)      deltaAcis0 = -inf;    else      deltaAcis0 = -W.alf(c);    end    % (2) check upper bounds of the SVs:    deltaupperC = -inf;    if ~isempty(W.setS)      s = warning('off');			deltaupperC = -duptonow + (W.C-W.alf(W.setS))./beta(2:end);		warning(s);	      % positive changes do not count:      deltaupperC(deltaupperC>duptonow) = -inf;      deltaupperC(beta(2:end)>=0) = -inf;      [deltaupperC,nrS_up] = max(deltaupperC);    end    % (3) check lower bounds of the SVs:    deltalowerC = -inf;    if ~isempty(W.setS)      s = warning('off');         deltalowerC = -duptonow -W.alf(W.setS)./beta(2:end);		warning(s);	      % positive changes do not count:      deltalowerC(deltalowerC>duptonow) = -inf;      deltalowerC(beta(2:end)<=0) = -inf;      [deltalowerC,nrS_low] = max(deltalowerC);    end    % (4) check E gradients to become 0:    deltaGeis0 = -inf;    if ~isempty(W.setE)      warning off;      deltaGeis0 = -duptonow -W.grad(W.setE)./gamma(W.setE);      warning on;      deltaGeis0(deltaGeis0>=-duptonow) = -inf; %DXD break symmetry      deltaGeis0(gamma(W.setE)>=0) = -inf;      [deltaGeis0,nrE_0] = max(deltaGeis0);    end    % (5) check W.R gradients to become 0:    deltaGris0 = -inf;    if ~isempty(W.setR)      warning off;      deltaGris0 = -duptonow -W.grad(W.setR)./gamma(W.setR);      warning on;      deltaGris0(deltaGris0>=duptonow) = -inf;      deltaGris0(gamma(W.setR)<=0) = -inf;      [deltaGris0,nrG_0] = max(deltaGris0);    end    %alfbefore = W.alf;    %gradbefore = W.grad;    % which one should be considered first?    deltas = [deltaAcis0; deltaupperC; deltalowerC;deltaGeis0;...      deltaGris0];    [maxdelta,situation] = max(deltas);    %fprintf(' Maxdelta = %e, so situation %d\n',maxdelta,situation);    % update the parameters    if isempty(W.setS) % then we only change W.b:      %disp('Empty set in remove_obj');      W.b = W.b + W.y(c)*maxdelta;    else      W.alf(c) = W.alf(c) + maxdelta;      W.alf(W.setS) = W.alf(W.setS) + (maxdelta+duptonow)*beta(2:end);      W.b = W.b + (maxdelta+duptonow)*beta(1);    end    W.grad = W.grad + (maxdelta+duptonow)*gamma;    %update the sets    switch situation      case 1   % the new object goes to W.setR        %fprintf('(1) New object %d goes -> W.R\n',c);        W.alf(c) = 0; % just to be sure...        if size(W.Kr,1)==0, W.Kr = []; end % make it really empty        W.Kr = [W.Kr; Kc(W.setS)];        W.setR = [W.setR; c];        done = 1;      case 2  % a support object hits upper bound        j = W.setS(nrS_up);             % number of the object        %fprintf('(2) Object %d goes from S -> E\n',j);        W.alf(j) = W.C;                   % just to be sure        if size(W.Ke,1)==0, W.Ke=[]; end  % make it really really empty        W.Ke = [W.Ke; W.Ks(nrS_up+1,2:end)];  % update W.Ke        W.setE = [W.setE;j];              % add to W.setE        W.Ks(nrS_up+1,:) = [];            % update all K's        W.Ks(:,nrS_up+1) = [];        W.Ke(:,nrS_up) = [];        if ~isempty(W.Kr), W.Kr(:,nrS_up) = []; end        W.setS(nrS_up) = [];            % remove from W.setS        W.R = change_R(W.R,-nrS_up,beta,gamma(j));      case 3  % a support object hits lower bound        j = W.setS(nrS_low);             % number of the object        %fprintf('(3) Object %d goes from S -> W.R\n',j);        W.alf(j) = 0;                    % just to be sure        if size(W.Kr,1)==0, W.Kr = []; end % make really empty        W.Kr = [W.Kr; W.Ks(nrS_low+1,2:end)];  % update W.Kr        W.setR = [W.setR;j];               % add to W.setE        W.Ks(nrS_low+1,:) = [];            % update all K's        W.Ks(:,nrS_low+1) = [];        if ~isempty(W.Ke), W.Ke(:,nrS_low) = []; end;        if ~isempty(W.Kr), W.Kr(:,nrS_low) = []; end;        W.setS(nrS_low) = [];            % remove from W.setS        W.R = change_R(W.R,-nrS_low,beta,gamma(j));      case 4  % an error becomes a support object        j = W.setE(nrE_0);              % number of the object        %fprintf('(4) Object %d goes from E -> S\n',j);        % adding to W.setS, means that all kernels have to be computed:        K = feval(W.kernel,W.kpar,j,setD);        Kj = 2*(W.y(j)*W.y(setD)').*K;        % to update W.R, we have to have the beta of object j:        betaj = zeros(length(W.setS)+1,1);        betaj = -W.R*[W.y(j); Kj(W.setS)'];        W.Ks = [W.Ks; W.y(j) Kj(W.setS)];     % add row to W.Ks        W.Kr = [W.Kr Kj(W.setR)'];          % update W.Kr        W.Ke = [W.Ke Kj(W.setE)'];          % update W.Ke        W.Ke(nrE_0,:) = [];        W.setE(nrE_0) = [];             % update W.setE        W.setS = [W.setS;j];              % add to W.setS        W.Ks = [W.Ks [W.y(j); Kj(W.setS)']];   % and the extra column for W.Ks        if length(betaj)==1 % compute it directly (to avoid the inf's)...          W.R = [-Kj(j) W.y(j); W.y(j) 0];        else          % to update W.R, we also have to have the gamma of object j:          gammaj = W.Ks(end,:)*[betaj;1] ;          W.R = change_R(W.R,+j,betaj,gammaj);        end      case 5  % an other object becomes a support object        j = W.setR(nrG_0);              % number of the object        %fprintf('(5) Object %d goes from W.R -> S\n',j);        % adding to W.setS, means that all kernels have to be computed:        K = feval(W.kernel,W.kpar,j,setD);        Kj = 2*(W.y(j)*W.y(setD)').*K;        % to update W.R, we have to have the beta of object j:        betaj = zeros(length(W.setS)+1,1);        betaj = -W.R*[W.y(j); Kj(W.setS)'];        W.Ks = [W.Ks; W.y(j) Kj(W.setS)];     % add row to W.Ks        W.Ks = [W.Ks [W.y(j); Kj([W.setS;j])']]; % and the extra column for W.Ks        W.Ke = [W.Ke Kj(W.setE)'];          % update W.Ke        W.Kr = [W.Kr Kj(W.setR)'];          % update W.Kr        W.Kr(nrG_0,:) = [];        W.setS = [W.setS;j];              % add to W.setS        W.setR(nrG_0) = [];             % update W.setR        if length(betaj)==1 % compute it directly (to avoid the inf's)...          W.R = [-Kj(j) W.y(j); W.y(j) 0];        else          % to update W.R, we also have to have the gamma of object j:          gammaj = W.Ks(end,:)*[betaj;1] ;          W.R = change_R(W.R,+j,betaj,gammaj);        end    end  %of the switch statement.    %W.alf    %keyboard  end   % end-done  end% the object is now in W.R, so it is easy:  nrR = find(W.setR==c);W.Kr(nrR,:) = [];W.setR(nrR) = [];% now you probably also want to remove X_incremental,W.y, and thus move all% indices:X_incremental(c,:) = [];W.y(c) = [];if ~isempty(W.setS)  I = (W.setS>c); W.setS(I) = W.setS(I)-1;endif ~isempty(W.setE)  I = (W.setE>c); W.setE(I) = W.setE(I)-1;endif ~isempty(W.setR)  I = (W.setR>c); W.setR(I) = W.setR(I)-1;endW.alf(c) = [];W.grad(c) = [];

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产清纯美女被跳蛋高潮一区二区久久w| 99久久精品国产导航| 亚洲综合丁香婷婷六月香| 国产精品久久久一区麻豆最新章节| 91精品国产综合久久久久久久久久| 欧美午夜精品一区| 91.成人天堂一区| 欧美高清视频www夜色资源网| 欧美三级视频在线播放| 精品日韩99亚洲| 精品日韩一区二区三区免费视频| 日韩欧美在线不卡| 精品国产不卡一区二区三区| 欧美精品一区二区三区蜜桃| 久久久777精品电影网影网 | 欧美日韩美女一区二区| 欧洲av一区二区嗯嗯嗯啊| 欧美日韩在线播放| 精品久久久久久久久久久久久久久| 精品福利av导航| 国产精品久久久久久亚洲伦| 夜夜嗨av一区二区三区中文字幕| 亚洲123区在线观看| 久久www免费人成看片高清| 国产在线看一区| 91农村精品一区二区在线| 欧美视频自拍偷拍| 久久在线免费观看| 日韩理论片网站| 日韩电影免费在线| 成人免费毛片高清视频| 欧美日韩一区二区三区四区| 久久嫩草精品久久久精品一| 亚洲色图.com| 精东粉嫩av免费一区二区三区| 国产99久久精品| 7777精品久久久大香线蕉| 国产日本欧洲亚洲| 亚洲国产综合91精品麻豆| 精品在线一区二区三区| 一本大道av伊人久久综合| 欧美一区二区黄色| 亚洲摸摸操操av| 国产一区二区三区观看| 欧美日韩不卡一区| 有码一区二区三区| 成人免费毛片高清视频| 精品欧美一区二区三区精品久久| 亚洲美女精品一区| 国产iv一区二区三区| 日韩一区二区三区免费看| 亚洲欧美欧美一区二区三区| 国产在线播放一区三区四| 欧美日本一区二区在线观看| 日韩一区中文字幕| 成人自拍视频在线| 久久夜色精品国产噜噜av| 五月综合激情网| 欧美日韩精品专区| 一区二区免费视频| 91在线观看成人| 国产精品不卡一区| 成人在线视频一区二区| 久久婷婷国产综合国色天香| 丰满亚洲少妇av| 国产日产精品1区| 国产精品18久久久久久久久 | 日韩影视精彩在线| 在线一区二区三区做爰视频网站| 国产蜜臀97一区二区三区| 国模一区二区三区白浆| 久久综合国产精品| 国产精品中文欧美| 精品国产亚洲在线| 国产精品自拍三区| 国产欧美精品日韩区二区麻豆天美| 久久福利资源站| 久久综合九色综合97婷婷| 久久精品国产一区二区三区免费看| 91.com视频| 国内精品自线一区二区三区视频| 日韩免费高清视频| 国产精品一区二区久久精品爱涩| 亚洲精品在线网站| 国产 欧美在线| 国产精品视频一二三区| heyzo一本久久综合| 亚洲欧美日韩久久| 91麻豆精品国产91久久久久久久久 | 欧洲国产伦久久久久久久| 午夜久久福利影院| 日韩免费看网站| 国产成人精品影院| 亚洲免费在线观看| 欧美高清你懂得| 国产成人av在线影院| 一区二区三区在线观看视频| 欧美日本不卡视频| 成人性生交大合| 亚洲激情男女视频| 日韩精品一区国产麻豆| 国产成人精品亚洲日本在线桃色| 亚洲色图欧美在线| 精品欧美乱码久久久久久| youjizz国产精品| 人人精品人人爱| 国产精品乱码人人做人人爱 | 日本视频免费一区| 国产女同互慰高潮91漫画| 一本久道久久综合中文字幕| 秋霞午夜av一区二区三区| 久久精品一区八戒影视| 欧美午夜影院一区| 国产成人一区二区精品非洲| 亚洲福利一区二区| 国产精品污污网站在线观看| 欧美日韩在线播放| 91在线看国产| 精品在线亚洲视频| 国产成人精品亚洲777人妖 | 国产一区二区三区在线观看精品 | 国产精品18久久久久久久久| 亚洲在线一区二区三区| 精品国产91久久久久久久妲己 | 99re视频这里只有精品| 青娱乐精品视频在线| 亚洲欧美日韩在线| 中文字幕电影一区| 日韩欧美久久久| 欧美日韩综合在线免费观看| 成人av影视在线观看| 久久99深爱久久99精品| 亚洲国产一区二区a毛片| 欧美激情在线一区二区三区| 精品久久久三级丝袜| 欧美日韩国产乱码电影| 色一情一乱一乱一91av| 成人美女视频在线观看| 韩国v欧美v日本v亚洲v| 极品少妇xxxx精品少妇| 免费成人在线视频观看| 五月天中文字幕一区二区| 亚洲六月丁香色婷婷综合久久 | 欧美色综合天天久久综合精品| 国产成人一区在线| 国产成人亚洲精品青草天美| 久久国产精品一区二区| 九色综合狠狠综合久久| 久久精品国产在热久久| 久久激情五月激情| 久久国产婷婷国产香蕉| 麻豆高清免费国产一区| 蜜臀精品久久久久久蜜臀| 日本欧美一区二区三区| 久久精品国产亚洲一区二区三区| 美日韩一区二区三区| 国产一区二区三区免费播放| 国产夫妻精品视频| 粉嫩高潮美女一区二区三区| 成人动漫中文字幕| 91麻豆国产精品久久| 欧美亚洲综合久久| 91精品在线免费观看| 精品久久久久久久久久久院品网 | 国产麻豆精品在线观看| 国产乱码精品一区二区三| 国产不卡视频一区二区三区| 岛国精品在线观看| 色婷婷久久久亚洲一区二区三区| 色综合色综合色综合色综合色综合| 日韩一区二区在线观看视频| 精品福利一二区| 国产精品乱码人人做人人爱| 亚洲色图清纯唯美| 日本不卡123| 粉嫩av一区二区三区在线播放 | 日韩精品视频网| 国产成人亚洲综合a∨猫咪| 99精品久久久久久| 欧美另类久久久品| 国产日韩欧美亚洲| 亚洲一区二区在线观看视频 | 五月天亚洲精品| 国内久久精品视频| 在线看日韩精品电影| 精品88久久久久88久久久| 最好看的中文字幕久久| 蜜桃av一区二区三区电影| 不卡的av电影在线观看| 欧美一区二区三区在| 国产精品妹子av| 麻豆成人久久精品二区三区红| 大陆成人av片| 欧美一级xxx| 一区二区成人在线观看| 国产精品99久| 欧美一区二区三区在线电影| 亚洲欧洲综合另类| 国产乱国产乱300精品| 欧美日韩精品一区二区三区四区|