提交 9ae266d3 authored 作者: Frederic's avatar Frederic

fix gh-1133, don't replace error message from compute_test_value.

上级 6469c740
......@@ -1584,9 +1584,9 @@ class _tensor_py_operators:
# Otherwise this will convert error when Theano flags
# compute_test_value is used
# Evidently, we need to catch NotImplementedError
# But we also need to catch TypeError
# TypeError from as_tensor_variable are caught in Elemwise.make_node
# Oterwise TensorVariable * SparseVariable won't work!
except (NotImplementedError, TypeError):
except NotImplementedError:
# We must return NotImplemented and not an
# NotImplementedError or raise an NotImplementedError.
# That way python will give a good error message like this
......@@ -1599,7 +1599,7 @@ class _tensor_py_operators:
# and the return value in that case
try:
return sub(self, other)
except (NotImplementedError, TypeError):
except NotImplementedError:
return NotImplemented
def __mul__(self, other):
......@@ -1607,7 +1607,7 @@ class _tensor_py_operators:
# and the return value in that case
try:
return mul(self, other)
except (NotImplementedError, TypeError):
except NotImplementedError:
return NotImplemented
def __div__(self, other):
......@@ -1619,7 +1619,7 @@ class _tensor_py_operators:
# This is to raise the exception that occurs when trying to divide
# two integer arrays (currently forbidden).
raise
except (NotImplementedError, TypeError):
except NotImplementedError:
return NotImplemented
if PY3:
__truediv__ = __div__
......@@ -1629,7 +1629,7 @@ class _tensor_py_operators:
# adn the return value in that case
try:
return pow(self, other)
except (NotImplementedError, TypeError):
except NotImplementedError:
return NotImplemented
def __mod__(self, other):
......@@ -1641,7 +1641,7 @@ class _tensor_py_operators:
# This is to raise the exception that occurs when trying to compute
# x % y with either x or y a complex number.
raise
except (NotImplementedError, TypeError):
except NotImplementedError:
return NotImplemented
def __truediv__(self, other):
......
......@@ -530,8 +530,13 @@ class Elemwise(Op):
is left-completed to the greatest number of dimensions with 1s
using DimShuffle.
"""
inputs = map(as_tensor_variable, inputs)
try:
inputs = map(as_tensor_variable, inputs)
except TypeError:
# __{add,sub,mul,div,mod,pow}__
# need to raise NotImplemented to make
# TensorVariable op SparseVariable work.
return NotImplemented
shadow = self.scalar_op.make_node(
*[Scalar(dtype=i.type.dtype)() for i in inputs])
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论