21
21
22
22
class TestOptimizer (unittest .TestCase ):
23
23
def test_sgd_optimizer (self ):
24
- init_program = framework .Program ()
25
- program = framework .Program ()
26
- block = program .global_block ()
27
- mul_x = block .create_parameter (
28
- dtype = "float32" , shape = [5 , 10 ], lod_level = 0 , name = "mul.x" )
29
- mul_y = block .create_var (
30
- dtype = "float32" , shape = [10 , 8 ], lod_level = 0 , name = "mul.y" )
31
- mul_out = block .create_var (
32
- dtype = "float32" , shape = [5 , 8 ], lod_level = 0 , name = "mul.out" )
33
- mean_out = block .create_var (
34
- dtype = "float32" , shape = [1 ], lod_level = 0 , name = "mean.out" )
35
- block .append_op (
36
- type = "mul" ,
37
- inputs = {"X" : mul_x ,
38
- "Y" : mul_y },
39
- outputs = {"Out" : mul_out },
40
- attrs = {"x_num_col_dims" : 1 })
41
- block .append_op (
42
- type = "mean" , inputs = {"X" : mul_out }, outputs = {"Out" : mean_out })
43
- sgd_optimizer = optimizer .SGDOptimizer (learning_rate = 0.01 )
44
- opts , _ = sgd_optimizer .minimize (mean_out , init_program )
24
+ def check_sgd_optimizer (optimizer_attr ):
25
+ init_program = framework .Program ()
26
+ program = framework .Program ()
27
+ block = program .global_block ()
28
+ mul_x = block .create_parameter (
29
+ dtype = "float32" ,
30
+ shape = [5 , 10 ],
31
+ lod_level = 0 ,
32
+ name = "mul.x" ,
33
+ optimize_attr = optimizer_attr )
34
+ mul_y = block .create_var (
35
+ dtype = "float32" , shape = [10 , 8 ], lod_level = 0 , name = "mul.y" )
36
+ mul_out = block .create_var (
37
+ dtype = "float32" , shape = [5 , 8 ], lod_level = 0 , name = "mul.out" )
38
+ mean_out = block .create_var (
39
+ dtype = "float32" , shape = [1 ], lod_level = 0 , name = "mean.out" )
40
+ block .append_op (
41
+ type = "mul" ,
42
+ inputs = {"X" : mul_x ,
43
+ "Y" : mul_y },
44
+ outputs = {"Out" : mul_out },
45
+ attrs = {"x_num_col_dims" : 1 })
46
+ block .append_op (
47
+ type = "mean" , inputs = {"X" : mul_out }, outputs = {"Out" : mean_out })
48
+ sgd_optimizer = optimizer .SGDOptimizer (learning_rate = 0.01 )
49
+ opts , _ = sgd_optimizer .minimize (mean_out , init_program )
50
+ return opts
51
+
52
+ opts = check_sgd_optimizer ({'learning_rate' : 1.1 })
45
53
self .assertEqual (len (opts ), 3 )
46
54
self .assertEqual ([op .type for op in opts ],
47
55
["fill_constant" , "elementwise_mul" , "sgd" ])
48
56
57
+ opts = check_sgd_optimizer ({'learning_rate' : 1.0 })
58
+ self .assertEqual (len (opts ), 1 )
59
+ self .assertEqual ([op .type for op in opts ], ["sgd" ])
60
+
49
61
50
62
class TestMomentumOptimizer (unittest .TestCase ):
51
63
class MockMomentum (optimizer .MomentumOptimizer ):
@@ -60,7 +72,11 @@ def test_vanilla_momentum_optimizer(self):
60
72
program = framework .Program ()
61
73
block = program .global_block ()
62
74
mul_x = block .create_parameter (
63
- dtype = "float32" , shape = [5 , 10 ], lod_level = 0 , name = "mul.x" )
75
+ dtype = "float32" ,
76
+ shape = [5 , 10 ],
77
+ lod_level = 0 ,
78
+ name = "mul.x" ,
79
+ optimize_attr = {'learning_rate' : 1.1 })
64
80
mul_y = block .create_var (
65
81
dtype = "float32" , shape = [10 , 8 ], lod_level = 0 , name = "mul.y" )
66
82
mul_out = block .create_var (
@@ -110,7 +126,11 @@ def test_nesterov_momentum_optimizer(self):
110
126
program = framework .Program ()
111
127
block = program .global_block ()
112
128
mul_x = block .create_parameter (
113
- dtype = "float32" , shape = [5 , 10 ], lod_level = 0 , name = "mul.x" )
129
+ dtype = "float32" ,
130
+ shape = [5 , 10 ],
131
+ lod_level = 0 ,
132
+ name = "mul.x" ,
133
+ optimize_attr = {'learning_rate' : 1.1 })
114
134
mul_y = block .create_var (
115
135
dtype = "float32" , shape = [10 , 8 ], lod_level = 0 , name = "mul.y" )
116
136
mul_out = block .create_var (
@@ -169,7 +189,11 @@ def test_adagrad_optimizer(self):
169
189
program = framework .Program ()
170
190
block = program .global_block ()
171
191
mul_x = block .create_parameter (
172
- dtype = "float32" , shape = [5 , 10 ], lod_level = 0 , name = "mul.x" )
192
+ dtype = "float32" ,
193
+ shape = [5 , 10 ],
194
+ lod_level = 0 ,
195
+ name = "mul.x" ,
196
+ optimize_attr = {'learning_rate' : 1.1 })
173
197
mul_y = block .create_var (
174
198
dtype = "float32" , shape = [10 , 8 ], lod_level = 0 , name = "mul.y" )
175
199
mul_out = block .create_var (
@@ -229,7 +253,11 @@ def test_adam_optimizer(self):
229
253
program = framework .Program ()
230
254
block = program .global_block ()
231
255
mul_x = block .create_parameter (
232
- dtype = "float32" , shape = [5 , 10 ], lod_level = 0 , name = "mul.x" )
256
+ dtype = "float32" ,
257
+ shape = [5 , 10 ],
258
+ lod_level = 0 ,
259
+ name = "mul.x" ,
260
+ optimize_attr = {'learning_rate' : 1.1 })
233
261
mul_y = block .create_var (
234
262
dtype = "float32" , shape = [10 , 8 ], lod_level = 0 , name = "mul.y" )
235
263
mul_out = block .create_var (
@@ -292,7 +320,11 @@ def test_adamax_optimizer(self):
292
320
program = framework .Program ()
293
321
block = program .global_block ()
294
322
mul_x = block .create_parameter (
295
- dtype = "float32" , shape = [5 , 10 ], lod_level = 0 , name = "mul.x" )
323
+ dtype = "float32" ,
324
+ shape = [5 , 10 ],
325
+ lod_level = 0 ,
326
+ name = "mul.x" ,
327
+ optimize_attr = {'learning_rate' : 1.1 })
296
328
mul_y = block .create_var (
297
329
dtype = "float32" , shape = [10 , 8 ], lod_level = 0 , name = "mul.y" )
298
330
mul_out = block .create_var (
@@ -352,7 +384,11 @@ def test_decayed_adagrad_optimizer(self):
352
384
program = framework .Program ()
353
385
block = program .global_block ()
354
386
mul_x = block .create_parameter (
355
- dtype = "float32" , shape = [5 , 10 ], lod_level = 0 , name = "mul.x" )
387
+ dtype = "float32" ,
388
+ shape = [5 , 10 ],
389
+ lod_level = 0 ,
390
+ name = "mul.x" ,
391
+ optimize_attr = {'learning_rate' : 1.1 })
356
392
mul_y = block .create_var (
357
393
dtype = "float32" , shape = [10 , 8 ], lod_level = 0 , name = "mul.y" )
358
394
mul_out = block .create_var (
0 commit comments