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

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

?? ebm.cpp

?? Gaussian Mixture Algorithm
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
/*************************************************************************** *   Copyright (C) 2008 by Yann LeCun   * *   yann@cs.nyu.edu   * * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: *     * Redistributions of source code must retain the above copyright *       notice, this list of conditions and the following disclaimer. *     * Redistributions in binary form must reproduce the above copyright *       notice, this list of conditions and the following disclaimer in the *       documentation and/or other materials provided with the distribution. *     * Redistribution under a license not approved by the Open Source *       Initiative (http://www.opensource.org) must display the *       following acknowledgement in all advertising material: *        This product includes software developed at the Courant *        Institute of Mathematical Sciences (http://cims.nyu.edu). *     * The names of the authors may not be used to endorse or promote products *       derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL ThE AUTHORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ***************************************************************************/#include "Ebm.h"#include "IdxIO.h"using namespace std;namespace ebl {void err_not_implemented(){	ylerror("member function not implemented for this class");}gd_param::gd_param(double leta, double ln, double l1, double l2, int dtime,		double iner, double a_v, double a_t, double g_t){	eta = leta;	n = ln;	decay_time = dtime;	decay_l2 = l2;	decay_l1 = l1;	inertia = iner;	anneal_value = a_v;	anneal_time = a_t;	gradient_threshold = g_t;	niter_done = 0;}////////////////////////////////////////////////////////////////forget_param_linear::forget_param_linear(double v, double e){	value = v;	exponent = e;}////////////////////////////////////////////////////////////////void state::clear(){}void state::clear_dx(){}void state::clear_ddx(){}void state::update_gd(gd_param &arg){}state::state(){	clear();	clear_dx();	clear_ddx();}state::~state(){}////////////////////////////////////////////////////////////////// state_idxvoid state_idx::clear(){	idx_clear(x);}void state_idx::clear_dx(){	idx_clear(dx);}void state_idx::clear_ddx(){	idx_clear(ddx);}state_idx::state_idx() :	x(), dx(), ddx(){	clear();	clear_dx();	clear_ddx();}state_idx::state_idx(intg s0) :	x(s0), dx(s0), ddx(s0){	clear();	clear_dx();	clear_ddx();}state_idx::state_idx(intg s0, intg s1) :	x(s0, s1), dx(s0, s1), ddx(s0, s1){	clear();	clear_dx();	clear_ddx();}state_idx::state_idx(intg s0, intg s1, intg s2) :	x(s0, s1, s2), dx(s0, s1, s2), ddx(s0, s1, s2){	clear();	clear_dx();	clear_ddx();}state_idx::state_idx(intg s0, intg s1, intg s2, intg s3, intg s4, intg s5,		intg s6, intg s7) :	x(s0, s1, s2, s3, s4, s5, s6, s7), dx(s0, s1, s2, s3, s4, s5, s6, s7), ddx(			s0, s1, s2, s3, s4, s5, s6, s7){	clear();	clear_dx();	clear_ddx();}state_idx::state_idx(parameter *st) :	x(st->x.getstorage(), st->x.footprint()), dx(st->dx.getstorage(),			st->dx.footprint()), ddx(st->ddx.getstorage(), st->ddx.footprint()){	st->resize(st->footprint() + nelements());	clear();	clear_dx();	clear_ddx();}state_idx::state_idx(parameter *st, intg s0) :	x(st->x.getstorage(), st->x.footprint(), s0), dx(st->dx.getstorage(),			st->dx.footprint(), s0), ddx(st->ddx.getstorage(),			st->ddx.footprint(), s0){	st->resize(st->footprint() + nelements());	clear();	clear_dx();	clear_ddx();}state_idx::state_idx(parameter *st, intg s0, intg s1) :	x(st->x.getstorage(), st->x.footprint(), s0, s1), dx(st->dx.getstorage(),			st->dx.footprint(), s0, s1), ddx(st->ddx.getstorage(),			st->ddx.footprint(), s0, s1){	st->resize(st->footprint() + nelements());	clear();	clear_dx();	clear_ddx();}state_idx::state_idx(parameter *st, intg s0, intg s1, intg s2) :	x(st->x.getstorage(), st->x.footprint(), s0, s1, s2), dx(			st->dx.getstorage(), st->dx.footprint(), s0, s1, s2), ddx(			st->ddx.getstorage(), st->ddx.footprint(), s0, s1, s2){	st->resize(st->footprint() + nelements());	clear();	clear_dx();	clear_ddx();}state_idx::state_idx(parameter *st, intg s0, intg s1, intg s2, intg s3,		intg s4, intg s5, intg s6, intg s7) :	x(st->x.getstorage(), st->x.footprint(), s0, s1, s2, s3, s4, s5, s6, s7),			dx(st->dx.getstorage(), st->dx.footprint(), s0, s1, s2, s3, s4, s5,					s6, s7), ddx(st->ddx.getstorage(), st->ddx.footprint(), s0,					s1, s2, s3, s4, s5, s6, s7){	st->resize(st->footprint() + nelements());	clear();	clear_dx();	clear_ddx();}state_idx::~state_idx(){}intg state_idx::nelements(){	return x.nelements();}intg state_idx::footprint(){	return x.footprint();}intg state_idx::size(){	return x.footprint();}void state_idx::resize(intg s0, intg s1, intg s2, intg s3, intg s4, intg s5,		intg s6, intg s7){	x.resize(s0, s1, s2, s3, s4, s5, s6, s7);	dx.resize(s0, s1, s2, s3, s4, s5, s6, s7);	ddx.resize(s0, s1, s2, s3, s4, s5, s6, s7);}void state_idx::resizeAs(state_idx& s){	if (x.order() != s.x.order())		ylerror("State_Idx::resizeAs accepts states with same number of dimensions");	intg dims[8] ={-1,-1,-1,-1,-1,-1,-1,-1};	for (int i=0; i<x.order(); i++){		dims[i] = s.x.dim(i);	}	resize(dims[0],dims[1],dims[2],dims[3],dims[4],dims[5],dims[6],dims[7]);}void state_idx::resize(const intg* dimsBegin, const intg* dimsEnd){	x.resize(dimsBegin, dimsEnd);	dx.resize(dimsBegin, dimsEnd);	ddx.resize(dimsBegin, dimsEnd);}void state_idx::update_gd(gd_param &arg){	if (arg.decay_l2 > 0)	{		idx_dotcacc(x, arg.decay_l2, dx);	}	if (arg.decay_l1 > 0)	{		idx_signdotcacc(x, arg.decay_l1, dx);	}	idx_dotcacc(dx, -arg.eta, x);}state_idx state_idx::make_copy() {	intg dims[8] ={-1,-1,-1,-1,-1,-1,-1,-1};	for (int i=0; i<x.order(); i++){		dims[i] = x.dim(i);	}	state_idx other(dims[0],dims[1],dims[2],dims[3],dims[4],dims[5],dims[6],dims[7]);	idx_copy(x,other.x);	idx_copy(dx,other.dx);	idx_copy(ddx,other.ddx);	return other;}////////////////////////////////////////////////////////////////// parameter// TODO-0: BUG: a parameter object casted in state_idx* and called// with resize(n) calls state_idx::resize instead of parameter::resize// a temporary unclean solution is to use the same parameters as// in state_idx::resize in parameter::resize:// resize(intg s0, intg s1, intg s2, intg s3, intg s4, intg s5,//		intg s6, intg s7);void parameter::resize(intg s0){	x.resize(s0);	dx.resize(s0);	ddx.resize(s0);	gradient.resize(s0);	deltax.resize(s0);	epsilons.resize(s0);	ddeltax.resize(s0);}parameter::parameter(intg initial_size) :	state_idx(initial_size), gradient(initial_size), deltax(initial_size),	epsilons(initial_size), ddeltax(initial_size){	idx_clear(x);	idx_clear(dx);	idx_clear(ddx);	idx_clear(gradient);	idx_clear(deltax);	idx_clear(epsilons);	idx_clear(ddeltax);	resize(0);}parameter::~parameter(){}bool parameter::load(const char *s) {/*	Idx<double> m(1, 1), tmp(1);	if (!load_matrix(m, s))		return false;	this->resize(m.dim(1));	tmp = m.select(0, 0); idx_copy(tmp, x);	tmp = m.select(0, 1); idx_copy(tmp, dx);	tmp = m.select(0, 2); idx_copy(tmp, ddx);	tmp = m.select(0, 3); idx_copy(tmp, gradient);	tmp = m.select(0, 4); idx_copy(tmp, deltax);	tmp = m.select(0, 5); idx_copy(tmp, epsilons);	tmp = m.select(0, 6); idx_copy(tmp, ddeltax);	return true;	*/	Idx<double> m(1);	if (!load_matrix(m, s))	  return false;	this->resize(m.dim(0));	idx_copy(m, x);	return true;}void parameter::update_gd(gd_param &arg){	if (arg.decay_l2 > 0)	{		idx_dotcacc(x, arg.decay_l2, dx);	}	if (arg.decay_l1 > 0)	{		idx_signdotcacc(x, arg.decay_l1, dx);	}	if (arg.inertia == 0)	{		idx_mul(dx, epsilons, dx);		idx_dotcacc(dx, -arg.eta, x);	}	else	{		update_deltax( 1-arg.inertia, arg.inertia);		idx_mul(deltax, epsilons, deltax);		idx_dotcacc(deltax, -arg.eta, x);	}}void parameter::update(gd_param &arg){	update_gd(arg);}void parameter::clear_deltax(){	idx_clear(deltax);}void parameter::update_deltax(double knew, double kold){	idx_lincomb(dx, knew, deltax, kold, deltax);}void parameter::clear_ddeltax(){	idx_clear(ddeltax);}void parameter::update_ddeltax(double knew, double kold){	idx_lincomb(ddx, knew, ddeltax, kold, ddeltax);}void parameter::set_epsilons(double m){	idx_fill(epsilons, m);}void parameter::compute_epsilons(double mu){	idx_addc(ddeltax, mu, epsilons);	idx_inv(epsilons, epsilons);}////////////////////////////////////////////////////////////////linear_module::linear_module(parameter *p, intg in, intg out){	w = new state_idx(p, out, in);}linear_module::~linear_module(){	delete w;}void linear_module::fprop(state_idx *in, state_idx *out){//	intg instride = 0;//	intg outstride = 0;//	if (in->x.order() == 1)//	{//		instride = in->x.mod(0);//	}//	else if (in->x.contiguousp())//	{//		instride = 1;//	}//	if (out->x.order() == 1)//	{//		outstride = out->x.mod(0);//		out->resize(w->x.dim(0));//	}//	else if (out->x.contiguousp())//	{//		outstride = 1;//	}//	if ( (instride == 0)||(outstride==0))//	{//		ylerror("linear_module::fprop: state must 1D or contiguous");//	}//	else//	{//		if (out->x.nelements() != w->x.dim(0))//		{//			ylerror("linear_module::fprop: output has wrong size");//		}//		else//		{//			idx_m2dotm1(w->x, in->x, out->x);//		}//	}	out->resize(w->x.dim(0));	idx_m2dotm1(w->x, in->x, out->x);}void linear_module::bprop(state_idx *in, state_idx *out){	intg instride = 0;	intg outstride = 0;	if (in->x.order() == 1)	{		instride = in->x.mod(0);	}	else if (in->x.contiguousp())	{		instride = 1;	}	if (out->x.order() == 1)	{		outstride = out->x.mod(0);	}	else if (out->x.contiguousp())	{		outstride = 1;	}	if ( (instride == 0)||(outstride==0))	{		ylerror("linear_module::fprop: state must 1D or contiguous");	}	else	{		if (out->x.nelements() != w->x.dim(0))		{			ylerror("linear_module::fprop: output has wrong size");		}		else		{			Idx<double> twx(w->x.transpose(0, 1));			idx_m1extm1(out->dx, in->x, w->dx);			idx_m2dotm1(twx, out->dx, in->dx);		}	}}void linear_module::bbprop(state_idx *in, state_idx *out){	intg instride = 0;	intg outstride = 0;	if (in->x.order() == 1)	{		instride = in->x.mod(0);	}	else if (in->x.contiguousp())	{		instride = 1;	}	if (out->x.order() == 1)	{		outstride = out->x.mod(0);	}	else if (out->x.contiguousp())	{		outstride = 1;	}	if ( (instride == 0)||(outstride==0))	{		ylerror("linear_module::fprop: state must 1D or contiguous");	}	else	{		if (out->x.nelements() != w->x.dim(0))		{			ylerror("linear_module::fprop: output has wrong size");		}		else		{			Idx<double> twx = w->x.transpose(0, 1);			idx_m1squextm1(out->ddx, in->x, w->ddx);			idx_m2squdotm1(twx, out->ddx, in->ddx);		}	}}void linear_module::forget(forget_param_linear &fp){	double fanin = w->x.dim(1);	double z = fp.value / pow(fanin, fp.exponent);	if(!drand_ini) printf("You have not initialized random sequence. Please call init_drand() before using this function !\n");	idx_aloop1(lx,w->x,double)	{	*lx = drand(z);}}void linear_module::normalize(){	norm_columns(w->x);}////////////////////////////////////////////////////////////////stdsigmoid_module::stdsigmoid_module(){}stdsigmoid_module::~stdsigmoid_module(){}// standard sigmoid modulevoid stdsigmoid_module::fprop(state_idx *in, state_idx *out){	idx_stdsigmoid(in->x, out->x);}void stdsigmoid_module::bprop(state_idx *in, state_idx *out){	idx_dstdsigmoid(in->x, in->dx);	idx_mul(in->dx, out->dx, in->dx);}void stdsigmoid_module::bbprop(state_idx *in, state_idx *out){	idx_dstdsigmoid(in->x, in->ddx);	idx_mul(in->ddx, in->ddx, in->ddx);	idx_mul(in->ddx, out->ddx, in->ddx);}////////////////////////////////////////////////////////////////// tanh modulevoid tanh_module::fprop(state_idx *in, state_idx *out){	idx_tanh(in->x, out->x);}void tanh_module::bprop(state_idx *in, state_idx *out){	idx_dtanh(in->x, in->dx);	idx_mul(in->dx, out->dx, in->dx);}void tanh_module::bbprop(state_idx *in, state_idx *out)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡免费追剧大全电视剧网站| 欧美一区二区久久| 88在线观看91蜜桃国自产| 国产亚洲精品7777| 一区二区日韩电影| 成人短视频下载| 日韩欧美视频在线| 亚洲乱码国产乱码精品精98午夜| 韩国欧美国产1区| 欧美艳星brazzers| 中文字幕中文字幕中文字幕亚洲无线| 日本视频一区二区| 欧美优质美女网站| 国产成人一级电影| 欧美videofree性高清杂交| 亚洲一区二区三区四区的 | av亚洲精华国产精华| 日韩视频免费观看高清完整版在线观看 | 亚洲第一综合色| 丁香激情综合国产| 久久精品人人做人人爽97| 免费成人结看片| 欧美日韩专区在线| 一二三区精品福利视频| 99re热这里只有精品视频| 国产精品丝袜久久久久久app| 蜜芽一区二区三区| 6080日韩午夜伦伦午夜伦| 五月天中文字幕一区二区| 欧美性大战久久久久久久蜜臀 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 最新中文字幕一区二区三区| 国产91精品精华液一区二区三区| 日韩免费电影一区| 免费精品99久久国产综合精品| 欧美精品久久一区| 五月天亚洲婷婷| 日本伊人色综合网| 日韩视频免费直播| 国产真实乱子伦精品视频| 欧美mv和日韩mv国产网站| 国内成人自拍视频| www国产成人| 国产很黄免费观看久久| 国产精品久久久久三级| 色婷婷亚洲综合| 亚洲成人资源网| 欧美一区二区三区视频在线观看| 久久99精品久久久| 国产三级一区二区| 91网站最新网址| 亚洲午夜免费福利视频| 欧美日韩免费不卡视频一区二区三区| 性欧美疯狂xxxxbbbb| 91麻豆精品国产91久久久久| 精品一区二区三区在线播放 | 日韩一区二区三区电影在线观看 | 午夜精品久久久久久久久| 91精品国模一区二区三区| 国产美女精品一区二区三区| 国产精品国产三级国产普通话99| 99久久99久久久精品齐齐| 亚洲成人在线观看视频| 久久亚区不卡日本| 亚洲日本在线观看| 欧美日韩国产精品自在自线| 国产一区二区成人久久免费影院| 亚洲国产精品v| 欧美日韩视频不卡| 豆国产96在线|亚洲| 一区二区不卡在线视频 午夜欧美不卡在| 欧美日韩久久久一区| 国产成人啪午夜精品网站男同| 一区二区三区四区在线播放| 久久综合国产精品| 日本高清免费不卡视频| 国产精品资源网站| 亚洲一区二区三区国产| 国产亚洲欧美日韩俺去了| 在线区一区二视频| 国产精品一区二区久久不卡| 亚洲国产精品欧美一二99| 久久精品人人做人人爽人人| 欧美美女bb生活片| 不卡一区二区三区四区| 激情文学综合网| 亚洲第一综合色| 亚洲欧美日韩国产成人精品影院| 日韩美女视频在线| 色av一区二区| 成人小视频在线| 九九九精品视频| 日本视频在线一区| 一区二区三区在线观看视频| 国产欧美一区二区精品性| 欧美一区二区国产| 欧美在线短视频| 91麻豆精品视频| 成人一区在线观看| 韩国v欧美v日本v亚洲v| 丝瓜av网站精品一区二区| 亚洲人成网站色在线观看| 日本一区二区三区在线不卡| 日韩精品一区二区三区在线| 91精品国产色综合久久不卡电影| 日本韩国一区二区三区| 色综合久久久久久久久久久| www.久久精品| 成人激情校园春色| 成人激情午夜影院| 成+人+亚洲+综合天堂| 国产成人免费视频网站| 国产精品69毛片高清亚洲| 国产精品88888| 国产a视频精品免费观看| 国产精品一区二区在线看| 韩国中文字幕2020精品| 极品美女销魂一区二区三区 | 国产日产欧产精品推荐色| 久久免费看少妇高潮| 日韩你懂的在线观看| 欧美r级在线观看| 久久婷婷色综合| 欧美精品一区二区三区蜜桃视频| 精品免费视频一区二区| 精品国产乱码久久久久久闺蜜| 日韩欧美国产三级| 欧美xxxxx牲另类人与| 国产亚洲短视频| 中文字幕日韩av资源站| 亚洲黄色片在线观看| 天天免费综合色| 蜜臀国产一区二区三区在线播放| 国产一区二三区| av在线不卡电影| 在线区一区二视频| 欧美一区二区免费视频| 国产视频一区在线观看| 亚洲天堂精品视频| 亚洲成人第一页| 国产一区二区三区四区五区美女 | 日本怡春院一区二区| 精品一区二区精品| 成人免费电影视频| 色八戒一区二区三区| 日韩欧美国产综合| 国产精品久久久久久一区二区三区| 亚洲免费观看高清完整版在线 | 亚洲免费高清视频在线| 日韩高清一级片| 国产伦精品一区二区三区视频青涩| k8久久久一区二区三区| 欧美男同性恋视频网站| 久久精品一二三| 亚洲影视资源网| 国产福利一区二区| 欧美日韩精品欧美日韩精品一综合| 久久综合999| 亚洲国产日韩av| 成人国产亚洲欧美成人综合网| 欧美猛男男办公室激情| 欧美国产禁国产网站cc| 首页国产丝袜综合| 成人高清免费观看| 欧美mv日韩mv国产网站| 午夜欧美2019年伦理 | 国产精品99久久久久久似苏梦涵| 在线欧美一区二区| 国产精品免费aⅴ片在线观看| 日韩和欧美的一区| 色综合久久综合中文综合网| 欧美videossexotv100| 亚洲精品日韩一| 福利一区二区在线观看| 欧美日韩成人综合天天影院 | 91精品欧美久久久久久动漫| 国产精品电影一区二区三区| 久久精品久久精品| 欧美在线视频不卡| 亚洲欧洲www| 成人三级伦理片| 久久综合久久综合亚洲| 日韩精品五月天| 色婷婷综合久色| 亚洲天堂中文字幕| 不卡一区二区在线| 亚洲国产岛国毛片在线| 国产尤物一区二区在线| 3751色影院一区二区三区| 亚洲一区二区高清| 色一情一伦一子一伦一区| 中文字幕视频一区| 成人短视频下载| 国产精品视频免费看| 成人免费av在线| 国产农村妇女精品| 成人午夜又粗又硬又大| 国产欧美日韩激情| 懂色av一区二区夜夜嗨| 国产女人18毛片水真多成人如厕|