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

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

?? svm_c.cpp

?? mySvm的最新源程序
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
  SVMINT i,j;  SVMINT pos_i, pos_j;  SVMFLOAT* kernel_row;  SVMFLOAT sum_WS;  for(pos_i=0;pos_i<working_set_size;pos_i++){    i = working_set[pos_i];    // put row sort_i in hessian     kernel_row = kernel->get_row(i);    sum_WS=0;    //    for(pos_j=0;pos_j<working_set_size;pos_j++){    for(pos_j=0;pos_j<pos_i;pos_j++){      j = working_set[pos_j];      // put all elements K(i,j) in hessian, where j in WS      if(((which_alpha[pos_j] < 0) && (which_alpha[pos_i] < 0)) ||	 ((which_alpha[pos_j] > 0) && (which_alpha[pos_i] > 0))){	// both i and j positive or negative	(qp.H)[pos_i*working_set_size+pos_j] = kernel_row[j];	(qp.H)[pos_j*working_set_size+pos_i] = kernel_row[j];      }      else{	// one of i and j positive, one negative	(qp.H)[pos_i*working_set_size+pos_j] = -kernel_row[j];	(qp.H)[pos_j*working_set_size+pos_i] = -kernel_row[j];      };    };    for(pos_j=0;pos_j<working_set_size;pos_j++){      j = working_set[pos_j];      sum_WS+=all_alphas[j]*kernel_row[j];    };    // set main diagonal     (qp.H)[pos_i*working_set_size+pos_i] = kernel_row[i];    // linear and box constraints    if(which_alpha[pos_i]<0){      // alpha      (qp.A)[pos_i] = -1;      // lin(alpha) = y_i+eps-sum_{i not in WS} alpha_i K_{ij}      //            = y_i+eps-sum_i+sum_{i in WS}      (qp.c)[pos_i] = all_ys[i]+epsilon_pos-sum[i]+sum_WS;      primal[pos_i] = -all_alphas[i];      (qp.u)[pos_i] = Cpos;    }    else{      // alpha^*      (qp.A)[pos_i] = 1;      (qp.c)[pos_i] = -all_ys[i]+epsilon_neg+sum[i]-sum_WS;      primal[pos_i] = all_alphas[i];      (qp.u)[pos_i] = Cneg;    };  };  if(parameters->quadraticLossNeg){    for(pos_i=0;pos_i<working_set_size;pos_i++){      if(which_alpha[pos_i]>0){	(qp.H)[pos_i*(working_set_size+1)] += 1/Cneg;	(qp.u)[pos_i] = infinity;      };    };  };  if(parameters->quadraticLossPos){    for(pos_i=0;pos_i<working_set_size;pos_i++){      if(which_alpha[pos_i]<0){	(qp.H)[pos_i*(working_set_size+1)] += 1/Cpos;	(qp.u)[pos_i] = infinity;      };    };  };  time_update += get_time() - time_start; };svm_result svm_c::test(example_set_c* test_examples, int verbose){  svm_result the_result;  test_set = test_examples;  SVMINT i;  SVMFLOAT MAE=0;  SVMFLOAT MSE=0;  SVMFLOAT actloss=0;  SVMFLOAT theloss=0;  SVMFLOAT theloss_pos=0;  SVMFLOAT theloss_neg=0;  SVMINT countpos=0;  SVMINT countneg=0;  // for pattern:  SVMINT correct_pos=0;  SVMINT correct_neg=0;  SVMINT total_pos=0;  SVMINT total_neg=0;  SVMFLOAT prediction;  SVMFLOAT y;  svm_example example;  for(i=0;i<test_set->size();i++){    example = test_set->get_example(i);    prediction = predict(example);    y = examples->unscale_y(test_set->get_y(i));    MAE += abs(y-prediction);    MSE += (y-prediction)*(y-prediction);    actloss=loss(prediction,y);    theloss+=actloss;    if(y < prediction-parameters->epsilon_pos){      theloss_pos += actloss;      countpos++;    }    else if(y > prediction+parameters->epsilon_neg){      theloss_neg += actloss;      countneg++;    };    // if pattern!    if(is_pattern){      if(y>0){	if(prediction>0){	  correct_pos++;	};	total_pos++;      }      else{	if(prediction<=0){	  correct_neg++;	};	total_neg++;      };    };      };  if(countpos != 0){    theloss_pos /= (SVMFLOAT)countpos;  };  if(countneg != 0){    theloss_neg /= (SVMFLOAT)countneg;  };  the_result.MAE =  MAE / (SVMFLOAT)test_set->size();  the_result.MSE =  MSE / (SVMFLOAT)test_set->size();  the_result.loss = theloss/test_set->size();  the_result.loss_pos = theloss_pos;  the_result.loss_neg = theloss_neg;  the_result.number_svs = 0;  the_result.number_bsv = 0;  if(is_pattern){    the_result.accuracy = ((SVMFLOAT)(correct_pos+correct_neg))/((SVMFLOAT)(total_pos+total_neg));    the_result.precision = ((SVMFLOAT)correct_pos/((SVMFLOAT)(correct_pos+total_neg-correct_neg)));    the_result.recall = ((SVMFLOAT)correct_pos/(SVMFLOAT)total_pos);  }  else{    the_result.accuracy = -1;    the_result.precision = -1;    the_result.recall = -1;  };  if(verbose){    cout << "Average loss  : "<<(theloss/test_set->size())<<endl;    cout << "Avg. loss pos : "<<theloss_pos<<"\t ("<<countpos<<" occurences)"<<endl;    cout << "Avg. loss neg : "<<theloss_neg<<"\t ("<<countneg<<" occurences)"<<endl;    cout << "Mean absolute error : "<<the_result.MAE<<endl;    cout << "Mean squared error  : "<<the_result.MSE<<endl;    if(is_pattern){      // output precision, recall and accuracy      cout<<"Accuracy  : "<<the_result.accuracy<<endl;      cout<<"Precision : "<<the_result.precision<<endl;      cout<<"Recall    : "<<the_result.recall<<endl;      // nice printout ;-)      int rows = (int)(1+log10((SVMFLOAT)(total_pos+total_neg)));      int now_digits = rows+2;      int i,j;      cout<<endl;      cout<<"Predicted values:"<<endl;      cout<<"   |";      for(i=0;i<rows;i++){ cout<<" "; };      cout<<"+  |";      for(j=0;j<rows;j++){ cout<<" "; };      cout<<"-"<<endl;            cout<<"---+";      for(i=0;i<now_digits;i++){ cout<<"-"; };      cout<<"-+-";      for(i=0;i<now_digits;i++){ cout<<"-"; };      cout<<endl;            cout<<" + |  ";      now_digits=rows-(int)(1+log10((SVMFLOAT)correct_pos))-1;      for(i=0;i<now_digits;i++){ cout<<" "; };      cout<<correct_pos<<"  |  ";      now_digits=rows-(int)(1+log10((SVMFLOAT)(total_pos-correct_pos)))-1;      for(i=0;i<now_digits;i++){ cout<<" "; };      cout<<total_pos-correct_pos<<"    (true pos)"<<endl;            cout<<" - |  ";      now_digits=rows-(int)(1+log10((SVMFLOAT)(total_neg-correct_neg)))-1;      for(i=0;i<now_digits;i++){ cout<<" "; };      cout<<(total_neg-correct_neg)<<"  |  ";      now_digits=rows-(int)(1+log10((SVMFLOAT)correct_neg))-1;      for(i=0;i<now_digits;i++){ cout<<" "; };      cout<<correct_neg<<"    (true neg)"<<endl;      cout<<endl;    };  };  return the_result;};void svm_c::optimize(){  // optimizer-specific call  // get time  long time_start = get_time();  qp.n = working_set_size;  SVMINT i;  SVMINT j;  // equality constraint  qp.b[0]=0;  for(i=0;i<working_set_size;i++){    qp.b[0] += all_alphas[working_set[i]];  };  // set initial optimization parameters  SVMFLOAT new_target=0;  SVMFLOAT old_target=0;  SVMFLOAT target_tmp;  for(i=0;i<working_set_size;i++){    target_tmp = primal[i]*qp.H[i*working_set_size+i]/2;    for(j=0;j<i;j++){      target_tmp+=primal[j]*qp.H[j*working_set_size+i];    };    target_tmp+=qp.c[i];    old_target+=target_tmp*primal[i];  };  SVMFLOAT new_constraint_sum=0;  SVMFLOAT my_is_zero = is_zero;  SVMINT sv_count=working_set_size;  qp.n = working_set_size;  // optimize  int KKTerror=1;  int convError=0;  smo.set_max_allowed_error(convergence_epsilon);  // loop while some KKT condition is not valid (alpha=0)  int result;  if(biased){    result = smo.smo_solve(&qp,primal);    lambda_WS = smo.get_lambda_eq();  }  else{    result = smo.smo_solve_single(&qp,primal);    lambda_WS = 0.0;  };  /////////// new  SVMINT it=3;  if(! is_pattern){      // iterate optimization 3 times with changed sign on variables, if KKT conditions are not satisfied    SVMFLOAT lambda_lo;    while(KKTerror && (it>0)){      KKTerror = 0;      it--;      for(i=0;i<working_set_size;i++){	if(primal[i]<is_zero){	  lambda_lo =  epsilon_neg + epsilon_pos - qp.c[i];	  for(j=0;j<working_set_size;j++){	    lambda_lo -= primal[j]*qp.H[i*working_set_size+j];	  };	  if(qp.A[i] > 0){	    lambda_lo -= lambda_WS;	  }	  else{	    lambda_lo += lambda_WS;	  };	  if(lambda_lo<-convergence_epsilon){	    // change sign of i	    KKTerror=1;	    qp.A[i] = -qp.A[i];	    which_alpha[i] = -which_alpha[i];	    primal[i] = -primal[i];	    qp.c[i] = epsilon_neg + epsilon_pos - qp.c[i];	    if(qp.A[i]>0){	      qp.u[i] = Cneg;	    }	    else{	      qp.u[i] = Cpos;	    };	    for(j=0;j<working_set_size;j++){	      qp.H[i*working_set_size+j] = -qp.H[i*working_set_size+j];	      qp.H[j*working_set_size+i] = -qp.H[j*working_set_size+i];	    };	    if(parameters->quadraticLossNeg){	      if(which_alpha[i]>0){		(qp.H)[i*(working_set_size+1)] += 1/Cneg;		(qp.u)[i] = infinity;	      }	      else{		// previous was neg		(qp.H)[i*(working_set_size+1)] -= 1/Cneg;	      };	    };	    if(parameters->quadraticLossPos){	      if(which_alpha[i]<0){		(qp.H)[i*(working_set_size+1)] += 1/Cpos;		(qp.u)[i] = infinity;	      }	      else{		//previous was pos		(qp.H)[i*(working_set_size+1)] -= 1/Cpos;	      };	    };	  };	};      };      result = smo.smo_solve(&qp,primal);      if(biased){	lambda_WS = smo.get_lambda_eq();      }; // sonst 0 beibehalten    };  };  KKTerror = 1;  //////////////////////  if(parameters->verbosity>=5){    cout<<"smo ended with result "<<result<<endl;    cout<<"lambda_WS = "<<lambda_WS<<endl;    cout<<"smo: Resulting values:"<<endl;    for(i=0;i<working_set_size;i++){      cout<<i<<": "<<primal[i]<<endl;     };  };  while(KKTerror){    // clip    sv_count=working_set_size;    new_constraint_sum=qp.b[0];    if(biased){      // more checks for feasibility      for(i=0;i<working_set_size;i++){	// check if at bound	if(primal[i] <= my_is_zero){	  // at lower bound	  primal[i] = qp.l[i];	  sv_count--;	}	else if(qp.u[i]-primal[i] <= my_is_zero){	  // at upper bound	  primal[i] = qp.u[i];	  sv_count--;	};	new_constraint_sum -= qp.A[i]*primal[i];      };            // enforce equality constraint      if(sv_count>0){	new_constraint_sum /= (SVMFLOAT)sv_count;	if(parameters->verbosity>=5){	  cout<<"adjusting "<<sv_count<<" alphas by "<<new_constraint_sum<<endl;	};	for(i=0;i<working_set_size;i++){	  if((primal[i] > qp.l[i]) && 	     (primal[i] < qp.u[i])){	    // real sv	    primal[i] += qp.A[i]*new_constraint_sum;	  };	};      }      else if(abs(new_constraint_sum)>(SVMFLOAT)working_set_size*is_zero){	// error, can't get feasible point	if(parameters->verbosity>=5){	  cout<<"WARNING: No SVs, constraint_sum = "<<new_constraint_sum<<endl;	};	old_target = -infinity; 	//is_ok=0;	convError=1;      };    };    // test descend    new_target=0;    for(i=0;i<working_set_size;i++){      // attention: loqo changes one triangle of H!      target_tmp = primal[i]*qp.H[i*working_set_size+i]/2;      for(j=0;j<i;j++){	target_tmp+=primal[j]*qp.H[j*working_set_size+i];      };      target_tmp+=qp.c[i];      new_target+=target_tmp*primal[i];    };    if(new_target < old_target){      KKTerror = 0;      if(parameters->descend < old_target - new_target){	target_count=0;      }      else{	convError=1;      };      if(parameters->verbosity>=5){	cout<<"descend = "<<old_target-new_target<<endl;      };    }    else if(sv_count > 0){      // less SVs      // set my_is_zero to min_i(primal[i]-qp.l[i], qp.u[i]-primal[i])      my_is_zero = 1e20;      for(i=0;i<working_set_size;i++){	if((primal[i] > qp.l[i]) && (primal[i] < qp.u[i])){	  if(primal[i] - qp.l[i] < my_is_zero){	    my_is_zero = primal[i]-qp.l[i];	  };	  if(qp.u[i]  - primal[i]  < my_is_zero){	    my_is_zero = qp.u[i] - primal[i];	  };	};      };      if(target_count == 0){      	my_is_zero *= 2;      };      if(parameters->verbosity>=5){	cout<<"WARNING: no descend ("<<old_target-new_target	    <<" <= "<<parameters->descend	  //	    <<", alpha_diff = "<<alpha_diff	    <<"), adjusting is_zero to "<<my_is_zero<<endl;	cout<<"new_target = "<<new_target<<endl;      };    }    else{      // nothing we can do      if(parameters->verbosity>=5){	cout<<"WARNING: no descend ("<<old_target-new_target	    <<" <= "<<parameters->descend<<"), stopping."<<endl;      };      KKTerror=0;      convError=1;    };  };  if(1 == convError){    target_count++;    //    sigfig_max+=0.05;    if(old_target < new_target){      for(i=0;i<working_set_size;i++){	primal[i] = qp.A[i]*all_alphas[working_set[i]];      };                                    if(parameters->verbosity>=5){		cout<<"WARNING: Convergence error, restoring old primals"<<endl;       };    };                                            };  if(target_count>50){    // non-recoverable numerical error    convergence_epsilon*=2;    feasible_epsilon = convergence_epsilon;    //    sigfig_max=-log10(is_zero);    if(parameters->verbosity>=1)      cout<<"WARNING: reducing KKT precision to "<<convergence_epsilon<<endl;    target_count=0;  };  time_optimize += get_time() - time_start;};void svm_c::predict(example_set_c* test_examples){  test_set = test_examples;  SVMINT i;  SVMFLOAT prediction;  svm_example example;  for(i=0;i<test_set->size();i++){    example = test_set->get_example(i);    prediction = predict(example);    test_set->put_y(i,prediction);  };  test_set->set_initialised_y();  test_set->put_b(examples->get_b());  if(parameters->verbosity>=4){    cout<<"Prediction generated"<<endl;  };};SVMFLOAT svm_c::predict(svm_example example){   SVMINT i;  svm_example sv;  SVMFLOAT the_sum=examples->get_b();  for(i=0;i<examples_total;i++){    if(all_alphas[i] != 0){      sv = examples->get_example(i);      the_sum += all_alphas[i]*kernel->calculate_K(sv,example);    };  };  the_sum = examples->unscale_y(the_sum);  if(parameters->use_min_prediction){    if(the_sum < parameters->min_prediction){      the_sum = parameters->min_prediction;    };  };  return the_sum;};SVMFLOAT svm_c::predict(SVMINT i){  //   return (sum[i]+examples->get_b());  // numerically more stable:  return predict(examples->get_example(i));};SVMFLOAT svm_c::loss(SVMINT i){  return loss(predict(i),examples->unscale_y(all_ys[i]));};SVMFLOAT svm_c::loss(SVMFLOAT prediction, SVMFLOAT value){  SVMFLOAT theloss = prediction - value;  if(is_pattern){    if(((value > 0) && (prediction > 0)) ||       ((value <= 0) && (prediction <= 0))){      theloss = 0;    }  };  if(theloss > parameters->epsilon_pos){     if(parameters->quadraticLossPos){      theloss = parameters->Lpos*(theloss-parameters->epsilon_pos)	*(theloss-parameters->epsilon_pos);     }    else{      theloss =  parameters->Lpos*(theloss-parameters->epsilon_pos);     };  }  else if(theloss >= -parameters->epsilon_neg){ theloss = 0; }  else{     if(parameters->quadraticLossNeg){      theloss = parameters->Lneg*(-theloss-parameters->epsilon_neg)	*(-theloss-parameters->epsilon_neg);    }    else{      theloss = parameters->Lneg*(-theloss-parameters->epsilon_neg);    };  };  return theloss;};void svm_c::print_special_statistics(){  // nothing special here!};svm_result svm_c::print_statistics(){  // # SV, # BSV, pos&neg, Loss, VCdim  // Pattern: Acc, Rec, Pred  if(parameters->verbosity>=2){    cout<<"----------------------------------------"<<endl;  };  svm_result the_result;  if(test_set->size() <= 0){    if(parameters->verbosity>= 0){      cout << "No training set given" << endl;    };    the_result.loss = -1;    return the_result;  // undefined  };  SVMINT i;  SVMINT svs = 0;  SVMINT bsv = 0;  SVMFLOAT actloss = 0;  SVMFLOAT theloss = 0;  SVMFLOAT theloss_pos=0;  SVMFLOAT theloss_neg=0;  SVMINT countpos=0;  SVMINT countneg=0;  SVMFLOAT min_alpha=infinity;  SVMFLOAT max_alpha=-infinity;  SVMFLOAT norm_w=0;  SVMFLOAT max_norm_x=0;  SVMFLOAT min_norm_x=1e20;  SVMFLOAT norm_x=0;  SVMFLOAT loo_loss_estim=0;  // for pattern:  SVMFLOAT correct_pos=0;  SVMINT correct_neg=0;  SVMINT total_pos=0;  SVMINT total_neg=0;  SVMINT estim_pos=0;  SVMINT estim_neg=0;  SVMFLOAT MSE=0;  SVMFLOAT MAE=0;  SVMFLOAT alpha;  SVMFLOAT prediction;  SVMFLOAT y;  SVMFLOAT xi;  for(i=0;i<examples_total;i++){    // needed before test-loop for performance estimators    norm_w+=all_alphas[i]*sum[i];    alpha=all_alphas[i];    if(alpha!=0){      norm_x = kernel->calculate_K(i,i);      if(norm_x>max_norm_x){	max_norm_x = norm_x;      };      if(norm_x<min_norm_x){	min_norm_x = norm_x;      };    };  };    SVMFLOAT r_delta = max_norm_x;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲人成精品久久久久久| 亚洲高清不卡在线观看| 国产精品入口麻豆原神| 一本久久精品一区二区| 激情文学综合插| 亚洲综合色成人| 久久综合狠狠综合久久激情| 91传媒视频在线播放| 国产精品一区二区你懂的| 亚洲综合免费观看高清完整版| 精品国产髙清在线看国产毛片| 欧美在线综合视频| 国产成人欧美日韩在线电影| 日韩经典中文字幕一区| 一区二区三区在线看| 久久精品夜色噜噜亚洲a∨| 日韩一区二区三区三四区视频在线观看 | 制服丝袜av成人在线看| 99re热这里只有精品视频| 国产成人免费视频一区| 男女男精品网站| 午夜国产精品一区| 亚洲日本va在线观看| 欧美国产一区在线| 久久久一区二区三区捆绑**| 91精品国产一区二区三区蜜臀 | 91麻豆6部合集magnet| 国产.欧美.日韩| 国产自产2019最新不卡| 免费一级欧美片在线观看| 午夜精品久久久久| 午夜久久电影网| 五月天婷婷综合| 日韩精品91亚洲二区在线观看 | 日本一区二区不卡视频| 2021中文字幕一区亚洲| 久久综合中文字幕| 精品1区2区在线观看| 精品福利av导航| 久久欧美中文字幕| 欧美国产日韩a欧美在线观看 | 视频一区欧美日韩| 日韩在线一二三区| 麻豆国产精品777777在线| 久久99精品久久久久婷婷| 激情综合网天天干| 国产成人精品一区二区三区四区| 国产精品一区二区在线观看网站| 高清在线成人网| 99精品一区二区| 色综合婷婷久久| 欧美午夜精品理论片a级按摩| 欧美丝袜丝nylons| 欧美一二三区精品| 国产色产综合色产在线视频 | 亚洲精品乱码久久久久久黑人 | 成人午夜私人影院| 92国产精品观看| 欧美日韩一区二区三区高清 | 亚洲视频你懂的| 亚洲第一会所有码转帖| 日本欧美在线看| 精久久久久久久久久久| 高清不卡在线观看av| 91色婷婷久久久久合中文| 欧美午夜不卡在线观看免费| 欧美一区二区啪啪| 国产日韩欧美亚洲| 一区二区三区色| 久久精品噜噜噜成人88aⅴ| 国产成人午夜精品5599| 欧美性受xxxx黑人xyx性爽| 日韩欧美一级二级三级| 中文字幕永久在线不卡| 日本亚洲一区二区| 国产99精品国产| 欧美色国产精品| 国产女同性恋一区二区| 亚洲高清免费一级二级三级| 久久99最新地址| 91福利在线免费观看| 精品国产百合女同互慰| 亚洲女厕所小便bbb| 免费人成黄页网站在线一区二区| 成人听书哪个软件好| 欧美另类久久久品| 国产精品成人免费| 美国精品在线观看| 欧美在线一二三四区| 久久久精品日韩欧美| 亚洲成av人在线观看| 成人午夜私人影院| 精品久久久久久最新网址| 一区二区三区四区在线免费观看| 久久成人麻豆午夜电影| 欧美影院精品一区| 国产精品美女久久久久久| 日本伊人色综合网| 色天天综合久久久久综合片| 精品国产三级a在线观看| 亚洲一区二区在线观看视频| 国产不卡高清在线观看视频| 制服丝袜成人动漫| 亚洲一区日韩精品中文字幕| 高清视频一区二区| 精品国产成人在线影院| 日韩av电影一区| 欧美系列亚洲系列| 一色屋精品亚洲香蕉网站| 久久精品国产精品亚洲综合| 欧美日韩一级大片网址| 亚洲欧美日韩国产综合| 成人午夜短视频| 国产三级欧美三级日产三级99| 天天综合色天天综合色h| 欧美在线观看视频一区二区三区| 国产嫩草影院久久久久| 国产综合色在线| 日韩欧美卡一卡二| 日韩在线一二三区| 欧美精品成人一区二区三区四区| 亚洲女与黑人做爰| 日本黄色一区二区| 亚洲另类在线一区| 91香蕉视频污在线| 亚洲视频网在线直播| 99国产精品久久久久久久久久 | 日韩一区二区视频| 美女一区二区在线观看| 欧美精品日韩精品| 亚洲不卡在线观看| 欧美日本一区二区在线观看| 亚洲男人的天堂在线aⅴ视频| 97精品超碰一区二区三区| 国产精品久线在线观看| 成人午夜免费电影| 国产精品久久久久永久免费观看 | 欧美mv日韩mv国产网站| 另类成人小视频在线| 日韩小视频在线观看专区| 美女视频第一区二区三区免费观看网站| 欧美日韩午夜精品| 天天影视涩香欲综合网| 日韩一区二区三区电影| 激情综合色播五月| 国产性色一区二区| 99热99精品| 亚洲午夜电影在线观看| 欧美高清www午色夜在线视频| 丝袜国产日韩另类美女| 精品久久一区二区三区| 国产精品主播直播| 亚洲视频精选在线| 欧美高清精品3d| 国产一区高清在线| 国产精品福利电影一区二区三区四区 | 一色屋精品亚洲香蕉网站| 欧美在线观看一二区| 日本网站在线观看一区二区三区| 7777精品伊人久久久大香线蕉完整版 | 亚洲男女毛片无遮挡| 欧美羞羞免费网站| 美女一区二区三区| 国产清纯在线一区二区www| 91丝袜美腿高跟国产极品老师| 亚洲一区在线播放| 精品福利一二区| www.爱久久.com| 日韩国产在线一| 国产丝袜在线精品| 欧美日韩一区二区三区不卡| 国产综合色在线视频区| 亚洲美女视频一区| 日韩欧美电影在线| proumb性欧美在线观看| 视频在线在亚洲| 久久久噜噜噜久久人人看| 日本高清不卡aⅴ免费网站| 奇米在线7777在线精品| 中文字幕欧美三区| 91精品国产综合久久福利| 成人av综合在线| 五月婷婷色综合| 国产精品青草久久| 日韩欧美激情一区| 色婷婷国产精品| 国产在线精品不卡| 亚洲一级片在线观看| 国产网站一区二区| 日韩视频在线你懂得| av中文字幕在线不卡| 蜜桃一区二区三区在线观看| 亚洲天堂av一区| 久久久精品人体av艺术| 在线不卡一区二区| 在线观看日韩电影| 国产精品影视在线| 毛片av一区二区| 午夜精品福利一区二区三区av| 国产精品污污网站在线观看|