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

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

?? kernel.cpp

?? mySvm的最新源程序
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
#include "kernel.h"/** * * kernel_container_c * **/kernel_container_c::~kernel_container_c(){  kernel = 0;};kernel_c* kernel_container_c::get_kernel(){  if(kernel == 0){    kernel = new kernel_dot_c();    is_linear=1;      };  return kernel;};void kernel_container_c::clear(){  // do not delete kernel, for reading of aggregation kernels  kernel = 0;};istream& operator >> (istream& data_stream, kernel_container_c& the_kernel){  char* s = new char[MAXCHAR];  if(data_stream.eof() || ('@' == data_stream.peek())){    // no kernel definition, take dot as default    if(0 != the_kernel.kernel){      delete the_kernel.kernel;    };    the_kernel.kernel = new kernel_dot_c();    //    throw read_exception("No kernel definition found");  }  else{    while((! data_stream.eof()) &&	  (('#' == data_stream.peek()) ||	   ('\n' == data_stream.peek()))){	// ignore comment & newline	data_stream.getline(s,MAXCHAR);    };    data_stream >> s;    if(0 == strcmp("type",s)) {      the_kernel.is_linear=0;      data_stream >> s;      if(0==strcmp("dot",s)){	if(0 != the_kernel.kernel){	  delete the_kernel.kernel;	};	the_kernel.kernel = new kernel_dot_c();	the_kernel.is_linear=1;	data_stream >> *(the_kernel.kernel);      }      else if(0==strcmp("lin_dot",s)){	if(0 != the_kernel.kernel){	  delete the_kernel.kernel;	};	the_kernel.kernel = new kernel_lin_dot_c();	data_stream >> *(the_kernel.kernel);      }      else if(0 == strcmp("polynomial",s)){	if(0 != the_kernel.kernel){	  delete the_kernel.kernel;	};	the_kernel.kernel = new kernel_polynomial_c();	data_stream >> *(the_kernel.kernel);      }      else if(0 == strcmp("radial",s)){	if(0 != the_kernel.kernel){	  delete the_kernel.kernel;	};	the_kernel.kernel = new kernel_radial_c();	data_stream >> *(the_kernel.kernel);      }      else if(0 == strcmp("neural",s)){	if(0 != the_kernel.kernel){	  delete the_kernel.kernel;	};	the_kernel.kernel = new kernel_neural_c();	data_stream >> *(the_kernel.kernel);      }      else if(0 == strcmp("anova",s)){	if(0 != the_kernel.kernel){	  delete the_kernel.kernel;	};	the_kernel.kernel = new kernel_anova_c();	data_stream >> *(the_kernel.kernel);      }      else if(0 == strcmp("fourier",s)){	if(0 != the_kernel.kernel){	  delete the_kernel.kernel;	};	the_kernel.kernel = new kernel_fourier_c();	data_stream >> *(the_kernel.kernel);      }      else if(0 == strcmp("reg_fourier",s)){	if(0 != the_kernel.kernel){	  delete the_kernel.kernel;	};	the_kernel.kernel = new kernel_reg_fourier_c();	data_stream >> *(the_kernel.kernel);      }      else if(0 == strcmp("exponential",s)){	if(0 != the_kernel.kernel){	  delete the_kernel.kernel;	};	the_kernel.kernel = new kernel_exponential_c();	data_stream >> *(the_kernel.kernel);      }      else if((0==strcmp("complete_matrix",s))||(0==strcmp("comp",s))){	if(0 != the_kernel.kernel){	  delete the_kernel.kernel;	};	the_kernel.kernel = new kernel_regularized_c();	data_stream >> *(the_kernel.kernel);      }      else if((0==strcmp("regularized",s))||(0==strcmp("reg",s))){	if(0 != the_kernel.kernel){	  delete the_kernel.kernel;	};	the_kernel.kernel = new kernel_regularized_c();	data_stream >> *(the_kernel.kernel);      }      else if((0==strcmp("aggregation",s))||(0==strcmp("sum_aggregation",s))){	if(0 != the_kernel.kernel){	  delete the_kernel.kernel;	};	the_kernel.kernel = new kernel_aggregation_c();	data_stream >> *(the_kernel.kernel);      }      else if(0 == strcmp("prod_aggregation",s)){	if(0 != the_kernel.kernel){	  delete the_kernel.kernel;	};	the_kernel.kernel = new kernel_prod_aggregation_c();	data_stream >> *(the_kernel.kernel);      }      else if(0 == strcmp("zero",s)){	if(0 != the_kernel.kernel){	  delete the_kernel.kernel;	};	the_kernel.kernel = new kernel_zero_c();	data_stream >> *(the_kernel.kernel);      }      else if(0 == strcmp("lintransform",s)){	if(0 != the_kernel.kernel){	  delete the_kernel.kernel;	};	the_kernel.kernel = new kernel_lintransform_c();	data_stream >> *(the_kernel.kernel);      }      else if(0 == strcmp("user",s)){	if(0 != the_kernel.kernel){	  delete the_kernel.kernel;	};	the_kernel.kernel = new kernel_user_c();	data_stream >> *(the_kernel.kernel);      }      else if(0 == strcmp("user2",s)){	if(0 != the_kernel.kernel){	  delete the_kernel.kernel;	};	the_kernel.kernel = new kernel_user2_c();	data_stream >> *(the_kernel.kernel);      }      // insert code for other kernels here      else{	char* t = new char[MAXCHAR];	strcpy(t,"Unknown kernel type: ");	strcat(t,s);	throw read_exception(t);      };    }    else{      cout<<"read: "<<s<<endl;      throw read_exception("kernel type has to be defined first");    };  };  delete []s;  return data_stream;};ostream& operator << (ostream& data_stream, kernel_container_c& the_kernel){  if(0 != the_kernel.kernel){    data_stream << *(the_kernel.kernel);  }  else{    data_stream << "Empty kernel"<<endl;  };  return data_stream;};/** * * kernel_c * **/kernel_c::kernel_c(){  dim =0;  cache_size=0;  examples_size = 0;  rows = 0;  last_used = 0;  index = 0;  counter=0;  // cache profiling:  //  cache_misses = 0;  //  cache_access = 0;};kernel_c::~kernel_c(){  //  cout<<"destructor"<<endl;  // cache profiling:  //  cout<<cache_access<<" access to the cache"<<endl;  //  cout<<cache_misses<<" cache misses ("<<100.0*(SVMFLOAT)cache_misses/((SVMFLOAT)cache_access)<<"%)"<<endl;  clean_cache();};SVMFLOAT kernel_c::calculate_K(const SVMINT i, const SVMINT j){  //  cout<<"K("<<i<<","<<j<<")"<<endl;  //    if(cached(i) && cached(j)){  //      // both are cached -> not shrinked  //      return(rows[lookup(i)][lookup(j)]);  //    };//   SVMINT pos_x = lookup(i);//   SVMINT pos_y = lookup(j);//   if((index[pos_x] == i) && (index[pos_y] == j)//      && (last_used[pos_x] != 0) && (last_used[pos_y] != 0)){//     return rows[pos_x][j];//   };  svm_example x = the_examples->get_example(i);  svm_example y = the_examples->get_example(j);  return(calculate_K(x,y));};inlineSVMFLOAT kernel_c::calculate_K(const svm_example x, const svm_example y){  // default is inner product  return innerproduct(x,y); };inlineSVMFLOAT kernel_c::innerproduct(const svm_example x, const svm_example y){  // returns x*y  SVMFLOAT result=0;  svm_attrib* att_x = x.example;  svm_attrib* att_y = y.example;  svm_attrib* length_x = &(att_x[x.length]);  svm_attrib* length_y = &(att_y[y.length]);  while((att_x < length_x) && (att_y < length_y)){    if(att_x->index == att_y->index){      result += (att_x->att)*(att_y->att);      att_x++;      att_y++;    }    else if(att_x->index < att_y->index){      att_x++;    }    else{      att_y++;    };  };  return result;};int kernel_c::cached(const SVMINT i){  int ok;  SVMINT pos = lookup(i);  if(index[pos] == i){    if(last_used[pos] > 0){      ok = 1;    }    else{      ok = 0;    };  }  else{    ok = 0;  };  return(ok);};SVMFLOAT kernel_c::norm2(const svm_example x, const svm_example y){  // returns ||x-y||^2  SVMFLOAT result=0;  SVMINT length_x = x.length;  SVMINT length_y = y.length;  svm_attrib* att_x = x.example;  svm_attrib* att_y = y.example;  SVMINT pos_x=0;  SVMINT pos_y=0;  SVMFLOAT dummy;  while((pos_x < length_x) && (pos_y < length_y)){    if(att_x[pos_x].index == att_y[pos_y].index){      dummy = att_x[pos_x++].att-att_y[pos_y++].att;      result += dummy*dummy;    }    else if(att_x[pos_x].index < att_y[pos_y].index){      dummy = att_x[pos_x++].att;      result += dummy*dummy;    }    else{      dummy = att_y[pos_y++].att;      result += dummy*dummy;    };  };  while(pos_x < length_x){    dummy = att_x[pos_x++].att;    result += dummy*dummy;  };  while(pos_y < length_y){    dummy = att_y[pos_y++].att;    result += dummy*dummy;  };  return result;};int kernel_c::check(){  // check cache integrity, for debugging  int result = 1;  cout<<"Checking cache"<<endl;  SVMINT i;  // rows != 0  for(i=0;i<cache_size;i++){    if(rows[i] == 0){      cout<<"ERROR: row["<<i<<"] = 0"<<endl;      result = 0;    };  };  cout<<"rows[i] checked"<<endl;  // 0 <= index <= examples_size  if(index != 0){    SVMINT last_i=index[0];    for(i=0;i<=cache_size;i++){      if(index[i]<0){	cout<<"ERROR: index["<<i<<"] = "<<index[i]<<endl;	result = 0;      };      if(index[i]>examples_size){	cout<<"ERROR: index["<<i<<"] = "<<index[i]<<endl;	result = 0;      };      if(index[i]<last_i){	cout<<"ERROR: index["<<i<<"] descending"<<endl;	result = 0;      };      last_i = index[i];    };  };  cout<<"index[i] checked"<<endl;  // 0 <= last_used <= counter  for(i=0;i<cache_size;i++){    if(last_used[i]<0){      cout<<"ERROR: last_used["<<i<<"] = "<<last_used[i]<<endl;      result = 0;    };    if(last_used[i]>counter){      cout<<"ERROR: last_used["<<i<<"] = "<<last_used[i]<<endl;      result = 0;    };  };  cout<<"last_used[i] checked"<<endl;  cout<<"complete cache test"<<endl;  SVMFLOAT* adummy;  SVMINT i2;  for(i2=0;i2<cache_size;i2++){    cout<<i2<<" "; cout.flush();    adummy = new SVMFLOAT[examples_size];    for(SVMINT ai=0;ai<examples_size;ai++) adummy[ai] = (rows[i2])[ai];    delete [](rows[i2]);    rows[i] = adummy;  }  cout<<"cache test succeeded"<<endl;  return result;};void kernel_c::init(SVMINT cache_MB, example_set_c* new_examples){//   cout<<"init"<<endl;//   cout<<"cache_size = "<<cache_size<<endl;//   cout<<"examples_size = "<<examples_size<<endl;//   cout<<"rows = "<<rows<<endl;//   if(rows != 0)cout<<"rows[0] = "<<rows[0]<<endl;  clean_cache();  the_examples = new_examples;   dim = the_examples->get_dim();  cache_mem = cache_MB*1048576;  // check if reserved memory big enough  if(cache_mem<(SVMINT)(sizeof(SVMFLOAT)*the_examples->size()+sizeof(SVMFLOAT*)+2*sizeof(SVMINT))){    // not enough space for one example, increaee    cache_mem = sizeof(SVMFLOAT)*the_examples->size()+sizeof(SVMFLOAT*)+2*sizeof(SVMINT);  };  set_examples_size(the_examples->size());};void kernel_c::clean_cache(){  counter=0;  if(rows != 0){    SVMINT i;    for(i=0;i<cache_size;i++){      if(0 != rows[i]){	delete [](rows[i]);	rows[i]=0;      };    };    delete []rows;  };  if(last_used != 0) delete []last_used;  if(index != 0) delete []index;  rows=0;  last_used=0;  index=0;  cache_size=0;  examples_size=0;};inlineSVMINT kernel_c::lookup(const SVMINT i){  // find row i in cache  // returns pos of element i if i in cache,  // returns pos of smallest element larger than i otherwise  SVMINT low;  SVMINT high;  SVMINT med;  low=0;  high=cache_size;  // binary search  while(low<high){    med = (low+high)/2;    if(index[med]>=i){      high=med;    }    else{      low=med+1;    };  };  return high;};void kernel_c::overwrite(const SVMINT i, const SVMINT j){  // overwrite entry i with entry j  // WARNING: only to be used for shrinking!  // i in cache?  SVMINT pos_i=lookup(i);  SVMINT pos_j=lookup(j);  if((index[pos_i] == i) && (index[pos_j] == j)){    // swap pos_i and pos_j    SVMFLOAT* dummy = rows[pos_i];    rows[pos_i] = rows[pos_j];    rows[pos_j] = dummy;    last_used[pos_i] = last_used[pos_j];  }  else{    // mark rows as invalid    if(index[pos_i] == i){      last_used[pos_i] = 0;    }    else if(index[pos_j] == j){      last_used[pos_j] = 0;    };  };  // swap i and j in all rows  SVMFLOAT* my_row;  for(pos_i=0;pos_i<cache_size;pos_i++){    my_row = rows[pos_i];    if(my_row != 0){      my_row[i] = my_row[j];    };  };};void kernel_c::set_examples_size(const SVMINT new_examples_size){  // cache row with new_examples_size entries only    // cout<<"shrinking from "<<examples_size<<" to "<<new_examples_size<<endl;  if(new_examples_size>examples_size){    clean_cache();    examples_size = new_examples_size;    cache_size = cache_mem/(sizeof(SVMFLOAT)*examples_size+sizeof(SVMFLOAT*)+2*sizeof(SVMINT));    if(cache_size>examples_size){      cache_size = examples_size;    };    // init     rows = new SVMFLOAT*[cache_size];    last_used = new SVMINT[cache_size];    index = new SVMINT[cache_size+1];    SVMINT i;    for(i=0;i<cache_size;i++){      rows[i] = 0; // new SVMFLOAT[new_examples_size];      last_used[i] = 0;      index[i] = new_examples_size;    };    index[cache_size] = new_examples_size;  }  else if(new_examples_size<examples_size){    // copy as much rows into new cache as possible    SVMINT old_cache_size=cache_size;    cache_size = cache_mem/(sizeof(SVMFLOAT)*new_examples_size+sizeof(SVMFLOAT*)+2*sizeof(SVMINT));    if(cache_size > new_examples_size){      cache_size = new_examples_size;    };    if(cache_size>=old_cache_size){      // skip it, enough space available      cache_size=old_cache_size;      return;    };    SVMFLOAT** new_rows = new SVMFLOAT*[cache_size];    SVMINT* new_last_used = new SVMINT[cache_size];    SVMINT* new_index = new SVMINT[cache_size+1];    SVMINT old_pos=0;    SVMINT new_pos=0;    new_index[cache_size] = new_examples_size;    while((old_pos<old_cache_size) && (new_pos < cache_size)){      if(last_used[old_pos] > 0){	// copy example into new cache at new_pos	new_rows[new_pos] = new SVMFLOAT[new_examples_size];

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本亚洲欧美天堂免费| 欧美一区二区三区四区在线观看| 国产大陆a不卡| 久久天天做天天爱综合色| 精久久久久久久久久久| xf在线a精品一区二区视频网站| 韩日欧美一区二区三区| 久久影院午夜论| 国产精品77777竹菊影视小说| 欧美日韩高清在线| 日韩成人伦理电影在线观看| 日韩三级免费观看| 国产福利91精品一区| 亚洲图片另类小说| 粉嫩在线一区二区三区视频| 国产精品传媒视频| 欧美日韩一区二区三区视频| 日本少妇一区二区| 欧美日韩免费不卡视频一区二区三区| 国产丝袜美腿一区二区三区| 天堂成人免费av电影一区| 色婷婷综合久色| 亚洲chinese男男1069| 日韩一区二区电影| 成人激情电影免费在线观看| 亚洲高清三级视频| 日韩视频一区在线观看| www.性欧美| 日韩国产欧美在线播放| 国产蜜臀97一区二区三区| 欧美亚一区二区| 国产精品一区二区三区99| 91麻豆精品91久久久久久清纯| 一二三区精品视频| 久久九九99视频| 欧美日韩日本视频| 99免费精品视频| 久久99国产精品免费网站| 亚洲免费在线观看视频| 一本大道久久a久久精二百| 裸体在线国模精品偷拍| 久久综合九色综合久久久精品综合| 久久成人免费电影| 久久网站热最新地址| 欧美丝袜自拍制服另类| 国产成人三级在线观看| 蜜桃av一区二区在线观看| 亚洲激情综合网| 欧美高清在线精品一区| av不卡在线观看| 国产一区视频网站| 亚洲成人av免费| 国产精品久久久久久久岛一牛影视 | 欧美日韩高清一区二区不卡 | 中文字幕+乱码+中文字幕一区| 国产凹凸在线观看一区二区| 国产精品另类一区| 日韩欧美不卡在线观看视频| 欧美色综合网站| 色欧美日韩亚洲| jvid福利写真一区二区三区| 国产中文字幕一区| 国产精品天干天干在线综合| 精品国产亚洲在线| 91精品国产品国语在线不卡| 制服丝袜亚洲播放| 成人av网站大全| 国产成人亚洲综合a∨婷婷 | 亚洲国产高清在线观看视频| 日韩一区和二区| 国产成人aaa| 亚洲国产cao| 亚洲国产一区二区a毛片| 亚洲欧美韩国综合色| 中文字幕亚洲综合久久菠萝蜜| 欧美日韩国产乱码电影| 欧美丝袜第三区| 欧美日韩国产小视频在线观看| 美女高潮久久久| 另类小说色综合网站| 蜜桃视频免费观看一区| 麻豆精品精品国产自在97香蕉| 亚洲视频小说图片| 最新久久zyz资源站| 中文字幕一区二区视频| 亚洲视频网在线直播| 日韩欧美成人一区二区| 久久综合色综合88| 国产欧美一二三区| 国产精品毛片大码女人| 亚洲欧美日韩在线不卡| 亚洲一区二区视频在线观看| 亚洲国产色一区| 亚洲欧洲日韩女同| 亚洲精品日韩专区silk | 欧美日韩国产一级二级| 91精品国产欧美一区二区成人| 91在线porny国产在线看| 色婷婷综合在线| 在线成人高清不卡| 久久久国产精华| 日韩理论片在线| 亚洲成va人在线观看| 蜜臀a∨国产成人精品| 国产69精品久久久久777| 蜜桃视频一区二区三区| 成人手机电影网| 91久久精品日日躁夜夜躁欧美| 国产一区二区0| 色呦呦国产精品| 69p69国产精品| 国产欧美日韩视频在线观看| 日韩毛片精品高清免费| 免费高清视频精品| 国产成人免费在线观看不卡| 91国内精品野花午夜精品| 日韩欧美激情在线| 亚洲视频精选在线| 毛片不卡一区二区| a4yy欧美一区二区三区| 日韩一区二区免费电影| 国产精品电影一区二区| 老司机精品视频在线| 93久久精品日日躁夜夜躁欧美| zzijzzij亚洲日本少妇熟睡| 成人av资源下载| 正在播放一区二区| 亚洲日本丝袜连裤袜办公室| 1000精品久久久久久久久| 亚洲美女屁股眼交3| 色综合激情久久| 精品免费视频一区二区| 亚洲色图第一区| 国产成人免费网站| 亚洲人成7777| 成人在线一区二区三区| 亚洲高清不卡在线| 色国产综合视频| 青青草国产成人av片免费| 正在播放亚洲一区| 高清成人免费视频| 一区二区三区视频在线观看 | 福利一区福利二区| 亚洲色图丝袜美腿| 一区二区三区国产精华| 99久久婷婷国产精品综合| 国产精品电影院| 粉嫩绯色av一区二区在线观看| 亚洲欧美日韩在线不卡| 一区二区在线观看视频在线观看| 国产欧美日韩在线视频| 开心九九激情九九欧美日韩精美视频电影| 一个色在线综合| 欧美大度的电影原声| 日精品一区二区| 国产精品美日韩| 欧美哺乳videos| 91久久一区二区| av亚洲精华国产精华精| 日韩av网站在线观看| 亚洲乱码一区二区三区在线观看| 亚洲免费观看在线视频| 亚洲精品在线观看视频| 欧美日韩亚洲综合一区二区三区| 日韩美一区二区三区| av在线播放不卡| 久久99蜜桃精品| 欧美高清性hdvideosex| 国内精品国产成人| 国产精品国产三级国产普通话三级 | 床上的激情91.| 中文字幕一区二区三区视频| 欧美亚洲国产bt| 久久精品免费在线观看| 北岛玲一区二区三区四区| 欧美激情综合五月色丁香| 成人高清视频免费观看| 青娱乐精品视频| 亚洲一区二区三区三| 国产欧美日韩综合| 国内精品伊人久久久久av影院 | 极品销魂美女一区二区三区| 亚洲欧美另类久久久精品2019| 九色综合狠狠综合久久| 国产精品每日更新在线播放网址| 国产精品原创巨作av| 日本中文字幕一区| 日本色综合中文字幕| 久久se精品一区二区| 国产精品亚洲а∨天堂免在线| 日韩午夜激情视频| 色久优优欧美色久优优| 国产精品色一区二区三区| 欧美性大战久久久久久久蜜臀| 欧美高清视频不卡网| 91在线视频观看| 欧美嫩在线观看| 国产精品青草久久| 亚洲大片一区二区三区| 免费精品视频在线|