提交 f058a81e authored 作者: Frederic's avatar Frederic

Fix GpuArrayType.values_eq_approx(). It wasn't checking the signe correctly.

上级 f38a3f3d
import operator
import numpy
import theano
from theano.compile import DeepCopyOp
......@@ -18,3 +20,15 @@ def test_deep_copy():
res = f(a)
assert GpuArrayType.values_eq(res, a)
def test_values_eq_approx():
a = rand_gpuarray(20, dtype='float32')
g = GpuArrayType(dtype='float32', broadcastable=(False,))('g')
assert GpuArrayType.values_eq_approx(a, a)
b = a.copy()
b[0] = numpy.asarray(b[0]) + 1.
assert not GpuArrayType.values_eq_approx(a, b)
b = a.copy()
b[0] = -numpy.asarray(b[0])
assert not GpuArrayType.values_eq_approx(a, b)
......@@ -107,7 +107,7 @@ class GpuArrayType(Type):
return GpuArrayType.values_eq(a, b)
else:
res = elemwise2(a, '', b, a, odtype=numpy.dtype('bool'),
op_tmpl="res[i] = ((%(a)s - %(b)s) <"
op_tmpl="res[i] = (fabs(%(a)s - %(b)s) <"
"(1e-8 + 1e-5 * fabs(%(b)s)))")
return numpy.asarray(res).all()
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论