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