Skip to content

Commit 341d167

Browse files
committed
Follow comments.
1 parent 7e6a458 commit 341d167

File tree

2 files changed

+20
-18
lines changed

2 files changed

+20
-18
lines changed

fluid/image_classification/se_resnext.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import paddle.v2 as paddle
22
import paddle.fluid as fluid
33

4+
45
def conv_bn_layer(input, num_filters, filter_size, stride=1, groups=1,
56
act=None):
67
conv = fluid.layers.conv2d(

fluid/image_classification/train.py

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,11 @@
1616
# yapf: disable
1717
add_arg('batch_size', int, 256, "Minibatch size.")
1818
add_arg('num_layers', int, 50, "How many layers for SE-ResNeXt model.")
19-
add_arg('parallel_exe', bool, True, "Whether use ParallelExecutor to train.")
19+
add_arg('with_mem_opt', bool, True, "Whether to use memory optimization or not.")
20+
add_arg('parallel_exe', bool, True, "Whether to use ParallelExecutor to train or not.")
2021

21-
def train_paralle_do(learning_rate,
22+
def train_paralle_do(args,
23+
learning_rate,
2224
batch_size,
2325
num_passes,
2426
init_model=None,
@@ -74,13 +76,12 @@ def train_paralle_do(learning_rate,
7476
momentum=0.9,
7577
regularization=fluid.regularizer.L2Decay(1e-4))
7678

77-
opts = optimizer.minimize(avg_cost)
78-
fluid.memory_optimize(fluid.default_main_program())
79+
inference_program = fluid.default_main_program().clone(for_test=True)
7980

80-
inference_program = fluid.default_main_program().clone()
81-
with fluid.program_guard(inference_program):
82-
inference_program = fluid.io.get_inference_program(
83-
[avg_cost, acc_top1, acc_top5])
81+
opts = optimizer.minimize(avg_cost)
82+
if args.with_mem_opt:
83+
fluid.memory_optimize(fluid.default_main_program())
84+
fluid.memory_optimize(inference_program)
8485

8586
place = fluid.CUDAPlace(0)
8687
exe = fluid.Executor(place)
@@ -153,7 +154,8 @@ def train_paralle_do(learning_rate,
153154
os.makedirs(model_path)
154155
fluid.io.save_persistables(exe, model_path)
155156

156-
def train_parallel_exe(learning_rate,
157+
def train_parallel_exe(args,
158+
learning_rate,
157159
batch_size,
158160
num_passes,
159161
init_model=None,
@@ -190,7 +192,10 @@ def train_parallel_exe(learning_rate,
190192
regularization=fluid.regularizer.L2Decay(1e-4))
191193

192194
opts = optimizer.minimize(avg_cost)
193-
fluid.memory_optimize(fluid.default_main_program())
195+
196+
if args.with_mem_opt:
197+
fluid.memory_optimize(fluid.default_main_program())
198+
fluid.memory_optimize(test_program)
194199

195200
place = fluid.CUDAPlace(0)
196201
exe = fluid.Executor(place)
@@ -199,13 +204,8 @@ def train_parallel_exe(learning_rate,
199204
if init_model is not None:
200205
fluid.io.load_persistables(exe, init_model)
201206

202-
import paddle.dataset.flowers as flowers
203-
204-
#train_reader = paddle.batch(reader.train(), batch_size=batch_size)
205-
#test_reader = paddle.batch(reader.test(), batch_size=batch_size)
206-
207-
train_reader = paddle.batch(flowers.train(), batch_size=batch_size)
208-
test_reader = paddle.batch(flowers.test(), batch_size=batch_size)
207+
train_reader = paddle.batch(reader.train(), batch_size=batch_size)
208+
test_reader = paddle.batch(reader.test(), batch_size=batch_size)
209209
feeder = fluid.DataFeeder(place=place, feed_list=[image, label])
210210

211211
train_exe = fluid.ParallelExecutor(use_cuda=True, loss_name=avg_cost.name)
@@ -300,7 +300,8 @@ def train_parallel_exe(learning_rate,
300300
# layers: 50, 152
301301
layers = args.num_layers
302302
method = train_parallel_exe if args.parallel_exe else train_parallel_do
303-
method(learning_rate=0.1,
303+
method(args,
304+
learning_rate=0.1,
304305
batch_size=batch_size,
305306
num_passes=120,
306307
init_model=None,

0 commit comments

Comments
 (0)