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

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

?? svm_c.cpp

?? mySvm的最新源程序
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
#include "svm_c.h"/** * * svm_c * */svm_c::svm_c(){  // initialise arrays  sum =0;  primal=0;  which_alpha = 0;  lambda_eq=0;  sum_alpha = 0;  at_bound=0;  all_alphas=0;  all_ys=0;  working_set=0;  working_set_values=0;  time_init=0;  time_optimize=0;  time_convergence=0;  time_update=0;  time_calc=0;  qp.m = 1;};void svm_c::init(kernel_c* new_kernel, parameters_c* new_parameters){  sum =0;  primal=0;  which_alpha = 0;  lambda_eq=0;  at_bound=0;  target_count=0;  kernel = new_kernel;  parameters = new_parameters;  Cpos = parameters->get_Cpos();  Cneg = parameters->get_Cneg();  is_zero = parameters->is_zero;   is_pattern = parameters->is_pattern;  epsilon_pos = parameters->epsilon_pos;  epsilon_neg = parameters->epsilon_neg;  working_set_size = parameters->working_set_size;  sum_alpha = 0;  convergence_epsilon = parameters->convergence_epsilon;  feasible_epsilon = convergence_epsilon;  shrink_const = parameters->shrink_const;  time_init=0;  time_optimize=0;  time_convergence=0;  time_update=0;  time_calc=0;  qp.m = 1;  biased = parameters->biased;};void svm_c::init_optimizer(){  if(0 != sum) delete []sum;  if(0 != which_alpha) delete []which_alpha;  if(0 != at_bound) delete []at_bound;  sum = new SVMFLOAT[examples_total];  at_bound = new SVMINT[examples_total];  // init variables  if(working_set_size>examples_total) working_set_size = examples_total;  qp.n = working_set_size;  qp.c = new SVMFLOAT[qp.n];  qp.H = new SVMFLOAT[qp.n*qp.n];  qp.A = new SVMFLOAT[qp.n];  qp.b = new SVMFLOAT[qp.m];  qp.l = new SVMFLOAT[qp.n];  qp.u = new SVMFLOAT[qp.n];  if(! biased){    qp.m = 0;  };  which_alpha = new SVMINT[working_set_size];  primal = new SVMFLOAT[qp.n];  // reserve workspace for calculate_working_set  working_set = new SVMINT[working_set_size];  working_set_values = new SVMFLOAT[working_set_size];  if(parameters->do_scale_y){    epsilon_pos /= examples->get_y_var();    epsilon_neg /= examples->get_y_var();  };  SVMINT i;  //      qp.l[i] = 0 done in svm_pattern_c::  for(i=0;i<working_set_size;i++){    qp.l[i] = -is_zero;   };  // Cpos /= (SVMFLOAT)examples_total;  // Cneg /= (SVMFLOAT)examples_total;  if(parameters->quadraticLossPos){    Cpos = infinity;  };  if(parameters->quadraticLossNeg){    Cneg = infinity;  };  //  sigfig_max = -log10(is_zero);  lambda_WS = 0;  to_shrink=0;  smo.init(parameters->is_zero,parameters->convergence_epsilon,working_set_size*working_set_size);};void svm_c::exit_optimizer(){  delete [](qp.c);  delete [](qp.H);  delete [](qp.A);  delete [](qp.b);  delete [](qp.l);  delete [](qp.u);  delete []primal;  delete []working_set;  delete []working_set_values;  delete []sum;  delete []at_bound;  delete []which_alpha;  primal = 0;  working_set = 0;  working_set_values = 0;  sum=0;  at_bound=0;  which_alpha=0;};int svm_c::is_alpha_neg(const SVMINT i){  // variable i is alpha*  // take a look at svm_pattern_c::is_alpha_neg   // and svm_regression_c::is_alpha_neg!  int result=0;  if(is_pattern){    if(all_ys[i] > 0){      result = 1;    }    else{      result = -1;    };  }  else if(all_alphas[i] > 0){    result = 1;  }  else if(all_alphas[i] == 0){    result = 2*(i%2)-1;  }  else{    result = -1;  };  return result;};SVMFLOAT svm_c::nabla(const SVMINT i){  if(is_alpha_neg(i) > 0){    return( sum[i] - all_ys[i] + epsilon_neg);  }  else{    return(-sum[i] + all_ys[i] + epsilon_pos);  };};SVMFLOAT svm_c::lambda(const SVMINT i){  // size lagrangian multiplier of the active constraint  SVMFLOAT alpha;  SVMFLOAT result = -abs(nabla(i)+is_alpha_neg(i)*lambda_eq);    //= -infinity; // default = not at bound  alpha=all_alphas[i];  if(alpha>is_zero){    // alpha*    if(alpha-Cneg >= - is_zero){      // upper bound active      result = -lambda_eq-nabla(i);    };  }  else if(alpha >= -is_zero){    // lower bound active    if(is_alpha_neg(i) > 0){      result = nabla(i) + lambda_eq;    }    else{      result = nabla(i)-lambda_eq;    };  }  else if(alpha+Cpos <= is_zero){    // upper bound active    result = lambda_eq - nabla(i);  };  return result;};int svm_c::feasible(const SVMINT i, SVMFLOAT* the_nabla, SVMFLOAT* the_lambda, int* atbound){  // is direction i feasible to minimize the target function  // (includes which_alpha==0)  int is_feasible=1;  //  if(at_bound[i] >= shrink_const){ is_feasible = 0; };  SVMFLOAT alpha;  *the_nabla = nabla(i);  *the_lambda = lambda(i);  alpha=all_alphas[i];  if(alpha-Cneg >= - is_zero){    // alpha* at upper bound    *atbound = 1;    if(*the_lambda >= 0){      at_bound[i]++;      if(at_bound[i] == shrink_const) to_shrink++;    }    else{      at_bound[i] = 0;    };  }  else if((alpha<=is_zero) && (alpha >= -is_zero)){    // lower bound active    *atbound = 1;    if(*the_lambda >= 0){      at_bound[i]++;      if(at_bound[i] == shrink_const) to_shrink++;    }    else{      at_bound[i] = 0;    };  }  else if(alpha+Cpos <= is_zero){    // alpha at upper bound    *atbound = 1;    if(*the_lambda >= 0){      at_bound[i]++;      if(at_bound[i] == shrink_const) to_shrink++;    }    else{      at_bound[i] = 0;    };  }  else{    // not at bound    *atbound = 0;    at_bound[i] = 0;  };  if((*the_lambda >= feasible_epsilon) || (at_bound[i] >= shrink_const)){    is_feasible = 0;   };  return is_feasible;};void svm_c::set_svs(example_set_c* training_examples){  // initialised already trained sv (for predicting or testing)  examples = training_examples;   test_set = training_examples;  examples_total = training_examples->size();  all_alphas = examples->get_alphas();};void svm_c::reset_shrinked(){  SVMINT old_ex_tot=examples_total;  target_count=0;  examples_total = examples->size();  kernel->set_examples_size(examples_total);  // unshrink, recalculate sum for all variables   SVMINT i,j;  // reset all sums  SVMFLOAT Kij;  for(i=old_ex_tot;i<examples_total;i++){    sum[i] = 0;    at_bound[i] = 0;  };  for(i=0;i<examples_total;i++){    if(abs(all_alphas[i])>is_zero){      for(j=old_ex_tot;j<examples_total;j++){	Kij = kernel->calculate_K(i,j);	sum[j]+=all_alphas[i]*Kij;      };    };  };  sum_alpha=0;};SVMFLOAT svm_c::avg_norm2(){  SVMFLOAT avg=0.0;  for(SVMINT i=0;i<examples_total;i++){      avg += kernel->calculate_K(i,i);  };  avg /= (SVMFLOAT)examples_total;  return(avg);};svm_result svm_c::train(example_set_c* training_examples){  svm_result the_result;  examples = training_examples;   test_set = training_examples;  if(parameters->verbosity>= 4){    cout<<"training started"<<endl;  };  time_init = get_time();  time_all = time_init;  examples_total = training_examples->size();  all_alphas = examples->get_alphas();  all_ys = examples->get_ys();  SVMINT param_wss = parameters->working_set_size;  if(param_wss > examples_total){    parameters->working_set_size = examples_total;    working_set_size = examples_total;  };  if(parameters->realC <= 0.0){    parameters->realC = 1.0/avg_norm2();    Cpos = parameters->get_Cpos();    Cneg = parameters->get_Cneg();    if(parameters->verbosity>= 2){      cout<<"C set to "<<parameters->realC<<endl;    };  };  if(parameters->balance_cost){    parameters->Lpos = (SVMFLOAT)training_examples->size_pos()/(SVMFLOAT)training_examples->size();    parameters->Lneg = (SVMFLOAT)training_examples->size_neg()/(SVMFLOAT)training_examples->size();    Cpos = parameters->get_Cpos();    Cneg = parameters->get_Cneg();  };  // set up data structure for optimizer  if(parameters->verbosity>= 4){    cout<<"Initing optimizer"<<endl;  };  init_optimizer();  SVMINT iteration = 0;  SVMINT max_iterations = parameters->max_iterations;  if(parameters->verbosity>= 4){    cout<<"Initing working set"<<endl;  };  // WS-optimization  init_working_set();  time_init = get_time() - time_init;  while(iteration < max_iterations){    iteration++;    if(parameters->verbosity>= 5){      cout<<"WS is: ";      //      SVMINT uyt;      SVMINT ws_i;      for(ws_i=0;ws_i<working_set_size;ws_i++){	if(is_alpha_neg(working_set[ws_i])>0) cout<<"+"<<working_set[ws_i]<<" ";	if(is_alpha_neg(working_set[ws_i])<0) cout<<"-"<<working_set[ws_i]<<" ";      };      cout<<endl;      cout<<"WS alphas: ";      for(ws_i=0;ws_i<working_set_size;ws_i++){	cout<<all_alphas[working_set[ws_i]];	if((all_alphas[working_set[ws_i]] > Cneg-is_zero) ||	   (all_alphas[working_set[ws_i]] < -Cpos+is_zero)){	  cout<<"^";	};	cout<<" ";      };      cout<<endl;      cout<<"WS nablas: ";      for(ws_i=0;ws_i<working_set_size;ws_i++){	cout<<nabla(working_set[ws_i])<<" ";	      };      cout<<endl;      cout<<"WS lambdas: ";      for(ws_i=0;ws_i<working_set_size;ws_i++){	cout<<lambda(working_set[ws_i])<<" ";	      };      cout<<endl;      cout<<"WS at_bounds: ";      for(ws_i=0;ws_i<working_set_size;ws_i++){	cout<<at_bound[working_set[ws_i]]<<" ";	      };      cout<<endl;    };    if(parameters->verbosity>= 4){      cout<<"optimizer iteration "<<iteration<<endl;    }    else if(parameters->verbosity>=3){      cout<<".";      cout.flush();    };    optimize();     put_optimizer_values();    SVMINT i;//     SVMFLOAT now_target=0;//     SVMFLOAT now_target_dummy=0;//     for(i=0;i<examples_total;i++){// 	now_target_dummy=sum[i]/2-all_ys[i];// 	if(is_alpha_neg(i)){// 	    now_target_dummy+= epsilon_pos;// 	}// 	else{// 	    now_target_dummy-= epsilon_neg;// 	};// 	now_target+=all_alphas[i]*now_target_dummy;//     };//     cout<<"Target function: "<<now_target<<endl;    int conv = convergence();        // old, is_zero is not touched any more    /// @@@    if(conv && (is_zero > parameters->is_zero)){ 	is_zero =  parameters->is_zero;	conv=0;    }    else if(conv) { 	if(parameters->verbosity>=3){	    // dots	    cout<<endl;	};	// check convergence for all parameters	if(0 == is_pattern){	    for(i=0;i<examples_total;i++){		if((all_alphas[i]<=is_zero) && (all_alphas[i]>=-is_zero)){		    all_alphas[i]=0;		};	    };	    project_to_constraint(); 	};	if((examples_total<examples->size()) || (target_count>0)){	    // check convergence for all alphas  	    if(parameters->verbosity>= 2){		cout<<"***** Checking convergence for all variables"<<endl;	    };	    SVMINT old_target_count=target_count; // t_c set to 0 in reset_shrinked	    reset_shrinked();	    conv = convergence();	    if(0 == conv){		kernel->set_examples_size(examples_total);		target_count = old_target_count;	    };	};		if((0 == is_pattern) && (conv)){	    // why???	    for(i=0;i<examples_total;i++){		if((all_alphas[i]<=is_zero) && (all_alphas[i]>=-is_zero)){		    at_bound[i]++;		};	    };	    conv = convergence();	};		if(conv){	    if(parameters->verbosity>= 1){		cout<<"*** Convergence"<<endl;	    };	    if((parameters->verbosity>=2) || 	       (convergence_epsilon > parameters->convergence_epsilon)){		// had to relax the KKT conditions on the way. 		// Maybe this isn't necessary any more		SVMFLOAT new_convergence_epsilon = 0;		SVMFLOAT the_lambda;		for(i=0;i<examples_total;i++){		    the_lambda = lambda(i);		    if(the_lambda < new_convergence_epsilon){			new_convergence_epsilon = the_lambda;		    };		};		convergence_epsilon = -new_convergence_epsilon;	    };	    	    break;	};		// set variables free again	shrink_const += 10;	for(i=0;i<examples_total;i++){	    at_bound[i]=0;      };    };    shrink();    calculate_working_set();    update_working_set();    if(parameters->verbosity >= 4){      SVMINT shrinked=0;      SVMINT upper_bound=0;      SVMINT lower_bound=0;      for(i=0;i<examples_total;i++){	if(at_bound[i] >= shrink_const){ 	  shrinked++;	};	if(abs(all_alphas[i]) < is_zero){	  lower_bound++;	}	else if((all_alphas[i]-Cneg>-is_zero) || (all_alphas[i]+Cpos<is_zero)){	  upper_bound++;	};      };      cout<<examples_total<<" variables total, ";      cout<<lower_bound<<" variables at lower bound, ";      cout<<upper_bound<<" variables at upper bound, ";      cout<<shrinked<<" variables shrinked"<<endl;    };  };  SVMINT i;  if(iteration >= max_iterations){    cout<<"*** No convergence: Time up."<<endl;    if(examples_total<examples->size()){      // set sums for all variables for statistics      reset_shrinked();      SVMFLOAT new_convergence_epsilon = 0;      SVMFLOAT the_lambda;      for(i=0;i<examples_total;i++){	the_lambda = lambda(i);	if(the_lambda < new_convergence_epsilon){	  new_convergence_epsilon = the_lambda;	};      };      convergence_epsilon = -new_convergence_epsilon;    };  };  time_all = get_time() - time_all;  // calculate b  SVMFLOAT new_b=0;  SVMINT new_b_count=0;  for(i=0;i<examples_total;i++){    if((all_alphas[i]-Cneg < -is_zero) && (all_alphas[i]>is_zero)){      new_b +=  all_ys[i] - sum[i]-epsilon_neg;      new_b_count++;    }    else if((all_alphas[i]+Cpos > is_zero) && (all_alphas[i]<-is_zero)){      new_b +=  all_ys[i] - sum[i]+epsilon_pos;      new_b_count++;    };    examples->put_alpha(i,all_alphas[i]);  };  if(new_b_count>0){    examples->put_b(new_b/((SVMFLOAT)new_b_count));  }  else{    // unlikely    for(i=0;i<examples_total;i++){      if((all_alphas[i]<is_zero) && (all_alphas[i]>-is_zero)) {	new_b +=  all_ys[i]- sum[i];	new_b_count++;      };    };    if(new_b_count>0){      examples->put_b(new_b/((SVMFLOAT)new_b_count));    }    else{      // even unlikelier      for(i=0;i<examples_total;i++){	new_b +=  all_ys[i]- sum[i];	new_b_count++;      };      examples->put_b(new_b/((SVMFLOAT)new_b_count));    };  };  if(parameters->verbosity>= 2){    cout<<"Done training: "<<iteration<<" iterations."<<endl;    if(parameters->verbosity>= 2){      // cout<<"lambda_eq = "<<lambda_eq<<endl;      SVMFLOAT now_target=0;      SVMFLOAT now_target_dummy=0;      for(i=0;i<examples_total;i++){	now_target_dummy=sum[i]/2-all_ys[i];	if(is_alpha_neg(i)){	  now_target_dummy+= epsilon_pos;	}	else{	  now_target_dummy-= epsilon_neg;	};	now_target+=all_alphas[i]*now_target_dummy;      };      cout<<"Target function: "<<now_target<<endl;    };  };  the_result = print_statistics();  exit_optimizer();

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久影院| 自拍偷拍国产亚洲| 午夜伦理一区二区| 在线看日本不卡| 亚洲免费av高清| 99精品国产91久久久久久| 国产欧美日韩亚州综合| 久久精品国产亚洲5555| 日韩欧美中文字幕公布| 水蜜桃久久夜色精品一区的特点| 91福利国产成人精品照片| 国产精品超碰97尤物18| 成人精品高清在线| 国产精品乱码妇女bbbb| 99热精品一区二区| 亚洲制服丝袜av| 91精品免费在线观看| 奇米精品一区二区三区在线观看 | 久久aⅴ国产欧美74aaa| 欧美白人最猛性xxxxx69交| 久久精品国产99国产| 日本一区二区综合亚洲| 一本久久精品一区二区| 美腿丝袜亚洲一区| 国产欧美日韩在线| 欧美日精品一区视频| 国产一区二区三区在线观看精品| 五月天欧美精品| 久久久久久久电影| 91精品福利视频| 国产资源在线一区| 亚洲精品欧美二区三区中文字幕| 91精品婷婷国产综合久久竹菊| 久久国产免费看| 亚洲成人在线网站| 国产精品无码永久免费888| 欧美日韩高清一区二区不卡| 九色综合狠狠综合久久| 亚洲自拍都市欧美小说| 国产欧美一区在线| 精品国产乱码久久久久久久久| 91麻豆精东视频| 99久久国产综合精品麻豆| 狠狠网亚洲精品| 麻豆成人av在线| 日本欧美大码aⅴ在线播放| 亚洲欧美在线另类| 中文字幕亚洲区| 日韩三区在线观看| 在线观看亚洲成人| 色综合久久中文综合久久97 | 日韩精品欧美精品| 一区二区三区免费在线观看| 国产欧美精品一区aⅴ影院| 欧美一级国产精品| 日韩三级伦理片妻子的秘密按摩| 欧美精品三级在线观看| 亚洲伊人伊色伊影伊综合网| 日韩精品一区二区在线| 日本一区二区视频在线| 中文字幕一区在线观看| 一区二区成人在线视频| 一区二区三区四区蜜桃| 成人黄色国产精品网站大全在线免费观看 | 国产91精品露脸国语对白| 99久久99久久精品免费看蜜桃| av欧美精品.com| 欧美精品亚洲二区| 欧美激情综合网| 蜜桃视频一区二区三区| 激情文学综合插| 国产高清在线观看免费不卡| 精品亚洲porn| 亚洲国产精品尤物yw在线观看| 亚洲精品一区二区三区99| 精品国产乱码久久久久久久| 制服丝袜成人动漫| 日韩视频国产视频| 精品国产乱码久久久久久久久| 欧美精品一区二区精品网| 中文字幕在线观看不卡视频| 亚洲成人精品影院| 成人午夜av影视| 26uuu国产在线精品一区二区| 亚洲色图.com| 国内不卡的二区三区中文字幕| 国产成人精品午夜视频免费| 欧美日韩在线播放| 亚洲欧美一区二区视频| 美女视频黄a大片欧美| 99精品久久只有精品| 日韩欧美成人一区| 免费的成人av| 欧美一区二区三区在线看| 亚洲美女屁股眼交3| 国产风韵犹存在线视精品| 91精品国产欧美一区二区成人| 国产精品久久久99| 国产激情一区二区三区| 国产香蕉久久精品综合网| 亚洲h动漫在线| 在线播放欧美女士性生活| 亚洲第一成人在线| 在线国产电影不卡| 亚洲一区电影777| 一本色道久久综合狠狠躁的推荐| 91精品综合久久久久久| 亚洲一区二区中文在线| 色www精品视频在线观看| 成人欧美一区二区三区小说| 9人人澡人人爽人人精品| 亚洲精品国产a久久久久久 | 777奇米四色成人影色区| 亚洲福利一区二区三区| 色婷婷综合久色| 悠悠色在线精品| 欧美色网一区二区| 日本免费新一区视频| 午夜视频一区在线观看| 91久久精品国产91性色tv| 亚洲人精品一区| 制服丝袜成人动漫| 国产精品2024| 一区二区在线观看视频| 欧美日韩精品免费| 成人午夜激情影院| 亚洲国产wwwccc36天堂| 久久蜜桃一区二区| 91小宝寻花一区二区三区| 五月婷婷综合网| 国产精品初高中害羞小美女文| 一本色道久久综合亚洲aⅴ蜜桃 | 日本电影欧美片| 国产精品资源在线| 亚洲欧美国产高清| 中文字幕av一区二区三区| 日韩精品一区国产麻豆| 一本久久精品一区二区| 黄色精品一二区| 久久精品国产亚洲5555| 亚洲精品亚洲人成人网 | 成人一区二区三区| 久久99精品国产.久久久久久| 国产精品久久久久久久蜜臀| 欧美精品一区男女天堂| 91精品欧美一区二区三区综合在| 91玉足脚交白嫩脚丫在线播放| 美国av一区二区| 亚洲成人精品在线观看| 一区二区视频在线看| 中国av一区二区三区| 国产欧美日韩综合精品一区二区| 精品国产91乱码一区二区三区 | 精品国产百合女同互慰| 日韩一级高清毛片| 欧美精品乱码久久久久久按摩| 欧美亚洲禁片免费| 91精品久久久久久蜜臀| 91精品视频网| 日韩欧美第一区| 久久这里只精品最新地址| 精品国产一区二区三区久久影院 | 精品久久久久久亚洲综合网| 精品国产91乱码一区二区三区| 日韩视频一区二区三区在线播放| 3d成人h动漫网站入口| 日韩欧美国产一区二区三区 | 欧美三级韩国三级日本三斤| 欧美人与禽zozo性伦| 日韩一区二区三区电影在线观看 | 欧美日韩国产一级| 精品成人a区在线观看| 中文字幕一区二区三区在线不卡| 亚洲精品高清视频在线观看| 日韩和的一区二区| 国产成人精品网址| 欧美猛男男办公室激情| 欧美哺乳videos| 亚洲精品自拍动漫在线| 欧美日韩在线三区| 国产午夜精品久久久久久免费视 | 久久精品国产亚洲高清剧情介绍| 国产成人免费视频一区| 欧美人妖巨大在线| 17c精品麻豆一区二区免费| 麻豆成人av在线| 制服丝袜av成人在线看| 亚洲综合av网| www.欧美日韩| 国产免费观看久久| 紧缚奴在线一区二区三区| 在线免费亚洲电影| 亚洲视频一区二区免费在线观看| 久久99热这里只有精品| 欧美日韩久久久一区| 亚洲同性同志一二三专区| 国产不卡高清在线观看视频| 久久综合久久久久88| 国内外成人在线| 日韩欧美高清一区|