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

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

?? kernel.cpp

?? cvm的c語言版
?? 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一区二区三区免费野_久草精品视频
成人国产视频在线观看| 亚洲国产日日夜夜| 在线不卡一区二区| 日本精品一区二区三区高清| 成人免费黄色大片| 成人va在线观看| 岛国一区二区在线观看| 成人一二三区视频| 成人午夜精品一区二区三区| 成人综合在线网站| 粉嫩久久99精品久久久久久夜 | 中文字幕一区二区三区四区不卡 | 2021久久国产精品不只是精品| 欧美精品在线一区二区三区| 欧美日韩一区二区在线观看视频| 欧美亚洲一区三区| 制服.丝袜.亚洲.中文.综合| 日韩天堂在线观看| 337p日本欧洲亚洲大胆精品| 久久久一区二区三区| 中文天堂在线一区| 亚洲一区二区欧美日韩| 三级影片在线观看欧美日韩一区二区 | 成人精品高清在线| 色婷婷久久久久swag精品 | 九九在线精品视频| 国产91精品免费| 丰满少妇在线播放bd日韩电影| 91原创在线视频| 欧美日韩国产影片| 欧美日韩久久一区二区| 欧美一级高清片| 日韩一本二本av| 国产婷婷色一区二区三区| ●精品国产综合乱码久久久久| 香蕉av福利精品导航| 国内精品久久久久影院一蜜桃| 972aa.com艺术欧美| 91麻豆精品国产91久久久久久| 久久免费偷拍视频| 一二三四社区欧美黄| 久久av中文字幕片| 91视频在线观看免费| 日韩免费性生活视频播放| 国产精品二区一区二区aⅴ污介绍| 亚洲高清视频中文字幕| 风间由美一区二区av101| 欧美日本精品一区二区三区| 国产精品麻豆久久久| 午夜免费久久看| 99re热这里只有精品视频| 欧美不卡激情三级在线观看| 一区二区三区影院| 国产成人午夜精品5599| 欧美电视剧免费观看| 一区二区三区在线观看国产| 国产精品66部| 成人一区二区视频| 色女孩综合影院| 欧美高清你懂得| 久久精品在这里| 亚洲少妇30p| 日本一道高清亚洲日美韩| 日韩精品一二三四| 91美女片黄在线观看91美女| 91黄视频在线| 欧美国产精品v| 国内精品在线播放| 欧美日韩一区二区不卡| 国产午夜精品一区二区| 日韩二区在线观看| 欧美日韩国产美| 伊人夜夜躁av伊人久久| 色综合天天在线| 亚洲视频 欧洲视频| 97久久超碰精品国产| 中文字幕日本乱码精品影院| 成人午夜激情在线| 中文字幕一区二区三| 国产成人精品亚洲日本在线桃色| 国产亚洲短视频| 日本在线观看不卡视频| av激情综合网| 国产日韩欧美a| 亚洲午夜久久久久久久久电影院| 国产精品一区一区三区| 九九九精品视频| 国产99久久久国产精品潘金| 欧美一区二区视频在线观看2020| 亚洲日本在线天堂| 处破女av一区二区| 久久这里只有精品首页| 日韩和欧美的一区| 国产肉丝袜一区二区| 精品一区二区三区久久久| 欧美一卡二卡在线观看| 亚洲地区一二三色| 欧美不卡123| 极品少妇xxxx偷拍精品少妇| 国产精品网站一区| 成人黄色国产精品网站大全在线免费观看| 国产精品久久久久久久久免费相片 | 亚洲一区在线免费观看| 欧美精品1区2区| 午夜精品成人在线| 欧美精品一区二区三区蜜桃| 极品少妇xxxx偷拍精品少妇| 国产精品私人影院| 不卡影院免费观看| 亚洲va欧美va天堂v国产综合| 欧美日韩视频在线一区二区| 国产在线播放一区| 国产日韩欧美精品综合| 91国模大尺度私拍在线视频| 一区二区三区四区av| 波多野结衣在线一区| 中文字幕在线观看不卡视频| 91免费国产在线| 亚洲6080在线| 国产精品久久久久aaaa樱花| 不卡av在线网| 免费观看成人鲁鲁鲁鲁鲁视频| 精品美女一区二区三区| 99久久99久久久精品齐齐| 亚洲国产成人av好男人在线观看| 日韩精品一区在线观看| 成人不卡免费av| 亚洲高清不卡在线观看| 不卡的av电影| 舔着乳尖日韩一区| wwwwxxxxx欧美| 99久久99久久综合| 视频一区二区三区中文字幕| 精品粉嫩aⅴ一区二区三区四区| 国产精品一区二区久久精品爱涩| 中文字幕一区免费在线观看| 国产69精品久久99不卡| 亚洲久本草在线中文字幕| 国产农村妇女精品| 在线观看一区不卡| 一道本成人在线| 国产一区二区三区在线观看免费| 日韩激情视频网站| 国产精品美女久久久久aⅴ| 欧美成人a视频| 色欧美88888久久久久久影院| 成人黄页在线观看| 蜜桃视频第一区免费观看| 亚洲成人一二三| 国产精品久久久久久久久快鸭 | 欧美手机在线视频| 91福利在线观看| 黄色小说综合网站| 麻豆国产91在线播放| 一区二区视频在线看| 亚洲欧美偷拍卡通变态| 久久久五月婷婷| 在线综合+亚洲+欧美中文字幕| 亚洲国产欧美在线人成| 欧美一区日本一区韩国一区| 成人动漫中文字幕| 国内久久婷婷综合| 久久精品国产一区二区三区免费看| 亚洲人成伊人成综合网小说| 91精品国产乱| 在线免费一区三区| 美女免费视频一区二区| 精品一二线国产| 麻豆久久久久久久| 婷婷综合五月天| 一区二区三区欧美在线观看| 国产精品免费观看视频| 国产精品你懂的| 亚洲色图欧美偷拍| 国产欧美日韩亚州综合 | 午夜精品一区二区三区电影天堂 | 亚洲男人的天堂在线观看| 久久久久久影视| 精品欧美一区二区在线观看| 日韩影视精彩在线| 尤物av一区二区| 日韩一区日韩二区| 国产精品每日更新| 国产精品久久毛片| 日本一区二区电影| 国产日韩欧美精品电影三级在线| 欧美成人一级视频| 在线一区二区视频| 精品国产1区二区| 精品国产欧美一区二区| 日韩精品一区二区三区在线| 欧美精品一区二区三区蜜桃视频| 欧美一区二视频| 欧美sm美女调教| 在线电影欧美成精品| 国产午夜精品一区二区| 亚洲天堂久久久久久久| 亚洲乱码日产精品bd| 亚洲成人1区2区| 一区二区三区四区蜜桃|