本文整理汇总了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;
}