提交 3a2029b7 authored 作者: nouiz's avatar nouiz

Merge pull request #840 from lamblin/travis

Try to see which tests trigger build failure No NEST.txt, fix to new op since the last release.
...@@ -841,7 +841,7 @@ class T_Scan(unittest.TestCase): ...@@ -841,7 +841,7 @@ class T_Scan(unittest.TestCase):
(theano_x0, theano_x1) = f9(vu0, vu1, vu2, vx0, vx1) (theano_x0, theano_x1) = f9(vu0, vu1, vu2, vx0, vx1)
# assert that theano does what it should # assert that theano does what it should
assert numpy.allclose(theano_x0, numpy_x0) assert numpy.allclose(theano_x0, numpy_x0)
assert numpy.allclose(theano_x1, numpy_x1) assert numpy.allclose(theano_x1, numpy_x1), (theano_x1, numpy_x1, theano_x1 - numpy_x1)
# assert that it was done in place # assert that it was done in place
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
......
...@@ -3,7 +3,7 @@ import numpy ...@@ -3,7 +3,7 @@ import numpy
import theano import theano
import basic import basic
from theano import gof, tensor, function, scalar from theano import gof, tensor, scalar
from theano.sandbox.linalg.ops import diag from theano.sandbox.linalg.ops import diag
...@@ -132,6 +132,21 @@ class BinCountOp(theano.Op): ...@@ -132,6 +132,21 @@ class BinCountOp(theano.Op):
if x.dtype not in BinCountOp.compatible_type: if x.dtype not in BinCountOp.compatible_type:
raise TypeError("Inputs dtype must be an integer.") raise TypeError("Inputs dtype must be an integer.")
# Some dtypes are not supported by numpy's implementation of bincount.
# Until another one is available, we should fail at graph construction
# time, not wait for execution.
int_bitwidth = theano.gof.cmodule.python_int_bitwidth()
if int_bitwidth == 64:
numpy_unsupported_dtypes = ('uint64',)
if int_bitwidth == 32:
numpy_unsupported_dtypes = ('uint32', 'int64', 'uint64')
if x.dtype in numpy_unsupported_dtypes:
raise TypeError(
("Input dtypes %s are not supported by numpy.bincount, "
% numpy_unsupported_dtypes), x.dtype)
if x.ndim != 1: if x.ndim != 1:
raise TypeError("Inputs must be of dimension 1.") raise TypeError("Inputs must be of dimension 1.")
...@@ -286,6 +301,25 @@ class RepeatOp(theano.Op): ...@@ -286,6 +301,25 @@ class RepeatOp(theano.Op):
def make_node(self, x, repeats): def make_node(self, x, repeats):
x = basic.as_tensor_variable(x) x = basic.as_tensor_variable(x)
repeats = basic.as_tensor_variable(repeats) repeats = basic.as_tensor_variable(repeats)
if repeats.dtype not in tensor.discrete_dtypes:
raise TypeError("repeats.dtype must be an integer.")
# Some dtypes are not supported by numpy's implementation of repeat.
# Until another one is available, we should fail at graph construction
# time, not wait for execution.
int_bitwidth = theano.gof.cmodule.python_int_bitwidth()
if int_bitwidth == 64:
numpy_unsupported_dtypes = ('uint64',)
if int_bitwidth == 32:
numpy_unsupported_dtypes = ('uint32', 'int64', 'uint64')
if repeats.dtype in numpy_unsupported_dtypes:
raise TypeError(
("dtypes %s are not supported by numpy.repeat "
"for the 'repeats' parameter, "
% numpy_unsupported_dtypes), repeats.dtype)
if self.axis is None: if self.axis is None:
out_type = theano.tensor.TensorType(dtype=x.dtype, out_type = theano.tensor.TensorType(dtype=x.dtype,
broadcastable=[False]) broadcastable=[False])
......
...@@ -970,7 +970,7 @@ class ShapeFeature(object): ...@@ -970,7 +970,7 @@ class ShapeFeature(object):
# but this works with `local_useless_subtensor`, so for now we # but this works with `local_useless_subtensor`, so for now we
# keep it this way. See #266 for a better long-term fix. # keep it this way. See #266 for a better long-term fix.
if getattr(d, 'dtype', 'int64') != 'int64': if getattr(d, 'dtype', 'int64') != 'int64':
assert d.dtype in theano.tensor.int_dtypes assert d.dtype in theano.tensor.discrete_dtypes, d.dtype
new_shape += sh[len(new_shape):i + 1] new_shape += sh[len(new_shape):i + 1]
new_shape[i] = theano.tensor.cast(d, 'int64') new_shape[i] = theano.tensor.cast(d, 'int64')
if new_shape: if new_shape:
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论