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

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

?? svm_c.cpp

?? C++實現的支持向量機神經網絡代碼
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
  exit_optimizer();  examples->set_initialised_alpha();  parameters->working_set_size = param_wss;  return the_result;};void svm_c::shrink(){  // move shrinked examples to back  if(to_shrink>examples_total/10){    SVMINT i;    SVMINT last_pos=examples_total;    if(last_pos > working_set_size){	for(i=0;i<last_pos;i++){	    if(at_bound[i] >= shrink_const){		// shrinxk i		sum_alpha += all_alphas[i];		last_pos--;		examples->swap(i,last_pos);		kernel->overwrite(i,last_pos);		sum[i] = sum[last_pos];		at_bound[i] = at_bound[last_pos];		if(last_pos <= working_set_size){		    break;		};	    };	};	to_shrink=0;	examples_total = last_pos;	kernel->set_examples_size(examples_total);    };    if(parameters->verbosity>=4){      cout<<"shrinked to "<<examples_total<<" variables"<<endl;    };  };};int svm_c::convergence(){  long time_start = get_time();  SVMFLOAT the_lambda_eq = 0;  SVMINT total = 0;  SVMFLOAT alpha_sum=0;  SVMFLOAT alpha=0;  SVMINT i;  int result=1;  // actual convergence-test  total = 0; alpha_sum=0;  if(biased){    // calc lambda_eq    for(i=0;i<examples_total;i++){      alpha = all_alphas[i];      alpha_sum += alpha;      if((alpha>is_zero) && (alpha < Cneg)){ //-Cneg < -is_zero)){	// alpha^* = - nabla	the_lambda_eq += -nabla(i); //all_ys[i]-epsilon_neg-sum[i];	total++;      }      else if((alpha<-is_zero) && (alpha > -Cpos)){ //+Cpos > is_zero)){	// alpha = nabla	the_lambda_eq += nabla(i); //all_ys[i]+epsilon_pos-sum[i];	total++;      };    };        if(parameters->verbosity >= 4){      cout<<"lambda_eq = "<<(the_lambda_eq/total)<<endl;    };    if(total>0){      lambda_eq = the_lambda_eq / total;    }    else{      // keep WS lambda_eq      lambda_eq = lambda_WS; //(lambda_eq+4*lambda_WS)/5;      if(parameters->verbosity>= 4){	cout<<"*** no SVs in convergence(), lambda_eq = "<<lambda_eq<<"."<<endl;      };    };        if(target_count>2){      // estimate lambda from WS      if(target_count>20){	// desperate!	lambda_eq = ((40-target_count)*lambda_eq + (target_count-20)*lambda_WS)/20;	if(parameters->verbosity>=5){	  cout<<"Re-Re-calculated lambda from WS: "<<lambda_eq<<endl;	};	if(target_count>40){	  // really desperate, kick one example out!	  i = working_set[target_count%working_set_size];	  if(is_alpha_neg(i) > 0){	    lambda_eq = -nabla(i);	  }	  else{	    lambda_eq = nabla(i);	  };	  if(parameters->verbosity>=5){	    cout<<"set lambda_eq to nabla("<<i<<"): "<<lambda_eq<<endl;	  };	};      }      else{	lambda_eq = lambda_WS;	if(parameters->verbosity>=5){	  cout<<"Re-calculated lambda_eq from WS: "<<lambda_eq<<endl;	};      };    };    // check linear constraint    if(abs(alpha_sum+sum_alpha) > convergence_epsilon){      // equality constraint violated      project_to_constraint();      if(parameters->verbosity>= 4){	cout<<"No convergence: equality constraint violated: |"<<(alpha_sum+sum_alpha)<<"| >> 0"<<endl;      };      result = 0;      };  }  else{    // not biased    lambda_eq = 0.0;  };  i=0;  while(i<examples_total){    if(lambda(i)>=-convergence_epsilon){      i++;    }    else{      result = 0;      break;    };  };  time_convergence += get_time() - time_start;  return result;};void svm_c::minheap_heapify(SVMINT start, SVMINT size){  // build heap of array working_set[start:start+size-1]  // (i.e. "size" elements starting at "start"th element)  // minheap = 1 <=> maximal element at root   // (i.e. we build the heap of minimal elements)  // v_a[i] = w_s_v[start-1+i], count beginning at 1  SVMFLOAT* value_array = working_set_values+start-1;   SVMINT* pos_array = working_set+start-1;  int running = 1;  SVMINT pos = 1;  SVMINT left, right, largest;  SVMFLOAT dummyf;  SVMINT dummyi;  while(running){      left = 2*pos;      right = left+1;      if((left<=size) && 	 (value_array[left] > value_array[pos]))	largest = left;      else{	largest = pos;      };      if((right<=size) && 	 (value_array[right] > value_array[largest])){	largest = right;      };      if(largest == pos){	running = 0;      }      else{	//cout<<"switching "<<pos<<" and "<<largest<<endl;	dummyf = value_array[pos];	dummyi = pos_array[pos];	value_array[pos] = value_array[largest];	pos_array[pos] = pos_array[largest];	value_array[largest] = dummyf;	pos_array[largest] = dummyi;	pos = largest;      };  };};void svm_c::maxheap_heapify(SVMINT start, SVMINT size){  // build heap of array working_set[start:start+size-1]  // (i.e. "size" elements starting at "start"th element)  // minheap = 1 <=> maximal element at root   // (i.e. we build the heap of minimal elements)  // v_a[i] = w_s_v[start-1+i], count beginning at 1  SVMFLOAT* value_array = working_set_values+start-1;   SVMINT* pos_array = working_set+start-1;  int running = 1;  SVMINT pos = 1;  SVMINT left, right, largest;  SVMFLOAT dummyf;  SVMINT dummyi;  while(running){      left = 2*pos;      right = left+1;      if((left<=size) && 	 (value_array[left] < value_array[pos])){	largest = left;      }      else{	largest = pos;      };      if((right<=size) && 	 (value_array[right] < value_array[largest])){	  largest = right;      };      if(largest == pos){	running = 0;      }      else{	dummyf = value_array[pos];	dummyi = pos_array[pos];	value_array[pos] = value_array[largest];	pos_array[pos] = pos_array[largest];	value_array[largest] = dummyf;	pos_array[largest] = dummyi;	pos = largest;      };  };};SVMINT svm_c::maxheap_add(SVMINT size, const SVMINT element, const SVMFLOAT value){    if(size < (working_set_size/2+working_set_size%2)){	// add to max_heap	working_set_values[working_set_size/2+size] = value;	working_set[working_set_size/2+size] = element;	size++;	if(size == working_set_size/2+working_set_size%2){	    // build heap	    SVMINT j;	    for(j=size;j>0;j--){		maxheap_heapify(working_set_size/2+j-1,size+1-j);	    };	};    }    else if(value >= working_set_values[working_set_size/2]){	// replace min of max_heap	working_set_values[working_set_size/2] = value;	working_set[working_set_size/2] = element;	maxheap_heapify(working_set_size/2,size);    };    return size;};SVMINT svm_c::minheap_add(SVMINT size, const SVMINT element, const SVMFLOAT value){    if(size<working_set_size/2){	// add to min_heap	working_set_values[size] = value;	working_set[size] = element;	size++;	if(size == working_set_size/2){	    // build heap	    SVMINT j;	    for(j=size;j>0;j--){		minheap_heapify(j-1,size+1-j);	    };	};    }    else if(value < working_set_values[0]){	// replace max of min_heap	working_set_values[0] = value;	working_set[0] = element;	minheap_heapify(0,size);    };    return size;};void svm_c::calculate_working_set(){  /**   *   * Find top and bottom (w.r.t. in_alpha_neg*nabla) feasible    * variables for working_set   *   */  long time_start = get_time();  // reset WSS  if(working_set_size < parameters->working_set_size){    working_set_size=parameters->working_set_size;    if(working_set_size>examples_total) working_set_size = examples_total;  };  SVMINT heap_min=0;  SVMINT heap_max=0;  SVMINT i=0;  SVMFLOAT sort_value;  working_set_values[0] = infinity;  working_set_values[working_set_size/2] = -infinity;  SVMFLOAT the_lambda;  SVMFLOAT the_nabla;  int is_feasible;  int atbound;  SVMINT j;  while(i<examples_total) {    is_feasible = feasible(i,&the_nabla,&the_lambda,&atbound);    if(0 != is_feasible){      if(is_alpha_neg(i) > 0){	sort_value = -the_nabla;  // - : maximum inconsistency approach      }      else{	sort_value = the_nabla;      };      // add to heaps      heap_min = minheap_add(heap_min,i,sort_value);      heap_max = maxheap_add(heap_max,i,sort_value);    };    i++;  };  if(working_set_values[0] >= working_set_values[working_set_size/2]){    if((heap_min>0) &&       (heap_max>0)){      // there could be the same values in the min- and maxheap,      // sort them out (this is very unlikely)      j=0;      i=0;      while(i<heap_min){	// working_set[i] also in max-heap?        j=working_set_size/2;	while((j<working_set_size/2+heap_max) && 	      (working_set[j] != working_set[i])){	  j++;	};	if(j<working_set_size/2+heap_max){          // working_set[i] equals working_set[j]          if(heap_min<heap_max){            // remove j from WS	    working_set[j] = working_set[working_set_size/2-1+heap_max];	    heap_max--;	  }	  else{	    working_set[i] = working_set[heap_min-1];	    heap_min--;	  };	}	else{          i++;	};      };    };  };  if(heap_min+heap_max < working_set_size) {      // condense WS      for(i=0;i<heap_max;i++){	  working_set[heap_min+i] = working_set[working_set_size/2+i];      };      working_set_size = heap_min+heap_max;  };  //  if((working_set_size<examples_total) && (working_set_size>0)){  if(target_count>0){    // convergence error on last iteration?    // some more tests on WS    // unlikely to happen, so speed isn't so important    // are all variables at the bound?    SVMINT pos_abs;    int bounded_pos=1;    int bounded_neg=1;    SVMINT pos=0;    while((pos<working_set_size) && ((1 == bounded_pos) || (1 == bounded_neg))){      pos_abs = working_set[pos];      if(is_alpha_neg(pos_abs) > 0){	if(all_alphas[pos_abs]-Cneg < -is_zero){	  bounded_pos = 0;	};	if(all_alphas[pos_abs] > is_zero){	  bounded_neg = 0;	};      }      else{	if(all_alphas[pos_abs]+Cneg > is_zero){	  bounded_neg = 0;	};	if(all_alphas[pos_abs] < -is_zero){	  bounded_pos = 0;	};      };      pos++;    };    if(0 != bounded_pos){      // all alphas are at upper bound      // need alpha that can be moved upward      // use alpha with smallest lambda      SVMFLOAT max_lambda = infinity;      SVMINT max_pos=examples_total;      for(pos_abs=0;pos_abs<examples_total;pos_abs++){	if(is_alpha_neg(pos_abs) > 0){	  if(all_alphas[pos_abs]-Cneg < -is_zero){	    if(lambda(pos_abs) < max_lambda){	      max_lambda = lambda(pos_abs);	      max_pos = pos_abs;	    };	  };	}	else{	  if(all_alphas[pos_abs] < -is_zero){	    if(lambda(pos_abs) < max_lambda){	      max_lambda = lambda(pos_abs);	      max_pos = pos_abs;	    };	  };	};      };      if(max_pos<examples_total){	if(working_set_size<parameters->working_set_size){	  working_set_size++;	};	working_set[working_set_size-1] = max_pos;      };    }    else if(0 != bounded_neg){      // all alphas are at lower bound      // need alpha that can be moved downward      // use alpha with smallest lambda      SVMFLOAT max_lambda = infinity;      SVMINT max_pos=examples_total;      for(pos_abs=0;pos_abs<examples_total;pos_abs++){	if(is_alpha_neg(pos_abs) > 0){	  if(all_alphas[pos_abs] > is_zero){	    if(lambda(pos_abs) < max_lambda){	      max_lambda = lambda(pos_abs);	      max_pos = pos_abs;	    };	  };	}	else{	  if(all_alphas[pos_abs]+Cneg > is_zero){	    if(lambda(pos_abs) < max_lambda){	      max_lambda = lambda(pos_abs);	      max_pos = pos_abs;	    };	  };	};      };      if(max_pos<examples_total){	if(working_set_size<parameters->working_set_size){	  working_set_size++;	};	working_set[working_set_size-1] = max_pos;      };    };  };  if((working_set_size<parameters->working_set_size) &&     (working_set_size<examples_total)){    // use full working set    SVMINT pos = (SVMINT)((SVMFLOAT)examples_total*rand()/(RAND_MAX+1.0));    int ok;    while((working_set_size<parameters->working_set_size) &&	  (working_set_size<examples_total)){      // add pos into WS if it isn't already      ok = 1;      for(i=0;i<working_set_size;i++){	if(working_set[i] == pos){	  ok=0;	  i = working_set_size;	};      };      if(1 == ok){	working_set[working_set_size] = pos;	working_set_size++;      };      pos = (pos+1)%examples_total;    };  };  SVMINT ipos;  for(ipos=0;ipos<working_set_size;ipos++){    which_alpha[ipos] = is_alpha_neg(working_set[ipos]);  };  time_calc += get_time() - time_start;  return;};void svm_c::project_to_constraint(){  // project alphas to match the constraint  if(biased){    SVMFLOAT alpha_sum = sum_alpha;    SVMINT SVcount=0;    SVMFLOAT alpha;    SVMINT i;    for(i=0;i<examples_total;i++){      alpha = all_alphas[i];      alpha_sum += alpha;      if(((alpha>is_zero) && (alpha-Cneg < -is_zero)) ||	 ((alpha<-is_zero) && (alpha+Cpos > is_zero))){	SVcount++;      };    };    if(SVcount > 0){      // project      alpha_sum /= (SVMFLOAT)SVcount;      for(i=0;i<examples_total;i++){	alpha = all_alphas[i];	if(((alpha>is_zero) && (alpha-Cneg < -is_zero)) ||	   ((alpha<-is_zero) && (alpha+Cpos > is_zero))){	  all_alphas[i] -= alpha_sum;	};      };    };  };};void svm_c::init_working_set(){  // calculate sum  SVMINT i,j;  project_to_constraint();  // check bounds!  if(examples->initialised_alpha()){    if(parameters->verbosity >= 2){      cout<<"Initialising variables, this may take some time."<<endl;    };    for(i=0; i<examples_total;i++){      sum[i] = 0;      at_bound[i] = 0;      for(j=0; j<examples_total;j++){	sum[i] += all_alphas[j]*kernel->calculate_K(i,j);      };    };  }  else{    // skip kernel calculation as all alphas = 0    for(i=0; i<examples_total;i++){      sum[i] = 0;      at_bound[i] = 0;    };      };  if(examples->initialised_alpha()){    calculate_working_set();  }  else{    // first working set is random    j=0;    i=0;    while((i<working_set_size) && (j < examples_total)){      working_set[i] = j;      if(is_alpha_neg(j) > 0){	which_alpha[i] = 1;      }      else{	which_alpha[i] = -1;      };      i++;      j++;    };  };     update_working_set();};void svm_c::put_optimizer_values(){  // update nabla, sum, examples.  // sum[i] += (primal_j^*-primal_j-alpha_j^*+alpha_j)K(i,j)  // check for |nabla| < is_zero (nabla <-> nabla*)  //  cout<<"put_optimizer_values()"<<endl;  SVMINT i=0;   SVMINT j=0;  SVMINT pos_i;  SVMFLOAT the_new_alpha;  SVMFLOAT* kernel_row;  SVMFLOAT alpha_diff;  long time_start = get_time();  pos_i=working_set_size;  while(pos_i>0){    pos_i--;    if(which_alpha[pos_i]>0){      the_new_alpha = primal[pos_i];    }    else{      the_new_alpha = -primal[pos_i];    };    // next three statements: keep this order!    i = working_set[pos_i];    alpha_diff = the_new_alpha-all_alphas[i];    all_alphas[i] = the_new_alpha;    if(alpha_diff != 0){      // update sum ( => nabla)      kernel_row = kernel->get_row(i);      for(j=0;j<examples_total;j++){	sum[j] += alpha_diff*kernel_row[j];      };    };  };  time_update += get_time() - time_start;};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本sm残虐另类| 91老师国产黑色丝袜在线| 成人小视频免费观看| 欧洲视频一区二区| 中文字幕精品三区| 日韩精品成人一区二区三区 | 亚洲欧美激情插| 琪琪久久久久日韩精品| 成人a级免费电影| 精品免费99久久| 亚洲午夜久久久久中文字幕久| 国产乱妇无码大片在线观看| 欧美日韩在线播放三区| 亚洲同性同志一二三专区| 极品尤物av久久免费看| 欧美日韩精品福利| 亚洲乱码国产乱码精品精可以看 | 国产伦精品一区二区三区在线观看| 色综合天天性综合| 国产婷婷一区二区| 国内精品免费在线观看| 7777精品伊人久久久大香线蕉的 | 日韩精品久久久久久| 一本色道a无线码一区v| 国产精品嫩草99a| 国内精品伊人久久久久av影院| 欧美男男青年gay1069videost| 亚洲欧洲美洲综合色网| 99久久99久久精品免费观看| 日本一区二区成人在线| 成人小视频免费在线观看| 久久久久国产成人精品亚洲午夜| 日韩电影在线一区二区| 9191精品国产综合久久久久久| 亚洲午夜精品一区二区三区他趣| 91尤物视频在线观看| 亚洲免费在线观看| 91官网在线观看| 亚洲国产精品一区二区久久| 欧洲国内综合视频| 亚洲制服欧美中文字幕中文字幕| 日本高清视频一区二区| 亚洲在线免费播放| 欧美日韩国产美女| 久久精品久久久精品美女| www国产精品av| 成人精品小蝌蚪| **欧美大码日韩| 91黄色免费版| 日本怡春院一区二区| 精品国产不卡一区二区三区| 激情另类小说区图片区视频区| 久久久国产综合精品女国产盗摄| 精品国产髙清在线看国产毛片| 国产在线不卡视频| 国产精品国产三级国产a| 在线亚洲一区二区| 免费在线观看一区| 国产日韩精品一区二区三区在线| 成人免费va视频| 亚洲一区在线观看网站| 日韩欧美黄色影院| a级高清视频欧美日韩| 亚洲h在线观看| 久久综合成人精品亚洲另类欧美 | 亚洲123区在线观看| 精品免费一区二区三区| 99国产精品国产精品毛片| 午夜精品在线看| 久久亚洲精品小早川怜子| 一本大道久久a久久精二百 | 国产精品亚洲成人| 亚洲欧美日韩国产成人精品影院| 欧美伦理视频网站| 丰满少妇久久久久久久| 五月婷婷激情综合| 国产精品久久久久久妇女6080| 欧美亚洲动漫制服丝袜| 国内精品写真在线观看| 亚洲一区二区三区三| 久久精品视频免费| 欧美人与性动xxxx| 成人av免费在线播放| 日本一道高清亚洲日美韩| 中文字幕亚洲电影| 精品国产制服丝袜高跟| 欧美日韩一二三区| 91在线精品一区二区三区| 琪琪久久久久日韩精品| 亚洲福利一区二区| 成人免费小视频| 久久久午夜电影| 制服丝袜亚洲精品中文字幕| 99国产精品视频免费观看| 国产一区二区在线视频| 丝袜美腿亚洲色图| 亚洲一级二级在线| 亚洲欧美自拍偷拍色图| 久久九九久久九九| 日韩欧美国产电影| 欧美日本视频在线| 欧美日韩一区二区三区在线看| 成人精品视频网站| 国产91综合网| 国产精品一区二区三区99| 美脚の诱脚舐め脚责91| 一区二区三区在线观看欧美| 国产精品不卡在线| 欧美国产在线观看| 国产人伦精品一区二区| 久久亚洲精精品中文字幕早川悠里| 91精品国产色综合久久久蜜香臀| 色狠狠综合天天综合综合| 91老师片黄在线观看| 91小宝寻花一区二区三区| www.欧美.com| 99久久精品情趣| aaa亚洲精品| 9i看片成人免费高清| 99久久综合国产精品| 一本大道久久精品懂色aⅴ| 97se亚洲国产综合自在线观| 成人精品国产福利| 99精品国产一区二区三区不卡| 成人av电影在线网| 色香蕉久久蜜桃| 欧美中文字幕不卡| 欧美日韩第一区日日骚| 欧美一级一区二区| 精品国产一区二区三区忘忧草 | 欧美激情一区二区三区四区| 久久精品亚洲麻豆av一区二区| 欧美激情一区二区三区在线| 国产精品第五页| 亚洲第一成人在线| 美女视频黄a大片欧美| 国模一区二区三区白浆| 成人app网站| 欧美在线高清视频| 日韩欧美的一区| 久久精品日产第一区二区三区高清版 | 亚洲人成网站精品片在线观看| 一区二区三区在线观看网站| 亚洲成人免费观看| 国内精品视频一区二区三区八戒| 成人免费看视频| 欧美性videosxxxxx| 日韩欧美你懂的| 久久久久久久久一| 伊人色综合久久天天人手人婷| 日本系列欧美系列| av综合在线播放| 7777精品伊人久久久大香线蕉的| 久久亚洲欧美国产精品乐播| 亚洲理论在线观看| 老司机免费视频一区二区| 99视频精品免费视频| 91精品综合久久久久久| 国产精品污www在线观看| 五月婷婷久久综合| 99久久综合狠狠综合久久| 日韩欧美电影一二三| 亚洲精品久久7777| 国产乱一区二区| 69成人精品免费视频| 国产精品久久久久久亚洲毛片| 秋霞午夜av一区二区三区| av日韩在线网站| 久久免费午夜影院| 亚洲国产精品自拍| 97精品视频在线观看自产线路二| 欧美一区中文字幕| 一区二区三区日韩精品视频| 精品无人码麻豆乱码1区2区| 在线观看日韩av先锋影音电影院| 久久久综合视频| 日本美女一区二区三区视频| 日本精品一区二区三区高清 | 欧美精品丝袜久久久中文字幕| 日本一区二区成人| 国精品**一区二区三区在线蜜桃 | 国产盗摄一区二区三区| 欧美年轻男男videosbes| 亚洲天堂成人网| 成人手机电影网| 久久综合九色综合欧美就去吻 | 日本91福利区| 欧美日韩一级片在线观看| 亚洲猫色日本管| 99久久婷婷国产综合精品| 国产欧美日韩不卡免费| 极品少妇xxxx偷拍精品少妇| 欧美日韩的一区二区| 午夜精品一区在线观看| 日本精品裸体写真集在线观看| **性色生活片久久毛片| 成人动漫视频在线| 国产精品亲子乱子伦xxxx裸| 国产成人欧美日韩在线电影| 日韩女优电影在线观看|