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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 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();

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久无码精品亚洲日韩按摩| 亚洲自拍偷拍网站| 亚洲成在线观看| 不卡视频免费播放| 久久综合久久鬼色中文字| 亚洲亚洲精品在线观看| 成人免费毛片片v| 国产日韩视频一区二区三区| 日韩二区三区四区| 在线观看视频一区| 一个色妞综合视频在线观看| zzijzzij亚洲日本少妇熟睡| 久久久精品国产99久久精品芒果| 日韩福利视频导航| 欧美久久一区二区| 一区二区三区四区视频精品免费| 国产精品99久久久久久久vr| 国产视频一区在线播放| 99久久综合99久久综合网站| 中文字幕一区二区视频| 99久久精品免费看国产 | 激情六月婷婷综合| 2019国产精品| 国产在线视频不卡二| 4438成人网| 久国产精品韩国三级视频| 中文字幕精品一区二区精品绿巨人 | 爽好多水快深点欧美视频| 91精品国产手机| 久久精品国产一区二区三区免费看 | 99免费精品视频| 五月天激情综合| 久久人人97超碰com| 91小视频免费观看| 亚洲成人手机在线| 欧美一级久久久| 一本色道久久综合亚洲aⅴ蜜桃 | 久久综合九色综合97婷婷| 91同城在线观看| 美女网站色91| 亚洲欧美一区二区三区孕妇| 色一情一伦一子一伦一区| 成人爽a毛片一区二区免费| 欧美国产日本韩| 欧美日韩国产综合久久| 色综合久久中文综合久久牛| 久久99精品久久久| 香蕉成人伊视频在线观看| 国产午夜亚洲精品羞羞网站| 日韩一区二区免费在线电影| 91麻豆蜜桃一区二区三区| 久久国产尿小便嘘嘘| 蜜臀av一级做a爰片久久| 伊人色综合久久天天| 中文字幕视频一区二区三区久| 精品视频1区2区| 色综合久久88色综合天天免费| 国产在线精品一区二区三区不卡| 亚洲午夜激情网页| 亚洲在线观看免费| 婷婷成人激情在线网| 全部av―极品视觉盛宴亚洲| 亚洲在线免费播放| 亚洲高清免费一级二级三级| 日本不卡一二三区黄网| 青草av.久久免费一区| 午夜视频在线观看一区二区三区 | 欧美xxxx在线观看| 欧美日韩一区二区欧美激情| 欧美美女一区二区三区| 91麻豆精品91久久久久同性| 欧美成人一区二区三区| 欧美成人精品高清在线播放 | 国产一区欧美一区| 国产成人在线影院| 色成年激情久久综合| 91精品免费观看| 国产三区在线成人av| 亚洲一区二区在线观看视频 | 成人免费看视频| 欧美亚洲一区二区在线观看| 日本精品裸体写真集在线观看 | 亚洲综合清纯丝袜自拍| 久久成人精品无人区| 91在线一区二区| 欧美精品在线观看一区二区| 2021国产精品久久精品| 国产精品久久久久一区| 蜜臀va亚洲va欧美va天堂| 不卡视频免费播放| 精品对白一区国产伦| 亚洲人吸女人奶水| 蜜桃av一区二区在线观看| 成人aaaa免费全部观看| 国产精品天干天干在线综合| 亚洲成人动漫一区| 在线观看免费视频综合| 中文天堂在线一区| 国产精品1区二区.| 欧美日韩的一区二区| 综合婷婷亚洲小说| 粉嫩av亚洲一区二区图片| 7777精品伊人久久久大香线蕉经典版下载 | 国产一区二区成人久久免费影院| 91精品国产综合久久蜜臀| 一区二区三区免费| 在线观看日韩一区| 午夜精品久久久久久久99樱桃| 色婷婷综合久久久中文一区二区| 国产精品久线在线观看| aaa国产一区| 国产精品国产三级国产专播品爱网 | 色婷婷av一区| 亚洲人妖av一区二区| 99精品在线观看视频| 伊人性伊人情综合网| 欧美做爰猛烈大尺度电影无法无天| 亚洲资源中文字幕| 欧美日韩国产经典色站一区二区三区 | 韩国欧美一区二区| 久久久久免费观看| 国产成人精品网址| 亚洲人吸女人奶水| 欧美巨大另类极品videosbest| 男男成人高潮片免费网站| www国产成人| 色久优优欧美色久优优| 免费黄网站欧美| 亚洲欧美偷拍三级| 色综合色综合色综合| 国产亚洲精品精华液| 成人sese在线| 亚洲国产一区二区三区| 欧美成人激情免费网| 在线一区二区三区做爰视频网站| 麻豆一区二区在线| 亚洲综合免费观看高清在线观看 | 亚洲高清一区二区三区| 久久综合色8888| 欧美日韩在线播放三区四区| 国产美女一区二区三区| 亚洲va欧美va人人爽| 精品国产乱码久久久久久图片| 97国产一区二区| 国产成人免费视频一区| 日本不卡一区二区三区| 日韩极品在线观看| 亚洲一区二三区| 亚洲一区二区三区四区在线免费观看 | 国产最新精品免费| 麻豆精品新av中文字幕| 奇米影视7777精品一区二区| 日本不卡一二三| 激情文学综合网| 国产福利91精品一区| 懂色av一区二区夜夜嗨| 国产成人午夜精品影院观看视频| 国产一区二区三区日韩 | 国产情人综合久久777777| 亚洲欧洲av另类| 亚洲欧美日韩国产另类专区| 亚洲午夜免费视频| 激情图片小说一区| 国产一区二区三区久久久 | 午夜精品一区二区三区免费视频| 亚洲最大成人综合| 福利一区二区在线| 精品一区二区久久| 成人免费毛片片v| 色狠狠一区二区| 91精品国产综合久久香蕉的特点 | 日本电影亚洲天堂一区| 欧美一区二区三区视频在线观看| 精品88久久久久88久久久| 国产欧美视频一区二区| 午夜日韩在线观看| 国产激情精品久久久第一区二区| 色哟哟精品一区| 国产亚洲综合av| 日韩精品久久理论片| 国产在线精品一区二区不卡了 | 欧美精选在线播放| 国产精品久久久久久亚洲毛片| 日韩av一级电影| 一本一道久久a久久精品综合蜜臀| 精品国产精品网麻豆系列| 一区二区理论电影在线观看| 国产精品亚洲一区二区三区妖精 | 色噜噜狠狠色综合中国| 欧美国产日产图区| 韩国精品免费视频| 欧美日本一区二区在线观看| 日韩一区欧美一区| 91在线精品秘密一区二区| 日韩精品在线一区二区| 美女在线观看视频一区二区| 欧美日韩国产成人在线91| 17c精品麻豆一区二区免费| 粗大黑人巨茎大战欧美成人| 精品国产乱码久久久久久夜甘婷婷|