提交 55bde57e authored 作者: Razvan Pascanu's avatar Razvan Pascanu 提交者: David Warde-Farley

made code pep8 compatible

上级 1df082e5
......@@ -3,7 +3,7 @@
"""
__docformat__ = 'restructedtext en'
__authors__ = ( "Razvan Pascanu " )
__authors__ = ("Razvan Pascanu ")
__copyright__ = "(c) 2010, Universite de Montreal"
__contact__ = "Razvan Pascanu <r.pascanu@gmail>"
......@@ -25,7 +25,7 @@ class test_ifelse(unittest.TestCase):
x = tensor.vector('x')
y = tensor.vector('y')
c = tensor.iscalar('c')
f = theano.function([c,x,y], ifelse(c,x,y))
f = theano.function([c, x, y], ifelse(c, x, y))
rng = numpy.random.RandomState(utt.fetch_seed())
xlen = rng.randint(200)
......@@ -34,18 +34,18 @@ class test_ifelse(unittest.TestCase):
vx = numpy.asarray(rng.uniform(size=(xlen,)), theano.config.floatX)
vy = numpy.asarray(rng.uniform(size=(ylen,)), theano.config.floatX)
assert numpy.allclose(vx, f(1,vx,vy))
assert numpy.allclose(vy, f(0,vx,vy))
assert numpy.allclose(vx, f(1, vx, vy))
assert numpy.allclose(vy, f(0, vx, vy))
def test_grad_lazy_if(self):
# Tests that we can compute the gradients through lazy if
x = tensor.vector('x')
y = tensor.vector('y')
c = tensor.iscalar('c')
z = ifelse(c,x,y)
gx,gy = tensor.grad(z.sum(), [x,y])
z = ifelse(c, x, y)
gx, gy = tensor.grad(z.sum(), [x, y])
f = theano.function([c,x,y], [gx,gy])
f = theano.function([c, x, y], [gx, gy])
rng = numpy.random.RandomState(utt.fetch_seed())
xlen = rng.randint(200)
......@@ -53,38 +53,35 @@ class test_ifelse(unittest.TestCase):
vx = numpy.asarray(rng.uniform(size=(xlen,)), theano.config.floatX)
vy = numpy.asarray(rng.uniform(size=(ylen,)), theano.config.floatX)
gx0,gy0 = f(1, vx,vy)
assert numpy.allclose( gx0.shape, vx.shape)
assert numpy.allclose( gy0.shape, vy.shape)
assert numpy.all( gx0 == 1.)
assert numpy.all( gy0 == 0.)
gx0,gy0 = f(0, vx,vy)
assert numpy.allclose( gx0.shape, vx.shape)
assert numpy.allclose( gy0.shape, vy.shape)
assert numpy.all( gx0 == 0.)
assert numpy.all( gy0 == 1.)
gx0, gy0 = f(1, vx, vy)
assert numpy.allclose(gx0.shape, vx.shape)
assert numpy.allclose(gy0.shape, vy.shape)
assert numpy.all(gx0 == 1.)
assert numpy.all(gy0 == 0.)
gx0, gy0 = f(0, vx, vy)
assert numpy.allclose(gx0.shape, vx.shape)
assert numpy.allclose(gy0.shape, vy.shape)
assert numpy.all(gx0 == 0.)
assert numpy.all(gy0 == 1.)
def test_merge(self):
x = tensor.vector('x')
y = tensor.vector('y')
c = tensor.iscalar('c')
z1 = ifelse(c, x+1, y+1)
z2 = ifelse(c, x+2, y+2)
z = z1+z2
f = theano.function([c,x,y], z)
x = tensor.vector('x')
y = tensor.vector('y')
c = tensor.iscalar('c')
z1 = ifelse(c, x + 1, y + 1)
z2 = ifelse(c, x + 2, y + 2)
z = z1 + z2
f = theano.function([c, x, y], z)
assert len([x for x in f.maker.env.toposort()
if isinstance(x.op, IfElse)]) == 1
def test_remove_useless_inputs1(self):
x = tensor.vector('x')
y = tensor.vector('y')
c = tensor.iscalar('c')
z = ifelse(c, (x,x), (y,y))
f = theano.function([c,x,y],z)
z = ifelse(c, (x, x), (y, y))
f = theano.function([c, x, y], z)
ifnode = [x for x in f.maker.env.toposort()
if isinstance(x.op, IfElse)][0]
......@@ -96,14 +93,13 @@ class test_ifelse(unittest.TestCase):
y1 = tensor.vector('y1')
y2 = tensor.vector('y2')
c = tensor.iscalar('c')
z = ifelse(c, (x1,x1,x1,x2,x2), (y1,y1,y2,y2,y2))
f = theano.function([c,x1,x2,y1,y2],z)
z = ifelse(c, (x1, x1, x1, x2, x2), (y1, y1, y2, y2, y2))
f = theano.function([c, x1, x2, y1, y2], z)
ifnode = [x for x in f.maker.env.toposort()
if isinstance(x.op, IfElse)][0]
assert len(ifnode.outputs) == 3
def test_pushout1(self):
x1 = tensor.scalar('x1')
x2 = tensor.scalar('x2')
......@@ -111,13 +107,13 @@ class test_ifelse(unittest.TestCase):
y2 = tensor.scalar('y2')
w1 = tensor.scalar('w1')
w2 = tensor.scalar('w2')
c = tensor.iscalar('c')
x,y = ifelse(c, (x1,y1), (x2,y2), name='f1')
z = ifelse(c, w1,w2, name='f2')
out = x*z*y
c = tensor.iscalar('c')
x, y = ifelse(c, (x1, y1), (x2, y2), name='f1')
z = ifelse(c, w1, w2, name='f2')
out = x * z * y
f = theano.function([x1,x2,y1,y2,w1,w2,c], out,
allow_input_downcast = True)
f = theano.function([x1, x2, y1, y2, w1, w2, c], out,
allow_input_downcast=True)
assert isinstance(f.maker.env.toposort()[-1].op, IfElse)
rng = numpy.random.RandomState(utt.fetch_seed())
vx1 = rng.uniform()
......@@ -127,28 +123,33 @@ class test_ifelse(unittest.TestCase):
vw1 = rng.uniform()
vw2 = rng.uniform()
assert numpy.allclose(f(vx1,vx2,vy1,vy2,vw1,vw2,1), vx1*vy1*vw1)
assert numpy.allclose(f(vx1,vx2,vy1,vy2,vw1,vw2,0), vx2*vy2*vw2)
assert numpy.allclose(f(vx1, vx2, vy1, vy2, vw1, vw2, 1),
vx1 * vy1 * vw1)
assert numpy.allclose(f(vx1, vx2, vy1, vy2, vw1, vw2, 0),
vx2 * vy2 * vw2)
def test_pushout3(self):
x1 = tensor.scalar('x1')
y1 = tensor.scalar('x2')
y2 = tensor.scalar('y2')
c = tensor.iscalar('c')
x,y = ifelse(c, (x1,y1), (numpy.asarray(2, dtype = theano.config.floatX),y2), name='f1')
z = ifelse(c, numpy.asarray(0.3, dtype=theano.config.floatX),numpy.asarray(0.2,dtype=theano.config.floatX), name='f2')
out = x*z*y
f = theano.function([x1,y1,y2,c], out,
allow_input_downcast = True)
c = tensor.iscalar('c')
two = numpy.asarray(2, dtype=theano.config.floatX)
x, y = ifelse(c, (x1, y1), (two, y2), name='f1')
o3 = numpy.asarray(0.3, dtype=theano.config.floatX)
o2 = numpy.asarray(0.2, dtype=theano.config.floatX)
z = ifelse(c, o3, o2, name='f2')
out = x * z * y
f = theano.function([x1, y1, y2, c], out,
allow_input_downcast=True)
assert isinstance(f.maker.env.toposort()[-1].op, IfElse)
rng = numpy.random.RandomState(utt.fetch_seed())
vx1 = rng.uniform()
vy1 = rng.uniform()
vy2 = rng.uniform()
assert numpy.allclose(f(vx1,vy1,vy2,1), vx1*vy1*0.3)
assert numpy.allclose(f(vx1,vy1,vy2,0), 2*vy2*0.2)
assert numpy.allclose(f(vx1, vy1, vy2, 1), vx1 * vy1 * 0.3)
assert numpy.allclose(f(vx1, vy1, vy2, 0), 2 * vy2 * 0.2)
def test_pushout2(self):
x1 = tensor.scalar('x1')
......@@ -157,13 +158,13 @@ class test_ifelse(unittest.TestCase):
y2 = tensor.scalar('y2')
w1 = tensor.scalar('w1')
w2 = tensor.scalar('w2')
c = tensor.iscalar('c')
x,y = ifelse(c, (x1,y1), (x2,y2), name='f1')
z = ifelse(x>y, w1,w2, name='f2')
out = x*z*y
c = tensor.iscalar('c')
x, y = ifelse(c, (x1, y1), (x2, y2), name='f1')
z = ifelse(x > y, w1, w2, name='f2')
out = x * z * y
f = theano.function([x1,x2,y1,y2,w1,w2,c], out,
allow_input_downcast = True)
f = theano.function([x1, x2, y1, y2, w1, w2, c], out,
allow_input_downcast=True)
assert isinstance(f.maker.env.toposort()[-1].op, IfElse)
rng = numpy.random.RandomState(utt.fetch_seed())
vx1 = rng.uniform()
......@@ -176,13 +177,15 @@ class test_ifelse(unittest.TestCase):
vw = vw1
else:
vw = vw2
assert numpy.allclose(f(vx1,vx2,vy1,vy2,vw1,vw2,1), vx1*vy1*vw)
assert numpy.allclose(f(vx1, vx2, vy1, vy2, vw1, vw2, 1),
vx1 * vy1 * vw)
if vx2 > vy2:
vw = vw1
else:
vw = vw2
assert numpy.allclose(f(vx1,vx2,vy1,vy2,vw1,vw2,0), vx2*vy2*vw)
assert numpy.allclose(f(vx1, vx2, vy1, vy2, vw1, vw2, 0),
vx2 * vy2 * vw)
def test_merge_ifs_true_false(self):
x1 = tensor.scalar('x1')
......@@ -191,15 +194,15 @@ class test_ifelse(unittest.TestCase):
y2 = tensor.scalar('y2')
w1 = tensor.scalar('w1')
w2 = tensor.scalar('w2')
c = tensor.iscalar('c')
c = tensor.iscalar('c')
out = ifelse(c,
ifelse(c, x1,x2) + ifelse(c,y1,y2) + w1,
ifelse(c, x1,x2) + ifelse(c,y1,y2) + w2)
f = theano.function([x1,x2,y1,y2,w1,w2,c], out,
allow_input_downcast = True)
ifelse(c, x1, x2) + ifelse(c, y1, y2) + w1,
ifelse(c, x1, x2) + ifelse(c, y1, y2) + w2)
f = theano.function([x1, x2, y1, y2, w1, w2, c], out,
allow_input_downcast=True)
assert len([x for x in f.maker.env.toposort()
if isinstance(x.op, IfElse)])==1
if isinstance(x.op, IfElse)]) == 1
rng = numpy.random.RandomState(utt.fetch_seed())
vx1 = rng.uniform()
......@@ -208,13 +211,11 @@ class test_ifelse(unittest.TestCase):
vy2 = rng.uniform()
vw1 = rng.uniform()
vw2 = rng.uniform()
assert numpy.allclose(f(vx1,vx2,vy1,vy2,vw1,vw2,1), vx1+vy1+vw1)
assert numpy.allclose(f(vx1,vx2,vy1,vy2,vw1,vw2,0), vx2+vy2+vw2)
assert numpy.allclose(f(vx1, vx2, vy1, vy2, vw1, vw2, 1),
vx1 + vy1 + vw1)
assert numpy.allclose(f(vx1, vx2, vy1, vy2, vw1, vw2, 0),
vx2 + vy2 + vw2)
if __name__ == '__main__':
print ' Use nosetests to run these tests '
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论