提交 5fbd2cd7 authored 作者: Olivier Delalleau's avatar Olivier Delalleau

Fixed bug in theano._asarray: a new view was created even when this was not necessary

上级 85b6de00
...@@ -18,18 +18,22 @@ def _asarray(a, dtype=None, order=None): ...@@ -18,18 +18,22 @@ def _asarray(a, dtype=None, order=None):
Currently, this issue has only been causing trouble when the target Currently, this issue has only been causing trouble when the target
data type is 'int32', on some computers. As a result, this is the only data type is 'int32', on some computers. As a result, this is the only
situation where we do more than a simple call to ``numpy.asarray``. If it situation where we may do more than a simple call to ``numpy.asarray``. If
turns out that a similar problem can occur for more data type, this it turns out that a similar problem can occur for more data type, this
function should be updated accordingly. function should be updated accordingly.
This function's name starts with a '_' to indicate that it is meant to be This function's name starts with a '_' to indicate that it is meant to be
used internally. It is imported so as to be available directly through used internally. It is imported so as to be available directly through
theano._asarray theano._asarray
""" """
dtype = numpy.dtype(dtype) # Convert into dtype object.
rval = numpy.asarray(a, dtype=dtype, order=order) rval = numpy.asarray(a, dtype=dtype, order=order)
if dtype is numpy.int32 or dtype == 'int32': numpy_int32 = numpy.dtype(numpy.int32)
# Make sure the type is properly set to the correct type. if (dtype is numpy_int32 and rval.dtype is not numpy_int32):
return rval.view(dtype=numpy.int32) # Enfore the numpy.int32 dtype.
return rval.view(dtype=numpy_int32)
else: else:
# Using ``numpy.asarray`` should work just fine. # Using ``numpy.asarray`` should work just fine.
# Debug assert if we want to detect other failure cases (untested):
# assert rval.dtype is dtype
return rval return rval
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论