some minor example modifications and cgd adjustments

This commit is contained in:
Max Zwiessele 2013-05-03 14:22:18 +01:00
parent 9229100af7
commit 5321bfc8c9
4 changed files with 33 additions and 31 deletions

View file

@ -166,25 +166,26 @@ class Async_Optimize(object):
except Empty:
pass
def fmin_async(self, f, df, x0, callback, update_rule=FletcherReeves,
def opt_async(self, f, df, x0, callback, update_rule=FletcherReeves,
messages=0, maxiter=5e3, max_f_eval=15e3, gtol=1e-6,
report_every=10, *args, **kwargs):
self.runsignal.set()
outqueue = Queue()
c = None
if callback:
self.callback = callback
c = Thread(target=self.async_callback_collect, args=(outqueue,))
c.start()
c = Thread(target=self.async_callback_collect, args=(outqueue,))
c.start()
p = _CGDAsync(f, df, x0, update_rule, self.runsignal, self.SENTINEL,
report_every=report_every, messages=messages, maxiter=maxiter,
max_f_eval=max_f_eval, gtol=gtol, outqueue=outqueue, *args, **kwargs)
p.run()
return p, c
def fmin(self, f, df, x0, callback=None, update_rule=FletcherReeves,
def opt(self, f, df, x0, callback=None, update_rule=FletcherReeves,
messages=0, maxiter=5e3, max_f_eval=15e3, gtol=1e-6,
report_every=10, *args, **kwargs):
p, c = self.fmin_async(f, df, x0, callback, update_rule, messages,
p, c = self.opt_async(f, df, x0, callback, update_rule, messages,
maxiter, max_f_eval, gtol,
report_every, *args, **kwargs)
while self.runsignal.is_set():
@ -195,7 +196,8 @@ class Async_Optimize(object):
# print "^C"
self.runsignal.clear()
p.join()
if c.is_alive():
c.join()
if c and c.is_alive():
print "WARNING: callback still running, optimisation done!"
return p.result
@ -208,11 +210,11 @@ class CGD(Async_Optimize):
if df returns tuple (grad, natgrad) it will optimize according
to natural gradient rules
'''
name = "Conjugate Gradient Descent"
opt_name = "Conjugate Gradient Descent"
def fmin_async(self, *a, **kw):
def opt_async(self, *a, **kw):
"""
fmin_async(self, f, df, x0, callback, update_rule=FletcherReeves,
opt_async(self, f, df, x0, callback, update_rule=FletcherReeves,
messages=0, maxiter=5e3, max_f_eval=15e3, gtol=1e-6,
report_every=10, *args, **kwargs)
@ -240,11 +242,11 @@ class CGD(Async_Optimize):
at end of optimization!
"""
return super(CGD, self).fmin_async(*a, **kw)
return super(CGD, self).opt_async(*a, **kw)
def fmin(self, *a, **kw):
def opt(self, *a, **kw):
"""
fmin(self, f, df, x0, callback=None, update_rule=FletcherReeves,
opt(self, f, df, x0, callback=None, update_rule=FletcherReeves,
messages=0, maxiter=5e3, max_f_eval=15e3, gtol=1e-6,
report_every=10, *args, **kwargs)
@ -267,5 +269,5 @@ class CGD(Async_Optimize):
at end of optimization
"""
return super(CGD, self).fmin(*a, **kw)
return super(CGD, self).opt(*a, **kw)