提交 cc55e67c authored 作者: Iban Harlouchet's avatar Iban Harlouchet

flake8 for tensor/raw_random.py

上级 930ef0c4
"""Define random number Type (`RandomStateType`) and Op (`RandomFunction`).""" """Define random number Type (`RandomStateType`) and Op (`RandomFunction`)."""
from __future__ import print_function from __future__ import print_function
__docformat__ = "restructuredtext en"
import sys import sys
from copy import copy from copy import copy
...@@ -15,6 +15,8 @@ from theano import gof ...@@ -15,6 +15,8 @@ from theano import gof
from six import string_types from six import string_types
from theano.compile import optdb from theano.compile import optdb
__docformat__ = "restructuredtext en"
class RandomStateType(gof.Type): class RandomStateType(gof.Type):
"""A Type wrapper for numpy.random.RandomState """A Type wrapper for numpy.random.RandomState
...@@ -135,9 +137,8 @@ class RandomFunction(gof.Op): ...@@ -135,9 +137,8 @@ class RandomFunction(gof.Op):
and self.ndim_added == other.ndim_added and self.ndim_added == other.ndim_added
def __hash__(self): def __hash__(self):
return hash(type(self)) ^ hash(self.fn) \ return (hash(type(self)) ^ hash(self.fn) ^ hash(self.outtype) ^
^ hash(self.outtype) \ hash(self.inplace) ^ hash(self.ndim_added))
^ hash(self.inplace) ^ hash(self.ndim_added)
def __getstate__(self): def __getstate__(self):
return self.state return self.state
...@@ -233,7 +234,6 @@ class RandomFunction(gof.Op): ...@@ -233,7 +234,6 @@ class RandomFunction(gof.Op):
# copy of r if self.inplace is False # copy of r if self.inplace is False
r, shape, args = inputs[0], inputs[1], inputs[2:] r, shape, args = inputs[0], inputs[1], inputs[2:]
assert type(r) == numpy.random.RandomState, (type(r), r) assert type(r) == numpy.random.RandomState, (type(r), r)
r_orig = r
# If shape == [], that means no shape is enforced, and numpy is # If shape == [], that means no shape is enforced, and numpy is
# trusted to draw the appropriate number of samples, numpy uses # trusted to draw the appropriate number of samples, numpy uses
...@@ -253,8 +253,8 @@ class RandomFunction(gof.Op): ...@@ -253,8 +253,8 @@ class RandomFunction(gof.Op):
r = copy(r) r = copy(r)
rout[0] = r rout[0] = r
rval = self.fn(r, *(args + [shape])) rval = self.fn(r, *(args + [shape]))
if not isinstance(rval, numpy.ndarray) \ if (not isinstance(rval, numpy.ndarray) or
or str(rval.dtype) != node.outputs[1].type.dtype: str(rval.dtype) != node.outputs[1].type.dtype):
rval = theano._asarray(rval, dtype=node.outputs[1].type.dtype) rval = theano._asarray(rval, dtype=node.outputs[1].type.dtype)
# When shape is None, numpy has a tendency to unexpectedly # When shape is None, numpy has a tendency to unexpectedly
...@@ -353,7 +353,8 @@ def _infer_ndim_bcast(ndim, shape, *args): ...@@ -353,7 +353,8 @@ def _infer_ndim_bcast(ndim, shape, *args):
break break
else: else:
if n_a_i == 0: if n_a_i == 0:
raise ValueError(('Auto-shape of -1 must overlap' raise ValueError((
'Auto-shape of -1 must overlap'
'with the shape of one of the broadcastable' 'with the shape of one of the broadcastable'
'inputs')) 'inputs'))
else: else:
...@@ -517,7 +518,8 @@ def binomial(random_state, size=None, n=1, p=0.5, ndim=None, ...@@ -517,7 +518,8 @@ def binomial(random_state, size=None, n=1, p=0.5, ndim=None,
# p=numpy.asarray([.1, .2, .3], dtype='float64')) # p=numpy.asarray([.1, .2, .3], dtype='float64'))
n = tensor.cast(n, 'int32') n = tensor.cast(n, 'int32')
op = RandomFunction('binomial', op = RandomFunction('binomial',
tensor.TensorType(dtype=dtype, broadcastable=(False,) * ndim)) tensor.TensorType(dtype=dtype,
broadcastable=(False,) * ndim))
return op(random_state, size, n, p) return op(random_state, size, n, p)
...@@ -719,7 +721,8 @@ def permutation(random_state, size=None, n=1, ndim=None, dtype='int64'): ...@@ -719,7 +721,8 @@ def permutation(random_state, size=None, n=1, ndim=None, dtype='int64'):
ndim, size, bcast = _infer_ndim_bcast(ndim, size) ndim, size, bcast = _infer_ndim_bcast(ndim, size)
# print "NDIM", ndim, size # print "NDIM", ndim, size
op = RandomFunction(permutation_helper, op = RandomFunction(permutation_helper,
tensor.TensorType(dtype=dtype, broadcastable=bcast + (False,)), tensor.TensorType(dtype=dtype,
broadcastable=bcast + (False,)),
ndim_added=1) ndim_added=1)
return op(random_state, size, n) return op(random_state, size, n)
...@@ -738,14 +741,11 @@ def multinomial_helper(random_state, n, pvals, size): ...@@ -738,14 +741,11 @@ def multinomial_helper(random_state, n, pvals, size):
ndim = len(size) ndim = len(size)
else: else:
ndim = max(n.ndim, pvals.ndim - 1) ndim = max(n.ndim, pvals.ndim - 1)
out_ndim = ndim + 1
# broadcast n to ndim dimensions and pvals to ndim+1 # broadcast n to ndim dimensions and pvals to ndim+1
if n.ndim > ndim: if n.ndim > ndim:
raise ValueError( raise ValueError('n.ndim (%i) should not be larger than len(size) (%i)'
'n.ndim (%i) should not be larger than len(size) (%i)' % (n.ndim, ndim), n, size)
% (n.ndim, ndim),
n, size)
if n.ndim < ndim: if n.ndim < ndim:
n = n.reshape((1,) * (ndim - n.ndim) + n.shape) n = n.reshape((1,) * (ndim - n.ndim) + n.shape)
...@@ -788,7 +788,7 @@ def multinomial_helper(random_state, n, pvals, size): ...@@ -788,7 +788,7 @@ def multinomial_helper(random_state, n, pvals, size):
# because mtrand.pyx has a ValueError that will trigger if # because mtrand.pyx has a ValueError that will trigger if
# sum(pvals[:-1]) > 1.0 # sum(pvals[:-1]) > 1.0
pvi = pvi * (1.0 - 5e-5) pvi = pvi * (1.0 - 5e-5)
#pvi = pvi * .9 # pvi = pvi * .9
pisum = numpy.sum(pvi) pisum = numpy.sum(pvi)
elif pvi[-1] < 5e-5: # will this even work? elif pvi[-1] < 5e-5: # will this even work?
pvi = pvi * (1.0 - 5e-5) pvi = pvi * (1.0 - 5e-5)
...@@ -859,7 +859,8 @@ def multinomial(random_state, size=None, n=1, pvals=[0.5, 0.5], ...@@ -859,7 +859,8 @@ def multinomial(random_state, size=None, n=1, pvals=[0.5, 0.5],
ndim, size, bcast = _infer_ndim_bcast(ndim, size, n, tmp) ndim, size, bcast = _infer_ndim_bcast(ndim, size, n, tmp)
bcast = bcast + (pvals.type.broadcastable[-1],) bcast = bcast + (pvals.type.broadcastable[-1],)
op = RandomFunction(multinomial_helper, op = RandomFunction(multinomial_helper,
tensor.TensorType(dtype=dtype, broadcastable=bcast), tensor.TensorType(dtype=dtype,
broadcastable=bcast),
ndim_added=1) ndim_added=1)
return op(random_state, size, n, pvals) return op(random_state, size, n, pvals)
......
...@@ -67,7 +67,6 @@ whitelist_flake8 = [ ...@@ -67,7 +67,6 @@ whitelist_flake8 = [
"tensor/nlinalg.py", "tensor/nlinalg.py",
"tensor/blas_c.py", "tensor/blas_c.py",
"tensor/elemwise_cgen.py", "tensor/elemwise_cgen.py",
"tensor/raw_random.py",
"tensor/blas_scipy.py", "tensor/blas_scipy.py",
"tensor/tests/test_subtensor.py", "tensor/tests/test_subtensor.py",
"tensor/tests/test_utils.py", "tensor/tests/test_utils.py",
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论