Removed the unused code.
git-svn-id: file:///home/svnrepos/software/liblbfgs/trunk@47 ecf4c44f-38d1-4fa4-9757-a0b4dd0349fc
This commit is contained in:
parent
25e895b4e5
commit
83a802b87c
139
lib/lbfgs.c
139
lib/lbfgs.c
@ -196,23 +196,6 @@ static lbfgsfloatval_t owlqn_x1norm(
|
|||||||
const int n
|
const int n
|
||||||
);
|
);
|
||||||
|
|
||||||
static lbfgsfloatval_t owlqn_g2norm(
|
|
||||||
const lbfgsfloatval_t* x,
|
|
||||||
const lbfgsfloatval_t* g,
|
|
||||||
const lbfgsfloatval_t c,
|
|
||||||
const int start,
|
|
||||||
const int n
|
|
||||||
);
|
|
||||||
|
|
||||||
static void owlqn_direction(
|
|
||||||
lbfgsfloatval_t* d,
|
|
||||||
const lbfgsfloatval_t* x,
|
|
||||||
const lbfgsfloatval_t* g,
|
|
||||||
const lbfgsfloatval_t c,
|
|
||||||
const int start,
|
|
||||||
const int n
|
|
||||||
);
|
|
||||||
|
|
||||||
static void owlqn_pseudo_gradient(
|
static void owlqn_pseudo_gradient(
|
||||||
lbfgsfloatval_t* pg,
|
lbfgsfloatval_t* pg,
|
||||||
const lbfgsfloatval_t* x,
|
const lbfgsfloatval_t* x,
|
||||||
@ -223,15 +206,6 @@ static void owlqn_pseudo_gradient(
|
|||||||
const int end
|
const int end
|
||||||
);
|
);
|
||||||
|
|
||||||
static lbfgsfloatval_t owlqn_direction_line(
|
|
||||||
const lbfgsfloatval_t* x,
|
|
||||||
const lbfgsfloatval_t* g,
|
|
||||||
const lbfgsfloatval_t* s,
|
|
||||||
const lbfgsfloatval_t c,
|
|
||||||
const int start,
|
|
||||||
const int n
|
|
||||||
);
|
|
||||||
|
|
||||||
static void owlqn_project(
|
static void owlqn_project(
|
||||||
lbfgsfloatval_t* d,
|
lbfgsfloatval_t* d,
|
||||||
const lbfgsfloatval_t* sign,
|
const lbfgsfloatval_t* sign,
|
||||||
@ -1306,74 +1280,6 @@ static lbfgsfloatval_t owlqn_x1norm(
|
|||||||
return norm;
|
return norm;
|
||||||
}
|
}
|
||||||
|
|
||||||
static lbfgsfloatval_t owlqn_g2norm(
|
|
||||||
const lbfgsfloatval_t* x,
|
|
||||||
const lbfgsfloatval_t* g,
|
|
||||||
const lbfgsfloatval_t c,
|
|
||||||
const int start,
|
|
||||||
const int n
|
|
||||||
)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
lbfgsfloatval_t d = 0.;
|
|
||||||
lbfgsfloatval_t norm = 0.;
|
|
||||||
|
|
||||||
for (i = 0;i < start;++i) {
|
|
||||||
norm += g[i] * g[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = start;i < n;++i) {
|
|
||||||
d = g[i];
|
|
||||||
if (x[i] < 0.) {
|
|
||||||
d -= c;
|
|
||||||
} else if (0. < x[i]) {
|
|
||||||
d += c;
|
|
||||||
}
|
|
||||||
norm += d * d;
|
|
||||||
}
|
|
||||||
|
|
||||||
return sqrt(norm);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void owlqn_direction(
|
|
||||||
lbfgsfloatval_t* d,
|
|
||||||
const lbfgsfloatval_t* x,
|
|
||||||
const lbfgsfloatval_t* g,
|
|
||||||
const lbfgsfloatval_t c,
|
|
||||||
const int start,
|
|
||||||
const int n
|
|
||||||
)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
/* Compute the negative of gradients. */
|
|
||||||
for (i = 0;i < start;++i) {
|
|
||||||
d[i] = -g[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Compute the negative of psuedo-gradients. */
|
|
||||||
for (i = start;i < n;++i) {
|
|
||||||
if (x[i] < 0.) {
|
|
||||||
/* Differentiable. */
|
|
||||||
d[i] = -g[i] + c;
|
|
||||||
} else if (0. < x[i]) {
|
|
||||||
/* Differentiable. */
|
|
||||||
d[i] = -g[i] - c;
|
|
||||||
} else {
|
|
||||||
if (g[i] < -c) {
|
|
||||||
/* Take the right partial derivative. */
|
|
||||||
d[i] = -g[i] - c;
|
|
||||||
} else if (c < g[i]) {
|
|
||||||
/* Take the left partial derivative. */
|
|
||||||
d[i] = -g[i] + c;
|
|
||||||
} else {
|
|
||||||
/* The gradient is in the range of [-C, C]. */
|
|
||||||
d[i] = 0.;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void owlqn_pseudo_gradient(
|
static void owlqn_pseudo_gradient(
|
||||||
lbfgsfloatval_t* pg,
|
lbfgsfloatval_t* pg,
|
||||||
const lbfgsfloatval_t* x,
|
const lbfgsfloatval_t* x,
|
||||||
@ -1417,51 +1323,6 @@ static void owlqn_pseudo_gradient(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static lbfgsfloatval_t owlqn_direction_line(
|
|
||||||
const lbfgsfloatval_t* x,
|
|
||||||
const lbfgsfloatval_t* g,
|
|
||||||
const lbfgsfloatval_t* s,
|
|
||||||
const lbfgsfloatval_t c,
|
|
||||||
const int start,
|
|
||||||
const int n
|
|
||||||
)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
lbfgsfloatval_t d = 0.;
|
|
||||||
|
|
||||||
/* Compute the negative of gradients. */
|
|
||||||
for (i = 0;i < start;++i) {
|
|
||||||
d += s[i] * g[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Use psuedo-gradients for orthant-wise updates. */
|
|
||||||
for (i = start;i < n;++i) {
|
|
||||||
/* Notice that:
|
|
||||||
(-s[i] < 0) <==> (g[i] < -param->orthantwise_c)
|
|
||||||
(-s[i] > 0) <==> (param->orthantwise_c < g[i])
|
|
||||||
as the result of the lbfgs() function for orthant-wise updates.
|
|
||||||
*/
|
|
||||||
if (s[i] != 0.) {
|
|
||||||
if (x[i] < 0.) {
|
|
||||||
/* Differentiable. */
|
|
||||||
d += s[i] * (g[i] - c);
|
|
||||||
} else if (0. < x[i]) {
|
|
||||||
/* Differentiable. */
|
|
||||||
d += s[i] * (g[i] + c);
|
|
||||||
} else if (s[i] < 0.) {
|
|
||||||
/* Take the left partial derivative. */
|
|
||||||
d += s[i] * (g[i] - c);
|
|
||||||
} else if (0. < s[i]) {
|
|
||||||
/* Take the right partial derivative. */
|
|
||||||
d += s[i] * (g[i] + c);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return d;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void owlqn_project(
|
static void owlqn_project(
|
||||||
lbfgsfloatval_t* d,
|
lbfgsfloatval_t* d,
|
||||||
const lbfgsfloatval_t* sign,
|
const lbfgsfloatval_t* sign,
|
||||||
|
@ -64,8 +64,8 @@ int main(int argc, char *argv)
|
|||||||
|
|
||||||
/* Initialize the parameters for the L-BFGS optimization. */
|
/* Initialize the parameters for the L-BFGS optimization. */
|
||||||
lbfgs_parameter_init(¶m);
|
lbfgs_parameter_init(¶m);
|
||||||
param.orthantwise_c = 1;
|
//param.orthantwise_c = 1;
|
||||||
/* param.linesearch = LBFGS_LINESEARCH_BACKTRACKING_STRONG; */
|
param.linesearch = LBFGS_LINESEARCH_BACKTRACKING_STRONG;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Start the L-BFGS optimization; this will invoke the callback functions
|
Start the L-BFGS optimization; this will invoke the callback functions
|
||||||
|
Loading…
Reference in New Issue
Block a user