提交 46969ae5 authored 作者: Frederic Bastien's avatar Frederic Bastien

Fix gh-5280. Remove isnan from the graph for discrete dtype.

上级 a37a03f1
...@@ -1825,6 +1825,18 @@ def neq(a, b): ...@@ -1825,6 +1825,18 @@ def neq(a, b):
def isnan(a): def isnan(a):
"""isnan(a)""" """isnan(a)"""
# Rename isnan to isnan_ to allow to bypass it when not needed.
# glibc 2.23 don't allow isnan on int, so we remove it from the graph.
isnan_ = isnan
def isnan(a):
"""isnan(a)"""
if a.dtype in discrete_dtypes:
return alloc(numpy.asarray(False, dtype="bool"),
*[a.shape[i] for i in range(a.ndim)])
return isnan_(a)
@_scal_elemwise @_scal_elemwise
def isinf(a): def isinf(a):
......
...@@ -2860,6 +2860,14 @@ def test_nan_inf_constant_signature(): ...@@ -2860,6 +2860,14 @@ def test_nan_inf_constant_signature():
assert f(numpy.nan) == 0 assert f(numpy.nan) == 0
def test_isnan():
for x in [tensor.matrix(), tensor.imatrix(), tensor.matrix(dtype='bool')]:
y = tensor.isnan(x)
assert isinstance(y.owner.op, tensor.Elemwise) == (
x.dtype not in tensor.discrete_dtypes)
assert y.dtype == 'bool'
class T_Shape(unittest.TestCase): class T_Shape(unittest.TestCase):
def test_basic0(self): def test_basic0(self):
s = shape(numpy.ones((5, 3))) s = shape(numpy.ones((5, 3)))
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论