提交 18d6b9de authored 作者: Frederic's avatar Frederic

pep8

上级 9b42226e
...@@ -139,8 +139,8 @@ The full documentation can be found in the library: :ref:`Scan <lib_scan>`. ...@@ -139,8 +139,8 @@ The full documentation can be found in the library: :ref:`Scan <lib_scan>`.
# define tensor variable # define tensor variable
X = T.matrix("X") X = T.matrix("X")
results, updates = theano.scan(lambda i, j, t_f:T.cast(X[i, j]+t_f, floatX), \ results, updates = theano.scan(lambda i, j, t_f:T.cast(X[i, j]+t_f, floatX),
sequences=[T.arange(X.shape[0]), T.arange(X.shape[1])], \ sequences=[T.arange(X.shape[0]), T.arange(X.shape[1])],
outputs_info=np.asarray(0., dtype=floatX)) outputs_info=np.asarray(0., dtype=floatX))
result = results[-1] result = results[-1]
compute_trace = theano.function(inputs = [X], outputs=[result]) compute_trace = theano.function(inputs = [X], outputs=[result])
...@@ -168,8 +168,7 @@ The full documentation can be found in the library: :ref:`Scan <lib_scan>`. ...@@ -168,8 +168,7 @@ The full documentation can be found in the library: :ref:`Scan <lib_scan>`.
V = T.matrix("V") V = T.matrix("V")
n_sym = T.iscalar("n_sym") n_sym = T.iscalar("n_sym")
results, updates = theano.scan(lambda x_tm2, x_tm1:T.dot(x_tm2, U) + T.dot(x_tm1, V) \ results, updates = theano.scan(lambda x_tm2, x_tm1:T.dot(x_tm2, U) + T.dot(x_tm1, V) + T.tanh(T.dot(x_tm1, W) + b_sym),
+ T.tanh(T.dot(x_tm1, W) + b_sym), \
n_steps=n_sym, outputs_info=[dict(initial = X, taps = [-2, -1])]) n_steps=n_sym, outputs_info=[dict(initial = X, taps = [-2, -1])])
compute_seq2 = theano.function(inputs = [X, U, V, W, b_sym, n_sym], outputs=[results]) compute_seq2 = theano.function(inputs = [X, U, V, W, b_sym, n_sym], outputs=[results])
...@@ -188,11 +187,10 @@ The full documentation can be found in the library: :ref:`Scan <lib_scan>`. ...@@ -188,11 +187,10 @@ The full documentation can be found in the library: :ref:`Scan <lib_scan>`.
x_res = numpy.zeros((10, 2)) x_res = numpy.zeros((10, 2))
x_res[0] = x[0].dot(u) + x[1].dot(v) + numpy.tanh(x[1].dot(w) + b) x_res[0] = x[0].dot(u) + x[1].dot(v) + numpy.tanh(x[1].dot(w) + b)
x_res[1] = x[1].dot(u) + x_res[0].dot(v) + numpy.tanh(x_res[0].dot(w) + b) x_res[1] = x[1].dot(u) + x_res[0].dot(v) + numpy.tanh(x_res[0].dot(w) + b)
x_res[2] = x_res[0].dot(u) + x_res[1].dot(v) \ x_res[2] = x_res[0].dot(u) + x_res[1].dot(v) + numpy.tanh(x_res[1].dot(w) + b)
+ numpy.tanh(x_res[1].dot(w) + b)
for i in range(2, 10): for i in range(2, 10):
x_res[i] = (x_res[i-2].dot(u) + x_res[i-1].dot(v) \ x_res[i] = (x_res[i-2].dot(u) + x_res[i-1].dot(v) +
+ numpy.tanh(x_res[i-1].dot(w) + b)) numpy.tanh(x_res[i-1].dot(w) + b))
**Scan Example: Computing the Jacobian of y = tanh(v.dot(A)) wrt x** **Scan Example: Computing the Jacobian of y = tanh(v.dot(A)) wrt x**
...@@ -254,7 +252,7 @@ Note that we need to iterate over the indices of ``y`` and not over the elements ...@@ -254,7 +252,7 @@ Note that we need to iterate over the indices of ``y`` and not over the elements
d=trng.binomial(size=W[1].shape) d=trng.binomial(size=W[1].shape)
results, updates = theano.scan(lambda v:T.tanh(T.dot(v, W)+b_sym)*d, sequences=X) results, updates = theano.scan(lambda v:T.tanh(T.dot(v, W)+b_sym)*d, sequences=X)
compute_with_bnoise = theano.function(inputs = [X, W, b_sym], outputs=[results], \ compute_with_bnoise = theano.function(inputs = [X, W, b_sym], outputs=[results],
updates=updates, allow_input_downcast = True) updates=updates, allow_input_downcast = True)
x = np.eye(10, 2) x = np.eye(10, 2)
w = np.ones((2, 2)) w = np.ones((2, 2))
......
...@@ -1150,10 +1150,10 @@ class T_scan(unittest.TestCase): ...@@ -1150,10 +1150,10 @@ class T_scan(unittest.TestCase):
W = T.matrix("W") W = T.matrix("W")
b_sym = T.vector("b_sym") b_sym = T.vector("b_sym")
results, updates = theano.scan(lambda v:T.tanh(T.dot(v,W)+b_sym), \ results, updates = theano.scan(lambda v:T.tanh(T.dot(v,W)+b_sym),
sequences=X) sequences=X)
compute_elementwise = theano.function(inputs = [X, W, b_sym], \ compute_elementwise = theano.function(inputs = [X, W, b_sym],
outputs=[results]) outputs=[results])
# test values # test values
x = numpy.eye(2) x = numpy.eye(2)
...@@ -1176,12 +1176,11 @@ class T_scan(unittest.TestCase): ...@@ -1176,12 +1176,11 @@ class T_scan(unittest.TestCase):
V = T.matrix("V") V = T.matrix("V")
P = T.matrix("P") P = T.matrix("P")
results, updates = theano.scan(lambda \ results, updates = theano.scan(lambda y,p,x_tm1:T.tanh(T.dot(x_tm1,W) +
y,p,x_tm1:T.tanh(T.dot(x_tm1,W) + \ T.dot(y,U)+T.dot(p,V)),
T.dot(y,U)+T.dot(p,V)), \
sequences=[Y,P[::-1]], outputs_info=[X]) sequences=[Y,P[::-1]], outputs_info=[X])
compute_seq = theano.function(inputs = [X, W, Y, U, P, V], \ compute_seq = theano.function(inputs = [X, W, Y, U, P, V],
outputs=[results]) outputs=[results])
# test values # test values
...@@ -1201,19 +1200,19 @@ class T_scan(unittest.TestCase): ...@@ -1201,19 +1200,19 @@ class T_scan(unittest.TestCase):
x_res = numpy.zeros((5,2)) x_res = numpy.zeros((5,2))
x_res[0] = numpy.tanh(x.dot(w) + y[0].dot(u) + p[4].dot(v)) x_res[0] = numpy.tanh(x.dot(w) + y[0].dot(u) + p[4].dot(v))
for i in range(1,5): for i in range(1,5):
x_res[i] = numpy.tanh(x_res[i-1].dot(w) \ x_res[i] = numpy.tanh(x_res[i-1].dot(w) +
+ y[i].dot(u) + p[4-i].dot(v)) y[i].dot(u) + p[4-i].dot(v))
print "Numpy results:", x_res print "Numpy results:", x_res
def test_norm(self): def test_norm(self):
# define tensor variable # define tensor variable
X = T.matrix("X") X = T.matrix("X")
results, updates = theano.scan(lambda x_i:T.sqrt((x_i**2).sum()), \ results, updates = theano.scan(lambda x_i:T.sqrt((x_i**2).sum()),
sequences=[X]) sequences=[X])
compute_norm_lines = theano.function(inputs = [X], outputs=[results]) compute_norm_lines = theano.function(inputs = [X], outputs=[results])
results, updates = theano.scan(lambda x_i:T.sqrt((x_i**2).sum()), \ results, updates = theano.scan(lambda x_i:T.sqrt((x_i**2).sum()),
sequences=[X.T]) sequences=[X.T])
compute_norm_cols = theano.function(inputs = [X], outputs=[results]) compute_norm_cols = theano.function(inputs = [X], outputs=[results])
...@@ -1229,12 +1228,12 @@ class T_scan(unittest.TestCase): ...@@ -1229,12 +1228,12 @@ class T_scan(unittest.TestCase):
def test_trace(self): def test_trace(self):
# define tensor variable # define tensor variable
X = T.matrix("X") X = T.matrix("X")
results, updates = theano.scan(lambda i, j, t_f:T.cast(X[i,j] + \ results, updates = theano.scan(lambda i, j, t_f:T.cast(X[i,j] +
t_f, theano.config.floatX), \ t_f, theano.config.floatX),
sequences=[T.arange(X.shape[0]), \ sequences=[T.arange(X.shape[0]),
T.arange(X.shape[1])], \ T.arange(X.shape[1])],
outputs_info=numpy.asarray(0., \ outputs_info=numpy.asarray(
dtype=theano.config.floatX)) 0., dtype=theano.config.floatX))
result = results[-1] result = results[-1]
compute_trace = theano.function(inputs = [X], outputs=[result]) compute_trace = theano.function(inputs = [X], outputs=[result])
...@@ -1256,13 +1255,13 @@ class T_scan(unittest.TestCase): ...@@ -1256,13 +1255,13 @@ class T_scan(unittest.TestCase):
V = T.matrix("V") V = T.matrix("V")
n_sym = T.iscalar("n_sym") n_sym = T.iscalar("n_sym")
results, updates = theano.scan(lambda x_tm2,x_tm1:T.dot(x_tm2,U) \ results, updates = theano.scan(
+ T.dot(x_tm1,V) + T.tanh(T.dot(x_tm1,W) + b_sym), \ lambda x_tm2,x_tm1:T.dot(x_tm2,U) + T.dot(x_tm1,V) + T.tanh(T.dot(x_tm1,W) + b_sym),
n_steps=n_sym, \ n_steps=n_sym,
outputs_info=[dict(initial = X, taps = [-2,-1])]) outputs_info=[dict(initial = X, taps = [-2,-1])])
compute_seq2 = theano.function(inputs = [X, U, V, W, b_sym, \ compute_seq2 = theano.function(inputs = [X, U, V, W, b_sym, n_sym],
n_sym], outputs=[results]) outputs=[results])
# test values # test values
x = numpy.zeros((2,2)) x = numpy.zeros((2,2))
...@@ -1284,8 +1283,8 @@ class T_scan(unittest.TestCase): ...@@ -1284,8 +1283,8 @@ class T_scan(unittest.TestCase):
x_res[2] = x_res[0].dot(u) + x_res[1].dot(v) \ x_res[2] = x_res[0].dot(u) + x_res[1].dot(v) \
+ numpy.tanh(x_res[1].dot(w) + b) + numpy.tanh(x_res[1].dot(w) + b)
for i in range(2,10): for i in range(2,10):
x_res[i] = (x_res[i-2].dot(u) + x_res[i-1].dot(v) \ x_res[i] = (x_res[i-2].dot(u) + x_res[i-1].dot(v) +
+ numpy.tanh(x_res[i-1].dot(w) + b)) numpy.tanh(x_res[i-1].dot(w) + b))
print "Numpy results:", x_res print "Numpy results:", x_res
...@@ -1294,9 +1293,9 @@ class T_scan(unittest.TestCase): ...@@ -1294,9 +1293,9 @@ class T_scan(unittest.TestCase):
v = T.vector() v = T.vector()
A = T.matrix() A = T.matrix()
y = T.tanh(T.dot(v,A)) y = T.tanh(T.dot(v,A))
results, updates = theano.scan(lambda i:T.grad(y[i], v), \ results, updates = theano.scan(lambda i:T.grad(y[i], v),
sequences = [T.arange(y.shape[0])]) sequences = [T.arange(y.shape[0])])
compute_jac_t = theano.function([A,v], [results], \ compute_jac_t = theano.function([A,v], [results],
allow_input_downcast = True) # shape (d_out, d_in) allow_input_downcast = True) # shape (d_out, d_in)
# test values # test values
...@@ -1331,12 +1330,12 @@ class T_scan(unittest.TestCase): ...@@ -1331,12 +1330,12 @@ class T_scan(unittest.TestCase):
trng = T.shared_randomstreams.RandomStreams(1234) trng = T.shared_randomstreams.RandomStreams(1234)
d=trng.binomial(size=W[1].shape) d=trng.binomial(size=W[1].shape)
results, updates = theano.scan(lambda v:T.tanh(T.dot(v,W) \ results, updates = theano.scan(lambda v:T.tanh(T.dot(v,W) + b_sym)*d,
+ b_sym)*d, sequences=X) sequences=X)
compute_with_bnoise = theano.function(inputs = [X, W, b_sym], \ compute_with_bnoise = theano.function(inputs = [X, W, b_sym],
outputs=[results], \ outputs=[results],
updates=updates, \ updates=updates,
allow_input_downcast = True) allow_input_downcast = True)
x = numpy.eye(10,2) x = numpy.eye(10,2)
w = numpy.ones((2,2)) w = numpy.ones((2,2))
b = numpy.ones((2)) b = numpy.ones((2))
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论