tmp update
This commit is contained in:
@@ -268,6 +268,7 @@ int lbfgs(
|
||||
lbfgsfloatval_t *xp = NULL;
|
||||
lbfgsfloatval_t *g = NULL, *gp = NULL, *pg = NULL; // gp (p for previous) pg (p for pesudo)
|
||||
lbfgsfloatval_t *d = NULL, *w = NULL, *pf = NULL;
|
||||
lbfgsfloatval_t *dp = NULL; // p for preconditioned
|
||||
iteration_data_t *lm = NULL, *it = NULL;
|
||||
lbfgsfloatval_t ys, yy;
|
||||
lbfgsfloatval_t xnorm, gnorm, beta;
|
||||
@@ -383,6 +384,14 @@ int lbfgs(
|
||||
goto lbfgs_exit;
|
||||
}
|
||||
|
||||
if (cd.proc_precondition) {
|
||||
dp = (lbfgsfloatval_t*)vecalloc(n * sizeof(lbfgsfloatval_t));
|
||||
if (dp == NULL) {
|
||||
ret = LBFGSERR_OUTOFMEMORY;
|
||||
goto lbfgs_exit;
|
||||
}
|
||||
}
|
||||
|
||||
// 初始化计算L1模的数组
|
||||
if (param.orthantwise_c != 0.) {
|
||||
/* Allocate working space for OW-LQN. */
|
||||
@@ -620,7 +629,13 @@ int lbfgs(
|
||||
|
||||
// 我们在这里提供一个预优函数的接口 返回 d = H0^-1 * d
|
||||
if (cd.proc_precondition) {
|
||||
cd.proc_precondition(cd.instance, x, d, n);
|
||||
if (param.orthantwise_c == 0.) {
|
||||
cd.proc_precondition(cd.instance, x, g, d, dp, n);
|
||||
} else {
|
||||
cd.proc_precondition(cd.instance, x, pg, d, dp, n);
|
||||
}
|
||||
|
||||
veccpy(d, dp, n);
|
||||
}
|
||||
|
||||
for (i = 0;i < bound;++i) {
|
||||
|
||||
Reference in New Issue
Block a user