提交 c9e6977f authored 作者: Ian Goodfellow's avatar Ian Goodfellow

fixed defensive programming to not raise when compute_test_value =

'warn' or 'ignore'
上级 12d07fe1
...@@ -563,3 +563,23 @@ def get_test_value(v): ...@@ -563,3 +563,23 @@ def get_test_value(v):
return v return v
raise raise
def missing_test_message(msg):
""" Displays msg, a message saying that some test_value is missing,
in the appropriate form based on config.compute_test_value:
off: the interactive debugger is off, so we do nothing
ignore: the interactive debugger is set to ignore missing inputs,
so do nothing
warn: display msg as a warning
raise: raise an AttributeError with msg as the exception text
"""
action = config.compute_test_value
if action == 'raise':
raise AttributeError(msg)
elif action == 'warn':
warnings.warn(msg, stacklevel = 2)
else:
assert action in [ 'ignore', 'off' ]
...@@ -20,7 +20,7 @@ from theano.gof import Apply, Constant, Op, Type, Value, Variable ...@@ -20,7 +20,7 @@ from theano.gof import Apply, Constant, Op, Type, Value, Variable
import elemwise import elemwise
from theano import scalar as scal from theano import scalar as scal
from theano.gof.python25 import partial, any, all from theano.gof.python25 import partial, any, all
from theano.gof.op import get_test_value from theano.gof.op import get_test_value, missing_test_message
from theano import compile, printing from theano import compile, printing
from theano.printing import pprint, min_informative_str from theano.printing import pprint, min_informative_str
...@@ -5227,23 +5227,27 @@ class Dot(Op): ...@@ -5227,23 +5227,27 @@ class Dot(Op):
try: try:
iv0 = get_test_value(inputs[0]) iv0 = get_test_value(inputs[0])
except AttributeError: except AttributeError:
raise AttributeError('first input passed to Dot.R_op has no test value') missing_test_message('first input passed to Dot.R_op has no test value')
debugger_available = False
try: try:
iv1 = get_test_value(inputs[1]) iv1 = get_test_value(inputs[1])
except AttributeError: except AttributeError:
raise AttributeError('second input passed to Dot.R_op has no test value') missing_test_message('second input passed to Dot.R_op has no test value')
debugger_available = False
try: try:
ev0 = get_test_value(eval_points[0]) ev0 = get_test_value(eval_points[0])
except AttributeError: except AttributeError:
raise AttributeError('first eval point passed to Dot.R_op has no test value') missing_test_message('first eval point passed to Dot.R_op has no test value')
debugger_available = False
try: try:
ev1 = get_test_value(eval_points[1]) ev1 = get_test_value(eval_points[1])
except AttributeError: except AttributeError:
raise AttributeError('second eval point passed to Dot.R_op has no test value') missing_test_message('second eval point passed to Dot.R_op has no test value')
debugger_available = False
if debugger_available:
input_values = [ iv0, iv1] input_values = [ iv0, iv1]
eval_point_values = [ ev0, ev1 ] eval_point_values = [ ev0, ev1 ]
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论