当前位置: 首页>>代码示例>>Java>>正文


Java MatrixOps.set方法代码示例

本文整理汇总了Java中cc.mallet.types.MatrixOps.set方法的典型用法代码示例。如果您正苦于以下问题:Java MatrixOps.set方法的具体用法?Java MatrixOps.set怎么用?Java MatrixOps.set使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在cc.mallet.types.MatrixOps的用法示例。


在下文中一共展示了MatrixOps.set方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: optimize

import cc.mallet.types.MatrixOps; //导入方法依赖的package包/类
public boolean optimize (int numIterations)
{
	int iterations;
	double[] params = new double[maxable.getNumParameters()];
	double[] gis = new double[maxable.getNumParameters()];
	double[] old_params = new double[maxable.getNumParameters()];
	double[] updates = new double[maxable.getNumParameters()];
	
	maxable.getParameters(params);
	maxable.getParameters(gis);
	maxable.getParameters(old_params);

	
	for (iterations = 0; iterations < numIterations; iterations++) {

		boolean complete = false;
		double old = maxable.getValue();
		maxable.getGISUpdate(updates);
		MatrixOps.plusEquals(gis,updates);
		MatrixOps.plusEquals(params,updates,eta);
		maxable.setParameters(params);
		double next = maxable.getValue();
		
		// Different from normal AGIS, only fall back to GIS updates
		// If log-likelihood gets worse
		// i.e. if lower log-likelihood, always make AGIS update
		if(next > old) {
			complete = true;
			// don't let eta get too large
			if(eta*alpha < 99999999.0)
				eta = eta*alpha;
		}

		if(backTrack && complete == false) {
			// gone too far
			// unlike Roweis et al., we will back track on eta to find
			// acceptable value, instead of automatically setting it to 1
			while(eta > 1.0 && complete == false) {
				
				eta = eta/2.0;
				
				MatrixOps.set(params,old_params);
				
				MatrixOps.plusEquals(params,updates,eta);		
				maxable.setParameters(params);
				next = maxable.getValue();
				
				if(next > old)
					complete = true;
				
			}
		}
		else if(complete == false) {
			maxable.setParameters(gis);
			eta = 1.0;
			next = maxable.getValue();
		}
		
		logger.info("eta: " + eta);
		
		if (2.0*Math.abs(next-old) <= tolerance*(Math.abs(next)+Math.abs(old)+eps)) {
			converged = true;
			return true;
		}
		
		if(numIterations > 1) {
			maxable.getParameters(params);
			maxable.getParameters(old_params);
			maxable.getParameters(gis);
		}
	}
	converged = false;
	return false;
}
 
开发者ID:kostagiolasn,项目名称:NucleosomePatternClassifier,代码行数:75,代码来源:AGIS.java


注:本文中的cc.mallet.types.MatrixOps.set方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。