提交 9a2d3d5a authored 作者: Frédéric Bastien's avatar Frédéric Bastien 提交者: GitHub

Merge pull request #5539 from lamblin/fix_5498

Fix test for Python 3 on 32-bit
...@@ -6889,19 +6889,32 @@ class test_arithmetic_cast(unittest.TestCase): ...@@ -6889,19 +6889,32 @@ class test_arithmetic_cast(unittest.TestCase):
class T_long_tensor(unittest.TestCase): class T_long_tensor(unittest.TestCase):
def test_fit_int64(self): def test_fit_int64(self):
for exp in xrange(theano.configdefaults.python_int_bitwidth()): bitwidth = theano.configdefaults.python_int_bitwidth()
val = L(2 ** exp - 1) for exponent in xrange(bitwidth):
val = L(2 ** exponent - 1)
scalar_ct = constant(val) scalar_ct = constant(val)
assert scalar_ct.dtype in tensor.int_dtypes, (exp, val, scalar_ct.dtype) assert scalar_ct.dtype in tensor.int_dtypes, (exponent, val, scalar_ct.dtype)
assert scalar_ct.value == val assert scalar_ct.value == val
vector_ct = constant([val, val]) vector_ct = constant([val, val])
assert vector_ct.dtype == 'int64' # On Python 2, numpy.array() on a "long" returns int64,
# but on Python 3, all integers are long, and numpy.asarray
# will not force the upcasting, and return the native int width.
if PY3 and bitwidth == 32:
assert vector_ct.dtype == 'int32'
else:
assert vector_ct.dtype == 'int64'
assert numpy.all(vector_ct.value == val) assert numpy.all(vector_ct.value == val)
matrix_ct = constant([[val, val]]) matrix_ct = constant([[val, val]])
assert matrix_ct.dtype == 'int64' # On Python 2, numpy.array() on a "long" returns int64,
# but on Python 3, all integers are long, and numpy.asarray
# will not force the upcasting, and return the native int width.
if PY3 and bitwidth == 32:
assert matrix_ct.dtype == 'int32'
else:
assert matrix_ct.dtype == 'int64'
assert numpy.all(matrix_ct.value == val) assert numpy.all(matrix_ct.value == val)
def test_too_big(self): def test_too_big(self):
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论