tmp update

This commit is contained in:
2022-02-16 17:06:41 +08:00
parent 47b3e01cfb
commit 038fb4a60d
4 changed files with 235 additions and 4 deletions

View File

@@ -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) {