提交 8cf2e21d authored 作者: James Bergstra's avatar James Bergstra

Replaced printing to stderr with logging in gof/opt

上级 7ed08878
...@@ -4,7 +4,7 @@ amount of useful generic optimization tools. ...@@ -4,7 +4,7 @@ amount of useful generic optimization tools.
""" """
import sys import sys, logging
import graph import graph
from env import InconsistencyError from env import InconsistencyError
import utils import utils
...@@ -17,6 +17,8 @@ from theano.gof.python25 import any, all ...@@ -17,6 +17,8 @@ from theano.gof.python25 import any, all
#if sys.version_info[:2] >= (2,5): #if sys.version_info[:2] >= (2,5):
# from collections import defaultdict # from collections import defaultdict
_logger = logging.getLogger('theano.gof.opt')
from theano.gof import deque from theano.gof import deque
import destroyhandler as dh import destroyhandler as dh
import traceback import traceback
...@@ -107,9 +109,9 @@ class SeqOptimizer(Optimizer, list): ...@@ -107,9 +109,9 @@ class SeqOptimizer(Optimizer, list):
def warn(exc, self, optimizer): def warn(exc, self, optimizer):
"""Default failure_callback for SeqOptimizer """Default failure_callback for SeqOptimizer
""" """
print >> sys.stderr, "WARNING: SeqOptimizer apply", optimizer _logger.error("ERROR: SeqOptimizer apply %s"% str(optimizer))
print >> sys.stderr, "Traceback:" _logger.error("Traceback:")
traceback.print_exc() _logger.error(traceback.format_exc())
def __init__(self, *opts, **kw): def __init__(self, *opts, **kw):
"""WRITEME""" """WRITEME"""
...@@ -647,9 +649,9 @@ class NavigatorOptimizer(Optimizer): ...@@ -647,9 +649,9 @@ class NavigatorOptimizer(Optimizer):
def warn(exc, nav, repl_pairs, local_opt): def warn(exc, nav, repl_pairs, local_opt):
"""failure_callback for NavigatorOptimizer: print traceback """failure_callback for NavigatorOptimizer: print traceback
""" """
print >> sys.stderr, "WARNING: Optimization failure due to: ", local_opt _logger.error("ERROR: Optimization failure due to: %s" % str(local_opt))
print >> sys.stderr, "TRACEBACK:" _logger.error("TRACEBACK:")
traceback.print_exc() _logger.error(traceback.format_exc())
if isinstance(exc, AssertionError): if isinstance(exc, AssertionError):
raise exc raise exc
@staticmethod @staticmethod
...@@ -658,11 +660,7 @@ class NavigatorOptimizer(Optimizer): ...@@ -658,11 +660,7 @@ class NavigatorOptimizer(Optimizer):
""" """
if isinstance(exc, InconsistencyError): if isinstance(exc, InconsistencyError):
return return
print >> sys.stderr, "WARNING: Optimization failure due to: ", local_opt return NavigatorOptimizer.warn(exc, nav, repl_pairs, local_opt)
print >> sys.stderr, "TRACEBACK:"
traceback.print_exc()
if isinstance(exc, AssertionError):
raise exc
@staticmethod @staticmethod
def warn_ignore(exc, nav, repl_pairs, local_opt): def warn_ignore(exc, nav, repl_pairs, local_opt):
"""failure_callback for NavigatorOptimizer: ignore all errors """failure_callback for NavigatorOptimizer: ignore all errors
...@@ -948,7 +946,7 @@ class EquilibriumOptimizer(NavigatorOptimizer): ...@@ -948,7 +946,7 @@ class EquilibriumOptimizer(NavigatorOptimizer):
self.detach_updater(env, u) self.detach_updater(env, u)
self.detach_updater(env, u) #TODO: erase this line, it's redundant at best self.detach_updater(env, u) #TODO: erase this line, it's redundant at best
if max_use_abort: if max_use_abort:
print >> sys.stderr, "WARNING: EquilibriumOptimizer max'ed out" _logger.error("ERROR: EquilibriumOptimizer max'ed out")
def print_summary(self, stream=sys.stdout, level=0): def print_summary(self, stream=sys.stdout, level=0):
print >> stream, "%s%s id=%i" %(' '*level, self.__class__.__name__, id(self)) print >> stream, "%s%s id=%i" %(' '*level, self.__class__.__name__, id(self))
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论