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

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

?? svm.cpp

?? SVM是一種常用的模式分類機器學習算法
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
				quad_coef = TAU;			double delta = (G[i]-G[j])/quad_coef;			double sum = alpha[i] + alpha[j];			alpha[i] -= delta;			alpha[j] += delta;			if(sum > C_i)			{				if(alpha[i] > C_i)				{					alpha[i] = C_i;					alpha[j] = sum - C_i;				}			}			else			{				if(alpha[j] < 0)				{					alpha[j] = 0;					alpha[i] = sum;				}			}			if(sum > C_j)			{				if(alpha[j] > C_j)				{					alpha[j] = C_j;					alpha[i] = sum - C_j;				}			}			else			{				if(alpha[i] < 0)				{					alpha[i] = 0;					alpha[j] = sum;				}			}		}		// update G		double delta_alpha_i = alpha[i] - old_alpha_i;		double delta_alpha_j = alpha[j] - old_alpha_j;				for(int k=0;k<active_size;k++)		{			G[k] += Q_i[k]*delta_alpha_i + Q_j[k]*delta_alpha_j;		}		// update alpha_status and G_bar		{			bool ui = is_upper_bound(i);			bool uj = is_upper_bound(j);			update_alpha_status(i);			update_alpha_status(j);			int k;			if(ui != is_upper_bound(i))			{				Q_i = Q.get_Q(i,l);				if(ui)					for(k=0;k<l;k++)						G_bar[k] -= C_i * Q_i[k];				else					for(k=0;k<l;k++)						G_bar[k] += C_i * Q_i[k];			}			if(uj != is_upper_bound(j))			{				Q_j = Q.get_Q(j,l);				if(uj)					for(k=0;k<l;k++)						G_bar[k] -= C_j * Q_j[k];				else					for(k=0;k<l;k++)						G_bar[k] += C_j * Q_j[k];			}		}	}	// calculate rho	si->rho = calculate_rho();	// calculate objective value	{		double v = 0;		int i;		for(i=0;i<l;i++)			v += alpha[i] * (G[i] + b[i]);		si->obj = v/2;	}	// put back the solution	{		for(int i=0;i<l;i++)			alpha_[active_set[i]] = alpha[i];	}	// juggle everything back	/*{		for(int i=0;i<l;i++)			while(active_set[i] != i)				swap_index(i,active_set[i]);				// or Q.swap_index(i,active_set[i]);	}*/	si->upper_bound_p = Cp;	si->upper_bound_n = Cn;	info("\noptimization finished, #iter = %d\n",iter);	delete[] b;	delete[] y;	delete[] alpha;	delete[] alpha_status;	delete[] active_set;	delete[] G;	delete[] G_bar;}// return 1 if already optimal, return 0 otherwiseint Solver::select_working_set(int &out_i, int &out_j){	// return i,j such that	// i: maximizes -y_i * grad(f)_i, i in I_up(\alpha)	// j: minimizes the decrease of obj value	//    (if quadratic coefficeint <= 0, replace it with tau)	//    -y_j*grad(f)_j < -y_i*grad(f)_i, j in I_low(\alpha)		double Gmax = -INF;	double Gmax2 = -INF;	int Gmax_idx = -1;	int Gmin_idx = -1;	double obj_diff_min = INF;	for(int t=0;t<active_size;t++)		if(y[t]==+1)			{			if(!is_upper_bound(t))				if(-G[t] >= Gmax)				{					Gmax = -G[t];					Gmax_idx = t;				}		}		else		{			if(!is_lower_bound(t))				if(G[t] >= Gmax)				{					Gmax = G[t];					Gmax_idx = t;				}		}	int i = Gmax_idx;	const Qfloat *Q_i = NULL;	if(i != -1) // NULL Q_i not accessed: Gmax=-INF if i=-1		Q_i = Q->get_Q(i,active_size);	for(int j=0;j<active_size;j++)	{		if(y[j]==+1)		{			if (!is_lower_bound(j))			{				double grad_diff=Gmax+G[j];				if (G[j] >= Gmax2)					Gmax2 = G[j];				if (grad_diff > 0)				{					double obj_diff; 					double quad_coef=Q_i[i]+QD[j]-2*y[i]*Q_i[j];					if (quad_coef > 0)						obj_diff = -(grad_diff*grad_diff)/quad_coef;					else						obj_diff = -(grad_diff*grad_diff)/TAU;					if (obj_diff <= obj_diff_min)					{						Gmin_idx=j;						obj_diff_min = obj_diff;					}				}			}		}		else		{			if (!is_upper_bound(j))			{				double grad_diff= Gmax-G[j];				if (-G[j] >= Gmax2)					Gmax2 = -G[j];				if (grad_diff > 0)				{					double obj_diff; 					double quad_coef=Q_i[i]+QD[j]+2*y[i]*Q_i[j];					if (quad_coef > 0)						obj_diff = -(grad_diff*grad_diff)/quad_coef;					else						obj_diff = -(grad_diff*grad_diff)/TAU;					if (obj_diff <= obj_diff_min)					{						Gmin_idx=j;						obj_diff_min = obj_diff;					}				}			}		}	}	if(Gmax+Gmax2 < eps)		return 1;	out_i = Gmax_idx;	out_j = Gmin_idx;	return 0;}// return 1 if already optimal, return 0 otherwiseint Solver::max_violating_pair(int &out_i, int &out_j){	// return i,j: maximal violating pair	double Gmax1 = -INF;		// max { -y_i * grad(f)_i | i in I_up(\alpha) }	int Gmax1_idx = -1;	double Gmax2 = -INF;		// max { y_i * grad(f)_i | i in I_low(\alpha) }	int Gmax2_idx = -1;	for(int i=0;i<active_size;i++)	{		if(y[i]==+1)	// y = +1		{			if(!is_upper_bound(i))	// d = +1			{				if(-G[i] >= Gmax1)				{					Gmax1 = -G[i];					Gmax1_idx = i;				}			}			if(!is_lower_bound(i))	// d = -1			{				if(G[i] >= Gmax2)				{					Gmax2 = G[i];					Gmax2_idx = i;				}			}		}		else		// y = -1		{			if(!is_upper_bound(i))	// d = +1			{				if(-G[i] >= Gmax2)				{					Gmax2 = -G[i];					Gmax2_idx = i;				}			}			if(!is_lower_bound(i))	// d = -1			{				if(G[i] >= Gmax1)				{					Gmax1 = G[i];					Gmax1_idx = i;				}			}		}	}	if(Gmax1+Gmax2 < eps) 		return 1;	out_i = Gmax1_idx;	out_j = Gmax2_idx;	return 0;}void Solver::do_shrinking(){	int i,j,k;	if(max_violating_pair(i,j)!=0) return;	double Gm1 = -y[j]*G[j];	double Gm2 = y[i]*G[i];	// shrink		for(k=0;k<active_size;k++)	{		if(is_lower_bound(k))		{			if(y[k]==+1)			{				if(-G[k] >= Gm1) continue;			}			else	if(-G[k] >= Gm2) continue;		}		else if(is_upper_bound(k))		{			if(y[k]==+1)			{				if(G[k] >= Gm2) continue;			}			else	if(G[k] >= Gm1) continue;		}		else continue;		--active_size;		swap_index(k,active_size);		--k;	// look at the newcomer	}	// unshrink, check all variables again before final iterations	if(unshrinked || -(Gm1 + Gm2) > eps*10) return;		unshrinked = true;	reconstruct_gradient();	for(k=l-1;k>=active_size;k--)	{		if(is_lower_bound(k))		{			if(y[k]==+1)			{				if(-G[k] < Gm1) continue;			}			else	if(-G[k] < Gm2) continue;		}		else if(is_upper_bound(k))		{			if(y[k]==+1)			{				if(G[k] < Gm2) continue;			}			else	if(G[k] < Gm1) continue;		}		else continue;		swap_index(k,active_size);		active_size++;		++k;	// look at the newcomer	}}double Solver::calculate_rho(){	double r;	int nr_free = 0;	double ub = INF, lb = -INF, sum_free = 0;	for(int i=0;i<active_size;i++)	{		double yG = y[i]*G[i];		if(is_lower_bound(i))		{			if(y[i] > 0)				ub = min(ub,yG);			else				lb = max(lb,yG);		}		else if(is_upper_bound(i))		{			if(y[i] < 0)				ub = min(ub,yG);			else				lb = max(lb,yG);		}		else		{			++nr_free;			sum_free += yG;		}	}	if(nr_free>0)		r = sum_free/nr_free;	else		r = (ub+lb)/2;	return r;}//// Solver for nu-svm classification and regression//// additional constraint: e^T \alpha = constant//class Solver_NU : public Solver{public:	Solver_NU() {}	void Solve(int l, const QMatrix& Q, const double *b, const schar *y,		   double *alpha, double Cp, double Cn, double eps,		   SolutionInfo* si, int shrinking)	{		this->si = si;		Solver::Solve(l,Q,b,y,alpha,Cp,Cn,eps,si,shrinking);	}private:	SolutionInfo *si;	int select_working_set(int &i, int &j);	double calculate_rho();	void do_shrinking();};// return 1 if already optimal, return 0 otherwiseint Solver_NU::select_working_set(int &out_i, int &out_j){	// return i,j such that y_i = y_j and	// i: maximizes -y_i * grad(f)_i, i in I_up(\alpha)	// j: minimizes the decrease of obj value	//    (if quadratic coefficeint <= 0, replace it with tau)	//    -y_j*grad(f)_j < -y_i*grad(f)_i, j in I_low(\alpha)	double Gmaxp = -INF;	double Gmaxp2 = -INF;	int Gmaxp_idx = -1;	double Gmaxn = -INF;	double Gmaxn2 = -INF;	int Gmaxn_idx = -1;	int Gmin_idx = -1;	double obj_diff_min = INF;	for(int t=0;t<active_size;t++)		if(y[t]==+1)		{			if(!is_upper_bound(t))				if(-G[t] >= Gmaxp)				{					Gmaxp = -G[t];					Gmaxp_idx = t;				}		}		else		{			if(!is_lower_bound(t))				if(G[t] >= Gmaxn)				{					Gmaxn = G[t];					Gmaxn_idx = t;				}		}	int ip = Gmaxp_idx;	int in = Gmaxn_idx;	const Qfloat *Q_ip = NULL;	const Qfloat *Q_in = NULL;	if(ip != -1) // NULL Q_ip not accessed: Gmaxp=-INF if ip=-1		Q_ip = Q->get_Q(ip,active_size);	if(in != -1)		Q_in = Q->get_Q(in,active_size);	for(int j=0;j<active_size;j++)	{		if(y[j]==+1)		{			if (!is_lower_bound(j))				{				double grad_diff=Gmaxp+G[j];				if (G[j] >= Gmaxp2)					Gmaxp2 = G[j];				if (grad_diff > 0)				{					double obj_diff; 					double quad_coef = Q_ip[ip]+QD[j]-2*Q_ip[j];					if (quad_coef > 0)						obj_diff = -(grad_diff*grad_diff)/quad_coef;					else						obj_diff = -(grad_diff*grad_diff)/TAU;					if (obj_diff <= obj_diff_min)					{						Gmin_idx=j;						obj_diff_min = obj_diff;					}				}			}		}		else		{			if (!is_upper_bound(j))			{				double grad_diff=Gmaxn-G[j];				if (-G[j] >= Gmaxn2)					Gmaxn2 = -G[j];				if (grad_diff > 0)				{					double obj_diff; 					double quad_coef = Q_in[in]+QD[j]-2*Q_in[j];					if (quad_coef > 0)						obj_diff = -(grad_diff*grad_diff)/quad_coef;					else						obj_diff = -(grad_diff*grad_diff)/TAU;					if (obj_diff <= obj_diff_min)					{						Gmin_idx=j;						obj_diff_min = obj_diff;					}				}			}		}	}	if(max(Gmaxp+Gmaxp2,Gmaxn+Gmaxn2) < eps) 		return 1;	if (y[Gmin_idx] == +1)		out_i = Gmaxp_idx;	else		out_i = Gmaxn_idx;	out_j = Gmin_idx;	return 0;}void Solver_NU::do_shrinking(){	double Gmax1 = -INF;	// max { -y_i * grad(f)_i | y_i = +1, i in I_up(\alpha) }	double Gmax2 = -INF;	// max { y_i * grad(f)_i | y_i = +1, i in I_low(\alpha) }	double Gmax3 = -INF;	// max { -y_i * grad(f)_i | y_i = -1, i in I_up(\alpha) }	double Gmax4 = -INF;	// max { y_i * grad(f)_i | y_i = -1, i in I_low(\alpha) }	// find maximal violating pair first	int k;	for(k=0;k<active_size;k++)	{		if(!is_upper_bound(k))		{			if(y[k]==+1)			{				if(-G[k] > Gmax1) Gmax1 = -G[k];			}			else	if(-G[k] > Gmax3) Gmax3 = -G[k];		}		if(!is_lower_bound(k))		{			if(y[k]==+1)			{					if(G[k] > Gmax2) Gmax2 = G[k];			}			else	if(G[k] > Gmax4) Gmax4 = G[k];		}	}	// shrinking	double Gm1 = -Gmax2;	double Gm2 = -Gmax1;	double Gm3 = -Gmax4;	double Gm4 = -Gmax3;	for(k=0;k<active_size;k++)	{		if(is_lower_bound(k))		{			if(y[k]==+1)			{				if(-G[k] >= Gm1) continue;			}			else	if(-G[k] >= Gm3) continue;		}		else if(is_upper_bound(k))		{			if(y[k]==+1)			{				if(G[k] >= Gm2) continue;			}			else	if(G[k] >= Gm4) continue;		}		else continue;		--active_size;		swap_index(k,active_size);		--k;	// look at the newcomer	}	// unshrink, check all variables again before final iterations	if(unshrinked || max(-(Gm1+Gm2),-(Gm3+Gm4)) > eps*10) return;		unshrinked = true;	reconstruct_gradient();	for(k=l-1;k>=active_size;k--)	{		if(is_lower_bound(k))		{			if(y[k]==+1)			{				if(-G[k] < Gm1) continue;			}			else	if(-G[k] < Gm3) continue;		}		else if(is_upper_bound(k))		{			if(y[k]==+1)			{				if(G[k] < Gm2) continue;			}			else	if(G[k] < Gm4) continue;		}		else continue;		swap_index(k,active_size);		active_size++;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产午夜亚洲精品理论片色戒| 色成人在线视频| 精品成人私密视频| 欧美高清在线一区二区| 亚洲最大成人综合| 国产一区亚洲一区| 在线中文字幕一区二区| 91精品免费在线| 亚洲欧美综合另类在线卡通| 亚洲一区二区三区四区五区黄 | 美女视频一区二区| 久久国产精品99久久久久久老狼 | 久久精品国产第一区二区三区| 不卡av在线免费观看| 欧美色倩网站大全免费| 欧美精品一区二区三区高清aⅴ| 综合久久国产九一剧情麻豆| 美日韩黄色大片| 欧美人与禽zozo性伦| 国产蜜臀97一区二区三区| 奇米色一区二区| 一本久道久久综合中文字幕| 久久综合视频网| 亚洲一区二区中文在线| 成人高清免费观看| 666欧美在线视频| 亚洲福利国产精品| av动漫一区二区| 国产视频一区二区在线观看| 日本成人在线网站| 9i在线看片成人免费| 国产丝袜在线精品| 国产精品一区专区| 精品国产a毛片| 蜜芽一区二区三区| 欧美在线观看一区二区| 亚洲人快播电影网| 国产91精品一区二区| 精品国产乱码久久久久久浪潮| 蜜桃av一区二区三区电影| 欧美日韩国产精品自在自线| 亚洲成av人片| 欧美性极品少妇| 亚洲国产精品欧美一二99| 一本大道久久a久久综合婷婷| 欧美激情在线免费观看| 精彩视频一区二区三区| 久久久久青草大香线综合精品| 久久精品国产亚洲高清剧情介绍| 欧美三级中文字| 午夜欧美一区二区三区在线播放| 欧美性色aⅴ视频一区日韩精品| 一区二区理论电影在线观看| 欧美日本在线播放| 喷水一区二区三区| 日韩一级大片在线观看| 乱中年女人伦av一区二区| 日韩一区二区三区高清免费看看| 亚洲国产精品一区二区www在线| 91精品国产福利在线观看| 九色|91porny| 久久精品男人天堂av| 成人激情免费视频| 一区二区三区在线视频播放| 欧美中文字幕亚洲一区二区va在线| 中文字幕一区二区三| 色狠狠色狠狠综合| 男女男精品视频| 久久综合色8888| 波多野结衣亚洲一区| 亚洲欧美二区三区| 欧美日韩在线观看一区二区| 毛片av中文字幕一区二区| 国产视频亚洲色图| 欧美亚洲国产一区在线观看网站 | eeuss鲁片一区二区三区在线看| 欧美精品一区二区三区蜜桃视频| jlzzjlzz国产精品久久| 日本一区中文字幕| 最好看的中文字幕久久| 精品少妇一区二区三区在线播放| 91视视频在线观看入口直接观看www | 国产精品乱码人人做人人爱| 欧美性视频一区二区三区| 国产精品一二一区| 日韩电影在线观看网站| 亚洲欧美日本韩国| 国产精品视频一区二区三区不卡| 日韩一二三四区| 欧美色图一区二区三区| 北条麻妃国产九九精品视频| 国内精品国产成人国产三级粉色 | 国产精品69久久久久水密桃| 亚洲福利电影网| 亚洲女人****多毛耸耸8| 久久久久亚洲蜜桃| 日韩欧美色综合网站| 欧美日韩国产色站一区二区三区| 99精品欧美一区二区蜜桃免费| 国产精品亚洲第一区在线暖暖韩国| 青青草原综合久久大伊人精品| 亚洲一二三区在线观看| 亚洲三级在线看| 一区免费观看视频| 中文字幕在线观看不卡| 欧美激情一区二区| 国产亚洲精品福利| 日韩免费高清电影| 日韩欧美国产一区在线观看| 欧美日韩国产a| 欧美浪妇xxxx高跟鞋交| 欧美色图免费看| 欧美精品第1页| 欧美日韩国产另类一区| 欧美人牲a欧美精品| 欧美色偷偷大香| 这里只有精品视频在线观看| 4438成人网| 精品伦理精品一区| 国产亚洲午夜高清国产拍精品| 久久久国产精品不卡| 欧美国产禁国产网站cc| 国产精品毛片久久久久久久| 国产精品女主播av| 国产精品电影一区二区| 亚洲欧美日韩国产成人精品影院| 亚洲视频一区在线| 亚洲v日本v欧美v久久精品| 日韩精品91亚洲二区在线观看| 日本在线播放一区二区三区| 国内一区二区在线| 国产91精品在线观看| 91美女片黄在线| 91 com成人网| 国产农村妇女毛片精品久久麻豆| 国产精品美女久久久久久久久久久 | 国产欧美一区二区三区鸳鸯浴| 国产日本欧美一区二区| 亚洲乱码国产乱码精品精98午夜| 亚洲自拍另类综合| 久久成人免费电影| www.欧美亚洲| 911精品国产一区二区在线| 久久综合久久鬼色中文字| 中文字幕视频一区| 亚洲成人精品一区| 国产麻豆精品视频| 在线这里只有精品| 欧美大片在线观看| 亚洲色图色小说| 麻豆免费精品视频| av在线播放成人| 欧美xxxx老人做受| 亚洲精品高清视频在线观看| 美女精品自拍一二三四| 91丨porny丨户外露出| 日韩美女天天操| 亚洲在线免费播放| 国产激情视频一区二区三区欧美 | 一区二区三区精品视频| 国精产品一区一区三区mba视频| 91丨porny丨蝌蚪视频| 精品国精品国产| 一区av在线播放| 国产91精品一区二区麻豆亚洲| 欧美剧在线免费观看网站| 国产精品网站在线观看| 日韩av二区在线播放| 色美美综合视频| 中文字幕免费在线观看视频一区| 日韩激情中文字幕| 色综合久久66| 国产亚洲精品福利| 韩国欧美国产1区| 欧美剧在线免费观看网站 | 国产女主播在线一区二区| 午夜电影一区二区| 色94色欧美sute亚洲线路一久 | 粉嫩久久99精品久久久久久夜| 欧美不卡在线视频| 日韩国产欧美视频| 欧美三区在线观看| 亚洲一区日韩精品中文字幕| 暴力调教一区二区三区| 欧美极品另类videosde| 黑人巨大精品欧美黑白配亚洲| 91超碰这里只有精品国产| 亚洲成av人**亚洲成av**| 欧美午夜精品久久久久久超碰| 日韩一区欧美一区| 成人h精品动漫一区二区三区| 久久久综合九色合综国产精品| 久久激情五月婷婷| 欧美一区二区视频在线观看 | 亚洲va欧美va天堂v国产综合| 99久久精品国产一区| 中文字幕一区二区三区av| 93久久精品日日躁夜夜躁欧美| 日本一区二区三级电影在线观看| 国产成人在线视频播放|