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

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

?? svm_learn.c

?? 支持向量機的c源代碼 比較全面具體
?? C
?? 第 1 頁 / 共 5 頁
字號:
    slack=(double *)my_malloc(sizeof(double)*(maxslackid+1));
    alphaslack=(double *)my_malloc(sizeof(double)*(maxslackid+1));
    for(i=0;i<=maxslackid;i++) {    /* init shared slacks */
      slack[i]=0;
      alphaslack[i]=0;
    }
    compute_shared_slacks(docs,label,a,lin,c,index2dnum,learn_parm,
			  slack,alphaslack);
    loss=0;
    model->at_upper_bound=0;
    svsetnum=0;
    for(i=0;i<=maxslackid;i++) {    /* create full index */
      loss+=slack[i];
      if(alphaslack[i] > (learn_parm->svm_c - learn_parm->epsilon_a)) 
	model->at_upper_bound++;
      if(alphaslack[i] > learn_parm->epsilon_a)
	svsetnum++;
    }
    free(index);
    free(index2dnum);
    free(slack);
    free(alphaslack);
  }
  
  if((verbosity>=1) && (!learn_parm->skip_final_opt_check)) {
    if(learn_parm->sharedslack) {
      printf("Number of SV: %ld\n",
	     model->sv_num-1);
      printf("Number of non-zero slack variables: %ld (out of %ld)\n",
	     model->at_upper_bound,svsetnum);
      fprintf(stdout,"L1 loss: loss=%.5f\n",loss);
    }
    else {
      upsupvecnum=0;
      for(i=1;i<model->sv_num;i++) {
	if(fabs(model->alpha[i]) >= 
	   (learn_parm->svm_cost[(model->supvec[i])->docnum]-
	    learn_parm->epsilon_a)) 
	  upsupvecnum++;
      }
      printf("Number of SV: %ld (including %ld at upper bound)\n",
	     model->sv_num-1,upsupvecnum);
      fprintf(stdout,"L1 loss: loss=%.5f\n",loss);
    }
    example_length=estimate_sphere(model,kernel_parm); 
    fprintf(stdout,"Norm of longest example vector: |x|=%.5f\n",
	    length_of_longest_document_vector(docs,totdoc,kernel_parm));
  }
  if(verbosity>=1) {
    printf("Number of kernel evaluations: %ld\n",kernel_cache_statistic);
  }
    
  if(alpha) {
    for(i=0;i<totdoc;i++) {    /* copy final alphas */
      alpha[i]=a[i];
    }
  }
 
  if(learn_parm->alphafile[0])
    write_alphas(learn_parm->alphafile,a,label,totdoc);
  
  shrink_state_cleanup(&shrink_state);
  free(label);
  free(unlabeled);
  free(inconsistent);
  free(c);
  free(a);
  free(lin);
  free(learn_parm->svm_cost);
}


