mirror of
https://github.com/SheffieldML/GPy.git
synced 2026-05-15 06:52:39 +02:00
[scg] minor adjustements based on original publication
This commit is contained in:
parent
fdf8f984c1
commit
47d10600d1
1 changed files with 5 additions and 5 deletions
|
|
@ -56,13 +56,13 @@ def SCG(f, gradf, x, optargs=(), maxiters=500, max_f_eval=np.inf, display=True,
|
||||||
if gtol is None:
|
if gtol is None:
|
||||||
gtol = 1e-5
|
gtol = 1e-5
|
||||||
|
|
||||||
sigma0 = 1.0e-8
|
sigma0 = 1.0e-7
|
||||||
fold = f(x, *optargs) # Initial function value.
|
fold = f(x, *optargs) # Initial function value.
|
||||||
function_eval = 1
|
function_eval = 1
|
||||||
fnow = fold
|
fnow = fold
|
||||||
gradnew = gradf(x, *optargs) # Initial gradient.
|
gradnew = gradf(x, *optargs) # Initial gradient.
|
||||||
if any(np.isnan(gradnew)):
|
#if any(np.isnan(gradnew)):
|
||||||
raise UnexpectedInfOrNan, "Gradient contribution resulted in a NaN value"
|
# raise UnexpectedInfOrNan, "Gradient contribution resulted in a NaN value"
|
||||||
current_grad = np.dot(gradnew, gradnew)
|
current_grad = np.dot(gradnew, gradnew)
|
||||||
gradold = gradnew.copy()
|
gradold = gradnew.copy()
|
||||||
d = -gradnew # Initial search direction.
|
d = -gradnew # Initial search direction.
|
||||||
|
|
@ -168,13 +168,13 @@ def SCG(f, gradf, x, optargs=(), maxiters=500, max_f_eval=np.inf, display=True,
|
||||||
if Delta < 0.25:
|
if Delta < 0.25:
|
||||||
beta = min(4.0 * beta, betamax)
|
beta = min(4.0 * beta, betamax)
|
||||||
if Delta > 0.75:
|
if Delta > 0.75:
|
||||||
beta = max(0.5 * beta, betamin)
|
beta = max(0.25 * beta, betamin)
|
||||||
|
|
||||||
# Update search direction using Polak-Ribiere formula, or re-start
|
# Update search direction using Polak-Ribiere formula, or re-start
|
||||||
# in direction of negative gradient after nparams steps.
|
# in direction of negative gradient after nparams steps.
|
||||||
if nsuccess == x.size:
|
if nsuccess == x.size:
|
||||||
d = -gradnew
|
d = -gradnew
|
||||||
# beta = 1. # TODO: betareset!!
|
beta = 1. # This is not in the original paper
|
||||||
nsuccess = 0
|
nsuccess = 0
|
||||||
elif success:
|
elif success:
|
||||||
Gamma = np.dot(gradold - gradnew, gradnew) / (mu)
|
Gamma = np.dot(gradold - gradnew, gradnew) / (mu)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue