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

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

?? empder_search.m

?? The kernel-ica package is a Matlab program that implements the Kernel ICA algorithm for independent
?? M
字號:
function [Jopt,Wopt,OptDetails] = empder_search(contrast,x,W,kparam,optparam)

% EMPDER_SEARCH - Steepest descent method for finding a minima in the
%                 Stiefel manifold of orthogonal matrices, using empirical
%                 derivatives. Data are assumed whitened. The output is such 
%                 that Wopt*x are the independent sources.

%
% contrast   - used contrast function, 'kcca' or 'kgv'
% x          - data (mixtures)
% w          - orthogonal matric, starting point of the search
% kparam     - contrast parameters, see contrast_ica.m for details
% optparam   - optimization parameters
%                  tolW    : precision in amari distance in input space
%                  tolJ    : precision in objective function
%                  maxit   : maximum number of iterations
%                  type    : 'steepest' or 'conjugate'
%                  verbose : 1 if verbose required.

% OptDetails - optional output, with debugging details

% Copyright (c) Francis R. Bach, 2002.

% initializations
W=W'; % we work with transposed demixing matrices
if (nargout>2), details=1; else details=0; end
tolW=optparam.tolW;
tolJ=optparam.tolJ;
maxit=optparam.maxit;
type=optparam.type;
verbose=optparam.verbose;
tmin=1;
iter = 0;
errW = tolW*2;
errJ = tolJ*2;
m=size(W,1);
fret = contrast_ica(contrast,W'*x,kparam);
totalneval=1;
transgradJ=0;

% starting minimization
while (((errW > tolW)|(errJ > tolJ*fret)) & (iter < maxit)  )
   Jold=fret;
   iter=iter+1;
   if (verbose), fprintf('iter %d, J=%.3f',iter,fret); end
   
   % calculate derivative
   [J0,gradJ]=contrast_emp_grad(contrast,x,kparam,W);
   iterneval=m*(m-1)/2+1;
   normgradJ=sqrt(.5*trace(gradJ'*gradJ));
   
   % calculate search direction (different if using conjugate gradient)
   switch (type)
   case 'steepest'
      dirSearch=gradJ; 
      normdirSearch=sqrt(.5*trace(gradJ'*gradJ));
   case 'conjugate'
      if (iter>1)
         % option 1 : gammak=.5*trace((gradJ-oldgradJtransported)'*gradJ)/oldnormgradJ;
         % option 2 :
         gammak=.5*trace((gradJ'*gradJ))/oldnormgradJ;
         gammak=min([gammak; .25]);
         dirSearch=gradJ+gammak*olddirSearchtransported;
         normdirSearch=sqrt(.5*trace(gradJ'*gradJ));
      else
         dirSearch=gradJ; 
         normdirSearch=sqrt(.5*trace(gradJ'*gradJ));
         
      end
   end
   
   % bracketing the minimum along the geodesic and performs golden search
   [ ax, bx, cx,fax,fbx,fcx,neval] = bracket_min(contrast,W,dirSearch,x,kparam,0,tmin,Jold);
   iterneval=iterneval+neval;
   goldTol=max(abs([tolW/normdirSearch, mean([ ax, bx, cx])/10]));
   [tmin, Jmin,neval] = golden_search(contrast,W,dirSearch,x,kparam, ax, bx, cx,goldTol,20);
   iterneval=iterneval+neval;
   if (verbose)
      fprintf(', dJ= %.1e',Jold-Jmin);
      fprintf(', dW= %.3f, neval=%d\n',tmin*normdirSearch,iterneval);
   end
   totalneval=totalneval+iterneval;
   oldtransgradJ=transgradJ;
   [Wnew,newdirSearchtransported]=stiefel_geod(W,dirSearch,tmin);  
   if isequal(type,'conjugate')
      oldgradJtransported=stiefel_transport(W,dirSearch,tmin,gradJ);
   end
   oldnormgradJ=sqrt(.5*trace(gradJ'*gradJ));
   
   errW=amari_distance(W,Wnew)*(m-1);
   
   if (details)
      % debugging details
      OptDetails.Ws{iter}=W;
      OptDetails.Js(iter)=J0;
      OptDetails.numeval(iter)=totalneval;
      OptDetails.numgoldit(iter)=neval;
      OptDetails.ts(iter)=tmin;
      OptDetails.normdirsearch(iter)=normdirSearch;
      OptDetails.normgrad(iter)=oldnormgradJ;
      OptDetails.amaridist(iter)=errW;
      OptDetails.geoddist(iter)=tmin*normdirSearch;
      if (iter>1)
         OptDetails.oldgrad_vs_searchangle(iter)=stiefel_angle(dirSearch,olddirSearchtransported); 
         if isequal(type,'conjugate')
            OptDetails.gammas(iter)=gammak;
            OptDetails.grad_vs_searchangle(iter)=stiefel_angle(dirSearch,gradJ);
         end
      end
   end
   
   olddirSearchtransported=newdirSearchtransported;
   errJ=Jold-Jmin;
   if (errJ>0) 
      W=Wnew;
      fret=Jmin;
   end
   
end

Jopt= fret;
Wopt=W'; % go back to non transposed matrices

if (details)
   OptDetails.totalneval=totalneval;
end




%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function ang=stiefel_angle(D1,D2)

% STIEFEL_ANGLE - calculate the angle between two tangent vectors (Stiefel
%                 manifold)

% Copyright (c) Francis R. Bach, 2002.

N1= .5*trace(D1'*D1);
N2= .5*trace(D2'*D2);
ang=.5*trace(D1'*D2)/sqrt(N1*N2);



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


function [Wt,Ht]=stiefel_geod(W,H,t)

% STIEFEL_GEOD - parameterizes a geodesic along a Stiefel manifold

% W  - origin of the geodesic
% H  - tangent vector
% Ht - tangent vector at "arrival"

% Copyright (c) Francis R. Bach, 2002.


if nargin <3, t=1; end
A=W'*H; A=(A-A')/2;
MN=expm(t*A);
Wt=W*MN;
if nargout > 1, Ht=H*MN; end



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function deltat=stiefel_transport(W,H,t,delta)

% STIEFEL_TRANSPORT - Transport a tangent vector along a geodesic (Stiefel
%                     manifold), used for conjugate gradient search

% W       - origin of the geodesic
% H       - tangent vector, direction of the geodesic
% delta   - vector to be transported

% deltat  - transported vector at "arrival"

% Copyright (c) Francis R. Bach, 2002.

[m,r]=size(W);
if nargin <3, t=1; end
A=W'*H; A=(A-A')/2;

M=expm(t*A/2);
deltat=W*M*W'*delta*M;


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function [xmin,fmin,neval] = golden_search(contrast,W,dirT,x,kparam,ax,bx,cx,tol,maxiter)

% GOLDEN_SEARCH - Minimize contrast function along a geodesic of the Stiefel
%                 manifold using golden section search.
%
% contrast       - contrast function used, 'kcca' or 'kgv'
% x              - mixed components
% kparam         - contrast parameters, with following fields
%                        sigmas - kernel widths (one per component)
%                        kappas - regularization parameters (one per component)
%                        etas   - incomplete Cholesky tolerance (one per component)
%
% dirT           - direction of the geodesic
% ax,bx,cx       - three abcissas such that the minimum is bracketed between ax and cx,
%                  as given by bracket_mini.m
% tol            - relative accuracy of the search
% maxit          - maximum number of iterations

% neval          - outputs the number of evaluation of the contrast function


neval=0;
% golden ratios
C = (3-sqrt(5))/2;
R = 1-C;

x0 = ax;
x3 = cx;

% gets the smaller segment
if (abs(cx-bx) > abs(bx-ax)),
   x1 = bx;
   x2 = bx + C*(cx-bx);
else
   x2 = bx;
   x1 = bx - C*(bx-ax);
end
Wtemp=stiefel_geod(W,dirT,x1);
f1=contrast_ica(contrast,Wtemp'*x,kparam);
neval=neval+1;
Wtemp=stiefel_geod(W,dirT,x2);
f2=contrast_ica(contrast,Wtemp'*x,kparam);
neval=neval+1;
k = 1;

% starts iterations
while ((abs(x3-x0) > tol) & (k<maxiter)), 
   if f2 < f1,
      x0 = x1;
      x1 = x2;
      x2 = R*x1 + C*x3;   
      f1 = f2;
      Wtemp=stiefel_geod(W,dirT,x2);
      f2=contrast_ica(contrast,Wtemp'*x,kparam);
      neval=neval+1;
   else
      x3 = x2;
      x2 = x1;
      x1 = R*x2 + C*x0;  
      f2 = f1;
      Wtemp=stiefel_geod(W,dirT,x1);
      f1=contrast_ica(contrast,Wtemp'*x,kparam);
      neval=neval+1;
   end
   k = k+1;
end

% best of the two possible
if f1 < f2,
   xmin = x1;
   fmin = f1;
else
   xmin = x2;
   fmin = f2;
end



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function [ ax, bx, cx,fax,fbx,fcx,neval] = bracket_min(contrast,W,dirT,x,kparam, ax, bx,fax)

% BRACKET_MIN - Brackets a minimum by searching in both directions along a geodesic in
%               the Stiefel manifold

% contrast       - contrast function used, 'kcca' or 'kgv'
% x              - mixed components
% kparam         - contrast parameters, with following fields
%                        sigmas - kernel widths (one per component)
%                        kappas - regularization parameters (one per component)
%                        etas   - incomplete Cholesky tolerance (one per component)
%
% dirT           - direction of the geodesic
% ax,bx          - Initial guesses
% tol            - relative accuracy of the search
% maxit          - maximum number of iterations

% neval          - outputs the number of evaluation of the contrast function


neval=0;
GOLD=1.618034;
TINY=1e-10;
GLIMIT=100;
Wtemp=stiefel_geod(W,dirT,bx);
fbx=contrast_ica(contrast,Wtemp'*x,kparam);

neval=neval+1;

if (fbx > fax)   
   temp=ax;
   ax=bx;
   bx=temp;
   temp=fax;
   fax=fbx;
   fbx=temp;
end

cx=(bx)+GOLD*(bx-ax);
Wtemp=stiefel_geod(W,dirT,cx);
fcx=contrast_ica(contrast,Wtemp'*x,kparam);

neval=neval+1;

while (fbx > fcx) 
   
   r=(bx-ax)*(fbx-fcx);
   q=(bx-cx)*(fbx-fax);
   u=(bx)-((bx-cx)*q-(bx-ax)*r)/(2.0*max([abs(q-r),TINY])*sign(q-r));
   ulim=(bx)+GLIMIT*(cx-bx);
   if ((bx-u)*(u-cx) > 0.0)
      Wtemp=stiefel_geod(W,dirT,u);
      fux=contrast_ica(contrast,Wtemp'*x,kparam);
      
      neval=neval+1;
      
      if (fux < fcx) 
         ax=(bx);
         bx=u;
         fax=(fbx);
         fbx=fux;
         return;
      else 
         if (fux > fbx) 
            cx=u;
            fcx=fux;
            return;
         end
      end
      
      u=(cx)+GOLD*(cx-bx);
      Wtemp=stiefel_geod(W,dirT,u);
      fux=contrast_ica(contrast,Wtemp'*x,kparam);
      neval=neval+1;
      
   else 
      if ((cx-u)*(u-ulim) > 0.0) 
         Wtemp=stiefel_geod(W,dirT,u);
         fux=contrast_ica(contrast,Wtemp'*x,kparam);
         neval=neval+1;
         
         if (fux < fcx) 
            bx=cx;
            cx=u;
            u=cx+GOLD*(cx-bx);
            
            fbx=fcx;
            fcx=fux;
            Wtemp=stiefel_geod(W,dirT,u);
            fux=contrast_ica(contrast,Wtemp'*x,kparam);
         end
      else 
         if ((u-ulim)*(ulim-cx) >= 0.0) 
            
            u=ulim;
            Wtemp=stiefel_geod(W,dirT,u);
            fux=contrast_ica(contrast,Wtemp'*x,kparam);
            neval=neval+1;
            
         else 
            u=(cx)+GOLD*(cx-bx);
            Wtemp=stiefel_geod(W,dirT,u);
            fux=contrast_ica(contrast,Wtemp'*x,kparam);
            neval=neval+1;
            
         end
      end
   end
   
   ax=bx;
   bx=cx;
   cx=u;
   
   fax=fbx;
   fbx=fcx;
   fcx=fux;
   
end


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
处破女av一区二区| 东方aⅴ免费观看久久av| 91精品久久久久久久91蜜桃| 久久99精品久久久久婷婷| 国产精品午夜春色av| 欧美三级视频在线观看 | 国产麻豆91精品| 亚洲欧美一区二区三区国产精品| 欧美一级黄色大片| 99精品国产热久久91蜜凸| 丝袜美腿亚洲一区二区图片| 欧美极品美女视频| 亚洲自拍偷拍图区| 欧美一区二区三区不卡| 99久久精品费精品国产一区二区| 热久久久久久久| 亚洲三级在线免费观看| 26uuu久久天堂性欧美| 欧美吻胸吃奶大尺度电影| 国产成人精品免费看| 日韩国产成人精品| 亚洲综合色网站| 欧美国产丝袜视频| 日韩欧美一区在线| 欧美三级电影网| 91一区在线观看| 国产69精品久久777的优势| 琪琪一区二区三区| 亚洲成人av一区二区三区| 亚洲国产高清不卡| www日韩大片| 欧美一区二区三区在| 欧美性色综合网| 91老司机福利 在线| 国产91精品一区二区麻豆亚洲| 美女看a上一区| 色哟哟一区二区三区| 成人黄动漫网站免费app| 韩国一区二区在线观看| 蜜臀av性久久久久av蜜臀妖精| 亚洲已满18点击进入久久| 国产精品国产三级国产aⅴ中文 | 亚洲人成小说网站色在线| 久久麻豆一区二区| 日韩免费高清av| 欧美一区二区在线播放| 欧美另类久久久品| 欧美日韩精品一区二区| 91国在线观看| 欧洲亚洲精品在线| 91福利在线播放| 91国偷自产一区二区三区观看 | 欧美精品777| 欧美无乱码久久久免费午夜一区 | 日韩av中文在线观看| 亚洲一区二区三区中文字幕在线| 亚洲免费视频中文字幕| 成人免费在线观看入口| 最近中文字幕一区二区三区| 亚洲图片你懂的| 亚洲天堂精品视频| 亚洲视频在线一区二区| 一区二区欧美视频| 亚洲h在线观看| 日韩激情在线观看| 久久99精品久久久久久国产越南| 久久99精品久久久久久动态图| 久久97超碰色| 欧美成人一区二区| 欧美mv日韩mv国产网站app| 欧美成人乱码一区二区三区| 日韩精品一区国产麻豆| 亚洲精品一区二区三区蜜桃下载 | 一区二区三区在线播放| 亚洲精品国久久99热| 亚洲综合男人的天堂| 婷婷国产v国产偷v亚洲高清| 美日韩一区二区| 国产精品夜夜嗨| 99精品视频一区二区| 欧美亚洲日本一区| 日韩视频永久免费| 国产亚洲欧美一区在线观看| 自拍偷拍欧美激情| 五月天一区二区| 激情国产一区二区 | 在线观看区一区二| 欧美夫妻性生活| 久久精品综合网| 一区二区三区丝袜| 美女网站色91| 9色porny自拍视频一区二区| 欧美三级韩国三级日本一级| 日韩一区二区电影网| 国产精品国产三级国产普通话99| 亚洲电影你懂得| 国产美女主播视频一区| 色综合久久中文字幕| 91精品欧美综合在线观看最新| 国产日韩欧美综合在线| 一区二区激情小说| 激情综合网天天干| 91网址在线看| 精品国产网站在线观看| 亚洲激情图片小说视频| 精品一区精品二区高清| 91在线视频观看| 精品国产一区二区三区忘忧草| 国产精品久久久久永久免费观看 | 欧美亚洲图片小说| 久久色成人在线| 亚洲一二三区在线观看| 国产传媒欧美日韩成人| 欧美日韩综合色| 国产精品美女久久久久久久久 | 国产一区视频在线看| 色婷婷综合在线| 久久久久亚洲蜜桃| 日韩和的一区二区| 成人av一区二区三区| 日韩欧美美女一区二区三区| 亚洲激情六月丁香| 大桥未久av一区二区三区中文| 制服丝袜日韩国产| 亚洲男同1069视频| 成人少妇影院yyyy| 精品噜噜噜噜久久久久久久久试看| 亚洲精品国产一区二区三区四区在线| 国产在线播放一区三区四| 欧美伦理影视网| 亚洲黄色录像片| 99久久精品久久久久久清纯| 久久久精品影视| 激情综合色播激情啊| 91精品国产综合久久精品性色| 亚洲另类在线一区| 成人av在线影院| 国产免费久久精品| 国产剧情av麻豆香蕉精品| 日韩一级完整毛片| 爽好多水快深点欧美视频| 91国内精品野花午夜精品| 一区二区中文视频| 成人av资源在线观看| 国产欧美一区二区三区在线看蜜臀| 麻豆一区二区99久久久久| 91精品国产高清一区二区三区蜜臀| 夜夜爽夜夜爽精品视频| 色婷婷综合激情| 亚洲同性gay激情无套| 99精品国产99久久久久久白柏| 欧美国产精品一区二区三区| 国内精品国产成人国产三级粉色 | 日韩一卡二卡三卡| 婷婷综合五月天| 欧美日韩国产一级| 偷窥国产亚洲免费视频| 欧美精品丝袜久久久中文字幕| 亚洲成人福利片| 91麻豆精品国产91久久久使用方法| 香蕉久久夜色精品国产使用方法| 日本韩国一区二区三区视频| 亚洲综合偷拍欧美一区色| 欧美午夜在线一二页| 亚洲高清免费视频| 91精品国产一区二区三区| 人人超碰91尤物精品国产| 欧美大片免费久久精品三p| 久久99精品久久久久久动态图| 日韩欧美国产午夜精品| 极品美女销魂一区二区三区| 久久精品人人做| 成人精品电影在线观看| 亚洲男同1069视频| 欧美日韩情趣电影| 蜜桃久久av一区| 国产欧美日韩麻豆91| 99精品视频一区二区| 一区二区三区资源| 制服.丝袜.亚洲.中文.综合| 九九九久久久精品| 国产免费成人在线视频| 色综合久久久网| 丝袜脚交一区二区| 久久众筹精品私拍模特| 99免费精品在线| 午夜久久久久久电影| 亚洲精品一区二区三区影院| 成人av在线观| 亚洲成a人v欧美综合天堂 | 亚洲综合激情另类小说区| 欧美日韩国产高清一区| 乱一区二区av| 国产精品剧情在线亚洲| 精品视频在线看| 国产成人综合视频| 亚洲综合图片区| 2017欧美狠狠色| 日本伦理一区二区| 久久99蜜桃精品|