long optimize_to_convergence(DOC **docs, long int *label, long int totdoc, 
			     long int totwords, LEARN_PARM *learn_parm, 
			     KERNEL_PARM *kernel_parm, 
			     KERNEL_CACHE *kernel_cache, 
			     SHRINK_STATE *shrink_state, MODEL *model, 
			     long int *inconsistent, long int *unlabeled, 
			     double *a, double *lin, double *c, 
			     TIMING *timing_profile, double *maxdiff, 
			     long int heldout, long int retrain)
     /* docs: Training vectors (x-part) */
     /* label: Training labels/value (y-part, zero if test example for
			      transduction) */
     /* totdoc: Number of examples in docs/label */
     /* totwords: Number of features (i.e. highest feature index) */
     /* laern_parm: Learning paramenters */
     /* kernel_parm: Kernel paramenters */
     /* kernel_cache: Initialized/partly filled Cache, if using a kernel. 
                      NULL if linear. */
     /* shrink_state: State of active variables */
     /* model: Returns learning result */
     /* inconsistent: examples thrown out as inconstistent */
     /* unlabeled: test examples for transduction */
     /* a: alphas */
     /* lin: linear component of gradient */
     /* c: right hand side of inequalities (margin) */
     /* maxdiff: returns maximum violation of KT-conditions */
     /* heldout: marks held-out example for leave-one-out (or -1) */
     /* retrain: selects training mode (1=regular / 2=holdout) */
{
  long *chosen,*key,i,j,jj,*last_suboptimal_at,noshrink;
  long inconsistentnum,choosenum,already_chosen=0,iteration;
  long misclassified,supvecnum=0,*active2dnum,inactivenum;
  long *working2dnum,*selexam;
  long activenum;
  double criterion,eq;
  double *a_old;
  long t0=0,t1=0,t2=0,t3=0,t4=0,t5=0,t6=0; /* timing */
  long transductcycle;
  long transduction;
  double epsilon_crit_org; 
  double bestmaxdiff;
  long   bestmaxdiffiter,terminate;

  double *selcrit;  /* buffer for sorting */        
  CFLOAT *aicache;  /* buffer to keep one row of hessian */
  double *weights;  /* buffer for weight vector in linear case */
  QP qp;            /* buffer for one quadratic program */

  epsilon_crit_org=learn_parm->epsilon_crit; /* save org */
  if(kernel_parm->kernel_type == LINEAR) {
    learn_parm->epsilon_crit=2.0;
    kernel_cache=NULL;   /* caching makes no sense for linear kernel */
  } 
  learn_parm->epsilon_shrink=2;
  (*maxdiff)=1;

  learn_parm->totwords=totwords;

  chosen = (long *)my_malloc(sizeof(long)*totdoc);
  last_suboptimal_at = (long *)my_malloc(sizeof(long)*totdoc);
  key = (long *)my_malloc(sizeof(long)*(totdoc+11)); 
  selcrit = (double *)my_malloc(sizeof(double)*totdoc);
  selexam = (long *)my_malloc(sizeof(long)*totdoc);
  a_old = (double *)my_malloc(sizeof(double)*totdoc);
  aicache = (CFLOAT *)my_malloc(sizeof(CFLOAT)*totdoc);
  working2dnum = (long *)my_malloc(sizeof(long)*(totdoc+11));
  active2dnum = (long *)my_malloc(sizeof(long)*(totdoc+11));
  qp.opt_ce = (double *)my_malloc(sizeof(double)*learn_parm->svm_maxqpsize);
  qp.opt_ce0 = (double *)my_malloc(sizeof(double));
  qp.opt_g = (double *)my_malloc(sizeof(double)*learn_parm->svm_maxqpsize
				 *learn_parm->svm_maxqpsize);
  qp.opt_g0 = (double *)my_malloc(sizeof(double)*learn_parm->svm_maxqpsize);
  qp.opt_xinit = (double *)my_malloc(sizeof(double)*learn_parm->svm_maxqpsize);
  qp.opt_low=(double *)my_malloc(sizeof(double)*learn_parm->svm_maxqpsize);
  qp.opt_up=(double *)my_malloc(sizeof(double)*learn_parm->svm_maxqpsize);
  weights=(double *)my_malloc(sizeof(double)*(totwords+1));

  choosenum=0;
  inconsistentnum=0;
  transductcycle=0;
  transduction=0;
  if(!retrain) retrain=1;
  iteration=1;
  bestmaxdiffiter=1;
  bestmaxdiff=999999999;
  terminate=0;

  if(kernel_cache) {
    kernel_cache->time=iteration;  /* for lru cache */
    kernel_cache_reset_lru(kernel_cache);
  }

  for(i=0;i<totdoc;i++) {    /* various inits */
    chosen[i]=0;
    a_old[i]=a[i];
    last_suboptimal_at[i]=1;
    if(inconsistent[i]) 
      inconsistentnum++;
    if(unlabeled[i]) {
      transduction=1;
    }
  }
  activenum=compute_index(shrink_state->active,totdoc,active2dnum);
  inactivenum=totdoc-activenum;
  clear_index(working2dnum);

                            /* repeat this loop until we have convergence */
  for(;retrain && (!terminate);iteration++) {

    if(kernel_cache)
      kernel_cache->time=iteration;  /* for lru cache */
    if(verbosity>=2) {
      printf(
	"Iteration %ld: ",iteration); fflush(stdout);
    }
    else if(verbosity==1) {
      printf("."); fflush(stdout);
    }

    if(verbosity>=2) t0=get_runtime();
    if(verbosity>=3) {
      printf("\nSelecting working set... "); fflush(stdout); 
    }

    if(learn_parm->svm_newvarsinqp>learn_parm->svm_maxqpsize) 
      learn_parm->svm_newvarsinqp=learn_parm->svm_maxqpsize;

    i=0;
    for(jj=0;(j=working2dnum[jj])>=0;jj++) { /* clear working set */
      if((chosen[j]>=(learn_parm->svm_maxqpsize/
		      minl(learn_parm->svm_maxqpsize,
			   learn_parm->svm_newvarsinqp))) 
	 || (inconsistent[j])
	 || (j == heldout)) {
	chosen[j]=0; 
	choosenum--; 
      }
      else {
	chosen[j]++;
	working2dnum[i++]=j;
      }
    }
    working2dnum[i]=-1;

    if(retrain == 2) {
      choosenum=0;
      for(jj=0;(j=working2dnum[jj])>=0;jj++) { /* fully clear working set */
	chosen[j]=0; 
      }
      clear_index(working2dnum);
      for(i=0;i<totdoc;i++) { /* set inconsistent examples to zero (-i 1) */
	if((inconsistent[i] || (heldout==i)) && (a[i] != 0.0)) {
	  chosen[i]=99999;
	  choosenum++;
	  a[i]=0;
	}
      }
      if(learn_parm->biased_hyperplane) {
	eq=0;
	for(i=0;i<totdoc;i++) { /* make sure we fulfill equality constraint */
	  eq+=a[i]*label[i];
	}
	for(i=0;(i<totdoc) && (fabs(eq) > learn_parm->epsilon_a);i++) {
	  if((eq*label[i] > 0) && (a[i] > 0)) {
	    chosen[i]=88888;
	    choosenum++;
	    if((eq*label[i]) > a[i]) {
	      eq-=(a[i]*label[i]);
	      a[i]=0;
	    }
	    else {
	      a[i]-=(eq*label[i]);
	      eq=0;
	    }
	  }
	}
      }
      compute_index(chosen,totdoc,working2dnum);
    }
    else {      /* select working set according to steepest gradient */
      if(iteration % 101) {
        already_chosen=0;
	if((minl(learn_parm->svm_newvarsinqp,
		 learn_parm->svm_maxqpsize-choosenum)>=4) 
	   && (kernel_parm->kernel_type != LINEAR)) {
	  /* select part of the working set from cache */
	  already_chosen=select_next_qp_subproblem_grad(
			      label,unlabeled,a,lin,c,totdoc,
			      (long)(minl(learn_parm->svm_maxqpsize-choosenum,
					  learn_parm->svm_newvarsinqp)
				     /2),
			      learn_parm,inconsistent,active2dnum,
			      working2dnum,selcrit,selexam,kernel_cache,1,
			      key,chosen);
	  choosenum+=already_chosen;
	}
	choosenum+=select_next_qp_subproblem_grad(
                              label,unlabeled,a,lin,c,totdoc,
                              minl(learn_parm->svm_maxqpsize-choosenum,
				   learn_parm->svm_newvarsinqp-already_chosen),
                              learn_parm,inconsistent,active2dnum,
			      working2dnum,selcrit,selexam,kernel_cache,0,key,
			      chosen);
      }
      else { /* once in a while, select a somewhat random working set
		to get unlocked of infinite loops due to numerical
		inaccuracies in the core qp-solver */
	choosenum+=select_next_qp_subproblem_rand(
                              label,unlabeled,a,lin,c,totdoc,
                              minl(learn_parm->svm_maxqpsize-choosenum,
				   learn_parm->svm_newvarsinqp),
                              learn_parm,inconsistent,active2dnum,
			      working2dnum,selcrit,selexam,kernel_cache,key,
			      chosen,iteration);
      }
    }

    if(verbosity>=2) {
      printf(" %ld vectors chosen\n",choosenum); fflush(stdout); 
    }

    if(verbosity>=2) t1=get_runtime();

    if(kernel_cache) 
      cache_multiple_kernel_rows(kernel_cache,docs,working2dnum,
				 choosenum,kernel_parm); 
    
    if(verbosity>=2) t2=get_runtime();
    if(retrain != 2) {
      optimize_svm(docs,label,unlabeled,inconsistent,0.0,chosen,active2dnum,
		   model,totdoc,working2dnum,choosenum,a,lin,c,learn_parm,
		   aicache,kernel_parm,&qp,&epsilon_crit_org);
    }

    if(verbosity>=2) t3=get_runtime();
    update_linear_component(docs,label,active2dnum,a,a_old,working2dnum,totdoc,
			    totwords,kernel_parm,kernel_cache,lin,aicache,
			    weights);

    if(verbosity>=2) t4=get_runtime();
    supvecnum=calculate_svm_model(docs,label,unlabeled,lin,a,a_old,c,
		                  learn_parm,working2dnum,active2dnum,model);

    if(verbosity>=2) t5=get_runtime();

    /* The following computation of the objective function works only */
    /* relative to the active variables */
    if(verbosity>=3) {
      criterion=compute_objective_function(a,lin,c,learn_parm->eps,label,
		                           active2dnum);
      printf("Objective function (over active variables): %.16f\n",criterion);
      fflush(stdout); 
    }

    for(jj=0;(i=working2dnum[jj])>=0;jj++) {
      a_old[i]=a[i];
    }

    if(retrain == 2) {  /* reset inconsistent unlabeled examples */
      for(i=0;(i<totdoc);i++) {
	if(inconsistent[i] && unlabeled[i]) {
	  inconsistent[i]=0;
	  label[i]=0;
	}
      }
    }

    retrain=check_optimality(model,label,unlabeled,a,lin,c,totdoc,learn_parm,
			     maxdiff,epsilon_crit_org,&misclassified,
			     inconsistent,active2dnum,last_suboptimal_at,
			     iteration,kernel_parm);

    if(verbosity>=2) {
      t6=get_runtime();
      timing_profile->time_select+=t1-t0;
      timing_profile->time_kernel+=t2-t1;
      timing_profile->time_opti+=t3-t2;
      timing_profile->time_update+=t4-t3;
      timing_profile->time_model+=t5-t4;
      timing_profile->time_check+=t6-t5;
    }

    /* checking whether optimizer got stuck */
    if((*maxdiff) < bestmaxdiff) {
      bestmaxdiff=(*maxdiff);
      bestmaxdiffiter=iteration;
    }
    if(iteration > (bestmaxdiffiter+learn_parm->maxiter)) { 
      /* long time no progress? */
      terminate=1;
      retrain=0;
      if(verbosity>=1) 
	printf("\nWARNING: Relaxing KT-Conditions due to slow progress! Terminating!\n");
    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品丝袜在线| 国产美女精品人人做人人爽| 美女网站在线免费欧美精品| 国产99久久久国产精品| 欧美日韩精品系列| 国产精品嫩草久久久久| 麻豆国产精品一区二区三区| 色婷婷综合久久久| 国产精品情趣视频| 久久国产精品一区二区| 欧美日韩不卡视频| 一区二区三区欧美日| 不卡一区中文字幕| 2024国产精品| 蜜桃视频第一区免费观看| 在线免费观看日本欧美| 国产精品进线69影院| 国产成人免费网站| 欧美精品一区二区三区四区| 图片区小说区区亚洲影院| 色视频一区二区| 亚洲欧美综合在线精品| 国产成人综合亚洲91猫咪| 日韩欧美一二三| 香蕉成人伊视频在线观看| 欧美性xxxxxx少妇| 一区二区三区四区激情| 日本福利一区二区| 亚洲乱码中文字幕综合| 99久久精品免费看国产| 国产精品美女www爽爽爽| 国产成人综合视频| 国产欧美精品国产国产专区| 国产剧情一区在线| 国产午夜亚洲精品理论片色戒| 久久99精品久久久久久| 日韩久久久精品| 丁香一区二区三区| 精品国产乱码久久久久久牛牛| 蜜臀国产一区二区三区在线播放| 日韩视频免费观看高清完整版在线观看 | 精品一区二区三区香蕉蜜桃| 日韩欧美成人一区二区| 国产在线精品免费| 国产精品亲子伦对白| 99久久久久久| 婷婷久久综合九色综合绿巨人| 欧美一二三四区在线| 麻豆成人综合网| 久久丝袜美腿综合| 成人app软件下载大全免费| 亚洲视频一区在线观看| 色8久久精品久久久久久蜜| 亚洲一区二区四区蜜桃| 精品视频1区2区3区| 久久精品999| 中文字幕一区二区三区不卡在线| 色婷婷久久综合| 老司机精品视频导航| 国产欧美综合在线观看第十页| 色天使久久综合网天天| 美女网站一区二区| 国产精品久久久久久久久免费丝袜| 一本一本大道香蕉久在线精品| 午夜精品久久久久久不卡8050| 精品日韩欧美在线| 成人h动漫精品一区二| 亚洲1区2区3区4区| 国产网站一区二区三区| 欧美性感一类影片在线播放| 黄色日韩网站视频| 亚洲在线视频一区| 亚洲精品一区二区三区福利| 91蜜桃免费观看视频| 免费成人你懂的| 亚洲丝袜美腿综合| www欧美成人18+| 日本乱码高清不卡字幕| 国产在线日韩欧美| 亚洲一区二区三区视频在线 | 一色屋精品亚洲香蕉网站| 欧美曰成人黄网| 懂色av一区二区夜夜嗨| 舔着乳尖日韩一区| 亚洲特级片在线| 久久一夜天堂av一区二区三区| 欧美无乱码久久久免费午夜一区| 国产一区二区三区国产| 亚洲成人先锋电影| 亚洲男同1069视频| 国产精品三级av在线播放| 日韩三级在线观看| 欧美日韩亚洲综合| 一本色道**综合亚洲精品蜜桃冫| 国产精品亚洲一区二区三区妖精| 天天亚洲美女在线视频| 一区二区三区鲁丝不卡| 17c精品麻豆一区二区免费| 国产无遮挡一区二区三区毛片日本| 制服丝袜成人动漫| 欧美在线观看视频一区二区 | 成人免费黄色在线| 国产一区二区三区综合| 老司机精品视频线观看86| 日韩av不卡一区二区| 性欧美疯狂xxxxbbbb| 亚洲国产精品一区二区尤物区| 亚洲精品欧美激情| 一区二区三区影院| 夜夜夜精品看看| 亚洲一区中文日韩| 亚洲午夜久久久久| 亚洲国产一区视频| 亚洲成年人网站在线观看| 亚洲成精国产精品女| 午夜日韩在线观看| 美日韩黄色大片| 国内精品久久久久影院薰衣草 | 男女男精品视频网| 蜜桃视频一区二区| 紧缚奴在线一区二区三区| 狠狠色狠狠色综合| 国产a区久久久| 91在线精品一区二区三区| 99久久精品国产麻豆演员表| 91网页版在线| 在线观看国产一区二区| 在线成人小视频| 欧美成人一级视频| 欧美高清在线精品一区| 中文字幕在线不卡国产视频| 亚洲三级在线观看| 亚洲bt欧美bt精品777| 久久精品噜噜噜成人88aⅴ | 国产精品久久久一本精品| 亚洲色图一区二区| 天天色综合天天| 国产精品自拍一区| 91视频免费播放| 91精品国产一区二区| 久久久国产综合精品女国产盗摄| 亚洲国产精品成人综合色在线婷婷 | 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 欧美三级三级三级爽爽爽| 日韩免费看的电影| 国产精品麻豆视频| 高清视频一区二区| 欧美无乱码久久久免费午夜一区| 欧美一级日韩免费不卡| 中文字幕av资源一区| 亚洲成人av中文| 国产精品2024| 欧美日韩一级黄| 中文字幕欧美日韩一区| 亚洲国产精品一区二区尤物区| 黄色日韩三级电影| 欧美亚洲国产bt| 国产日韩欧美在线一区| 天堂一区二区在线免费观看| 国产乱码一区二区三区| 欧美三级电影在线观看| 国产女人18毛片水真多成人如厕| 亚洲成在人线免费| 成人av在线电影| 日韩精品最新网址| 亚洲午夜在线视频| jlzzjlzz欧美大全| 精品国产免费一区二区三区香蕉| 亚洲欧美日韩人成在线播放| 韩日精品视频一区| 欧美精选一区二区| 亚洲男帅同性gay1069| 国产成人日日夜夜| 精品久久久久久久久久久久包黑料| 亚洲三级免费观看| 国产麻豆精品一区二区| 欧美精品自拍偷拍动漫精品| 欧美激情在线看| 久草这里只有精品视频| 欧美二区在线观看| 亚洲伊人色欲综合网| av中文字幕不卡| 中文一区在线播放| 国产一区二区0| 日韩精品最新网址| 美洲天堂一区二卡三卡四卡视频| 欧洲精品一区二区| 亚洲欧美激情小说另类| www.色精品| 国产精品丝袜黑色高跟| 国产精品一区二区三区四区| 日韩西西人体444www| 天使萌一区二区三区免费观看| 91久久久免费一区二区| 中文字幕五月欧美| 91视频国产观看| 亚洲乱码国产乱码精品精的特点 | 国产高清不卡一区| 久久久久9999亚洲精品| 国产精品亚洲午夜一区二区三区|