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

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

?? svm_c.cpp

?? C++實現(xiàn)的支持向量機神經(jīng)網(wǎng)絡(luò)代碼
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
#include "stdafx.h"
#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();

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品福利一区二区三区蜜桃| 欧美bbbbb| 日韩西西人体444www| 国产91精品在线观看| 午夜免费久久看| 亚洲国产经典视频| 欧美一级黄色大片| 色欧美日韩亚洲| 国产99久久久国产精品潘金网站| 亚洲午夜激情av| 国产精品家庭影院| 久久日一线二线三线suv| 色老汉av一区二区三区| 国产一区二区三区综合| 五月激情六月综合| 亚洲欧美日韩中文播放| 国产三级精品三级| 日韩欧美国产成人一区二区| 91国偷自产一区二区使用方法| 国产成人超碰人人澡人人澡| 强制捆绑调教一区二区| 亚洲成人自拍网| 亚洲男人的天堂一区二区| 国产亚洲短视频| 精品美女一区二区| 日韩欧美美女一区二区三区| 欧美精品乱人伦久久久久久| 在线观看亚洲成人| 91免费国产在线| av一区二区三区在线| 国产成人在线网站| 精品亚洲欧美一区| 蜜桃在线一区二区三区| 午夜精品久久久久久久| 亚洲国产美国国产综合一区二区| 亚洲欧美日韩成人高清在线一区| 日本一区二区三区在线观看| 国产视频视频一区| 国产日韩欧美电影| 国产亚洲综合在线| 国产欧美一区在线| 国产婷婷一区二区| 欧美—级在线免费片| 中文字幕av资源一区| 国产喷白浆一区二区三区| 久久久蜜桃精品| 久久精品夜色噜噜亚洲a∨| 精品国产露脸精彩对白| 精品国产一区二区国模嫣然| www欧美成人18+| 国产婷婷色一区二区三区四区 | 欧美巨大另类极品videosbest | 日韩一区二区三区视频在线观看| 欧美一区二区在线不卡| 91精品国产全国免费观看| 欧美一区二区三区免费观看视频| 欧美一区二区三区啪啪| 精品国产乱码久久久久久1区2区 | 日韩一区二区三免费高清| 欧美一卡二卡三卡| 精品久久久久久久久久久久包黑料 | 国产精品18久久久久久久久| 成人性生交大片| 91麻豆文化传媒在线观看| 欧美优质美女网站| 欧美日韩国产另类一区| 日韩欧美www| 国产农村妇女精品| 亚洲天堂网中文字| 午夜国产精品一区| 激情图区综合网| aaa欧美日韩| 欧美精选一区二区| wwwwxxxxx欧美| 综合自拍亚洲综合图不卡区| 五月综合激情日本mⅴ| 老色鬼精品视频在线观看播放| 国产精品一区二区91| 色综合网色综合| 91精品视频网| 国产精品五月天| 亚洲成av人片一区二区梦乃| 九九九精品视频| 91老师国产黑色丝袜在线| 91精品国产一区二区三区| 国产欧美日韩不卡| 亚洲国产中文字幕在线视频综合| 国内欧美视频一区二区| 91啪在线观看| 欧美成人精品3d动漫h| 综合中文字幕亚洲| 久久精品国产澳门| 色丁香久综合在线久综合在线观看| 欧美一区二区三区在线电影| 久久综合九色综合97婷婷女人| 亚洲免费伊人电影| 国产精品中文字幕一区二区三区| 日本韩国欧美一区二区三区| 久久婷婷综合激情| 视频一区视频二区中文字幕| 成人av在线一区二区三区| 91精品国产综合久久精品| 亚洲婷婷综合色高清在线| 久久精品国产在热久久| 在线观看国产91| 国产日韩欧美在线一区| 欧美aa在线视频| 欧美亚洲日本国产| 国产精品午夜春色av| 精品一区二区三区免费观看 | 日本亚洲视频在线| 91啦中文在线观看| 亚洲国产经典视频| 美女免费视频一区| 欧美三级资源在线| 亚洲免费观看高清完整| 岛国精品在线播放| 精品不卡在线视频| 视频一区二区三区在线| 欧洲一区二区av| 亚洲视频 欧洲视频| 国产.欧美.日韩| 2023国产精品自拍| 捆绑调教一区二区三区| 91精品国产欧美一区二区18| 夜夜嗨av一区二区三区| 91啪在线观看| 日韩美女视频一区二区| 成人黄色a**站在线观看| 久久精品夜色噜噜亚洲aⅴ| 黑人精品欧美一区二区蜜桃| 91精品国产免费| 日韩一区欧美二区| 欧美丰满嫩嫩电影| 午夜久久久久久久久久一区二区| 在线欧美日韩国产| 一区二区三区蜜桃| 欧洲国产伦久久久久久久| 一区二区三区成人| 欧美性大战久久| 亚洲成人av在线电影| 欧美日韩国产一级二级| 午夜成人在线视频| 91精品欧美综合在线观看最新| 日韩中文字幕亚洲一区二区va在线| 欧美日韩国产美| 青草av.久久免费一区| 欧美r级电影在线观看| 国产在线视频一区二区三区| 久久九九99视频| 处破女av一区二区| 亚洲天堂2014| 欧美视频中文字幕| 99久久精品免费精品国产| 国产女主播在线一区二区| 99在线精品观看| 亚洲小说春色综合另类电影| 欧美在线一二三四区| 日本视频免费一区| 久久久美女毛片| 99免费精品视频| 亚洲午夜av在线| 日韩网站在线看片你懂的| 国产精品一区二区在线观看网站 | 欧美成人乱码一区二区三区| 国产高清成人在线| 亚洲毛片av在线| 欧美日本一道本在线视频| 久草中文综合在线| 国产精品传媒在线| 欧美日韩一区二区电影| 激情欧美日韩一区二区| 欧美国产成人在线| 欧美日韩色一区| 国产一区不卡精品| 国产精品你懂的在线欣赏| 欧美午夜精品理论片a级按摩| 免费在线观看日韩欧美| 国产精品久久看| 欧美浪妇xxxx高跟鞋交| 狠狠色综合日日| 一区二区三区欧美日| 欧美岛国在线观看| 色狠狠色狠狠综合| 精彩视频一区二区| 一区二区三区欧美| 国产三级久久久| 欧美日韩你懂得| 成人免费毛片嘿嘿连载视频| 亚洲成人av电影在线| 中文字幕久久午夜不卡| 欧美日韩亚洲丝袜制服| 成人免费精品视频| 日本欧美大码aⅴ在线播放| 国产精品欧美极品| 欧美一级免费观看| 色噜噜狠狠成人网p站| 国产乱人伦偷精品视频免下载| 亚洲国产视频一区二区| 中文字幕第一区二区|