1
- # Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved.
1
+ # Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved.
2
2
#
3
3
# Licensed under the Apache License, Version 2.0 (the "License");
4
4
# you may not use this file except in compliance with the License.
@@ -30,8 +30,10 @@ def test_simple_forward(self):
30
30
"d1" , shape = [10 ], append_batch_size = False , dtype = 'float32' )
31
31
d2 = layers .data (
32
32
"d2" , shape = [10 ], append_batch_size = False , dtype = 'float32' )
33
+
33
34
i = layers .zeros (shape = [1 ], dtype = 'int64' )
34
35
i .stop_gradient = True
36
+
35
37
init = layers .zeros (shape = [10 ], dtype = 'float32' )
36
38
mem_array = layers .array_write (x = init , i = i )
37
39
data_array = layers .array_write (x = d0 , i = i )
@@ -45,11 +47,19 @@ def test_simple_forward(self):
45
47
i = layers .zeros (shape = [1 ], dtype = 'int64' )
46
48
i .stop_gradient = True
47
49
48
- array_len = layers .fill_constant (shape = [1 ], dtype = 'int64' , value = 3 )
50
+ array_len = layers .fill_constant (shape = [1 ], dtype = 'int64' , value = 1 )
49
51
array_len .stop_gradient = True
50
52
cond = layers .less_than (x = i , y = array_len )
51
53
54
+ j = layers .fill_constant (shape = [1 ], dtype = 'int64' , value = 1 )
55
+ j .stop_gradient = True
56
+
57
+ array_len2 = layers .fill_constant (shape = [1 ], dtype = 'int64' , value = 3 )
58
+ array_len2 .stop_gradient = True
59
+ cond2 = layers .less_than (x = j , y = array_len2 )
60
+
52
61
while_op = layers .While (cond = cond )
62
+ while_op2 = layers .While (cond = cond2 )
53
63
with while_op .block ():
54
64
d = layers .array_read (array = data_array , i = i )
55
65
prev = layers .array_read (array = mem_array , i = i )
@@ -59,7 +69,16 @@ def test_simple_forward(self):
59
69
layers .array_write (result , i = i , array = mem_array )
60
70
layers .less_than (x = i , y = array_len , cond = cond )
61
71
62
- sum_result = layers .array_read (array = mem_array , i = i )
72
+ with while_op2 .block ():
73
+ d2 = layers .array_read (array = data_array , i = j )
74
+ prev2 = layers .array_read (array = mem_array , i = j )
75
+ result2 = layers .sums (input = [d2 , prev2 ])
76
+
77
+ j = layers .increment (x = j , in_place = True )
78
+ layers .array_write (result2 , i = j , array = mem_array )
79
+ layers .less_than (x = j , y = array_len2 , cond = cond2 )
80
+
81
+ sum_result = layers .array_read (array = mem_array , i = j )
63
82
loss = layers .mean (sum_result )
64
83
65
84
append_backward (loss )
0 commit comments