提交 7cb92b1e authored 作者: Arnaud Bergeron's avatar Arnaud Bergeron

Actually use values_eq_approx (and make sure it works while there).

上级 c82494ec
...@@ -24,7 +24,7 @@ def test_transfer(): ...@@ -24,7 +24,7 @@ def test_transfer():
f = theano.function([a], gpu_from_host(a)) f = theano.function([a], gpu_from_host(a))
fv = f(av) fv = f(av)
assert numpy.allclose(fv, gv) assert GpuArrayType.values_eq_approx(fv, gv)
f = theano.function([g], host_from_gpu(g)) f = theano.function([g], host_from_gpu(g))
fv = f(gv) fv = f(gv)
......
...@@ -9,7 +9,7 @@ from theano.compile import SharedVariable ...@@ -9,7 +9,7 @@ from theano.compile import SharedVariable
try: try:
import pygpu import pygpu
from pygpu import gpuarray from pygpu import gpuarray
from pygpu.elemwise import compare from pygpu.elemwise import compare, elemwise2
from basic_ops import host_from_gpu, gpu_from_host from basic_ops import host_from_gpu, gpu_from_host
except ImportError: except ImportError:
pass pass
...@@ -77,18 +77,20 @@ class GpuArrayType(Type): ...@@ -77,18 +77,20 @@ class GpuArrayType(Type):
" dimension.", shp, self.broadcastable) " dimension.", shp, self.broadcastable)
return data return data
def values_eq(self, a, b): @classmethod
def values_eq(cls, a, b):
if a.shape != b.shape: if a.shape != b.shape:
return False return False
if a.typecode != b.typecode: if a.typecode != b.typecode:
return False return False
return numpy.asarray(compare(a, '==', b)).all() return numpy.asarray(compare(a, '==', b)).all()
def values_eq_approx(self, a, b): @classmethod
def values_eq_approx(cls, a, b):
if a.shape != b.shape or a.dtype != b.dtype: if a.shape != b.shape or a.dtype != b.dtype:
return False return False
if 'int' in str(a.dtype): if 'int' in str(a.dtype):
return self.values_eq(a, b) return cls.values_eq(a, b)
else: else:
res = elemwise2(a, '', b, a, odtype=numpy.dtype('bool'), res = elemwise2(a, '', b, a, odtype=numpy.dtype('bool'),
op_tmpl="res[i] = ((%(a)s - %(b)s) <" \ op_tmpl="res[i] = ((%(a)s - %(b)s) <" \
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论