提交 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):
return v
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
import elemwise
from theano import scalar as scal
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.printing import pprint, min_informative_str
......@@ -5227,23 +5227,27 @@ class Dot(Op):
try:
iv0 = get_test_value(inputs[0])
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:
iv1 = get_test_value(inputs[1])
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:
ev0 = get_test_value(eval_points[0])
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:
ev1 = get_test_value(eval_points[1])
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]
eval_point_values = [ ev0, ev1 ]
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论