diff --git a/fluid/image_classification/.run_ce.sh b/fluid/image_classification/.run_ce.sh index 11e463b29624012386d3a7dac589b466b8d94edb..9ba9a4c2c6779694f0e87e12ca85b59afa33f1c0 100755 --- a/fluid/image_classification/.run_ce.sh +++ b/fluid/image_classification/.run_ce.sh @@ -2,10 +2,11 @@ # This file is only used for continuous evaluation. export FLAGS_cudnn_deterministic=True +BATCH_SIZE=56 cudaid=${object_detection_cudaid:=0} export CUDA_VISIBLE_DEVICES=$cudaid -python train.py --batch_size=64 --num_epochs=5 --enable_ce=True --lr_strategy=cosine_decay | python _ce.py +python train.py --batch_size=${BATCH_SIZE} --num_epochs=5 --enable_ce=True --lr_strategy=cosine_decay | python _ce.py cudaid=${object_detection_cudaid_m:=0, 1, 2, 3} export CUDA_VISIBLE_DEVICES=$cudaid -python train.py --batch_size=64 --num_epochs=5 --enable_ce=True --lr_strategy=cosine_decay | python _ce.py +python train.py --batch_size=${BATCH_SIZE} --num_epochs=5 --enable_ce=True --lr_strategy=cosine_decay | python _ce.py diff --git a/fluid/object_detection/reader.py b/fluid/object_detection/reader.py index 163dafe3b862f84acc82822dca1eace8b0ca8cf0..59da1b38fb2e9cce8bb99a2773e7fc222ee33bd8 100644 --- a/fluid/object_detection/reader.py +++ b/fluid/object_detection/reader.py @@ -292,24 +292,24 @@ def train(settings, shuffle=True, use_multiprocessing=True, num_workers=8, - max_queue=24): + max_queue=24, + enable_ce=False): file_list = os.path.join(settings.data_dir, file_list) - def infinite_reader(gen): - while True: - for data in gen(): - yield data - if 'coco' in settings.dataset: generator = coco(settings, file_list, "train", batch_size, shuffle) else: generator = pascalvoc(settings, file_list, "train", batch_size, shuffle) + def infinite_reader(): + while True: + for data in generator(): + yield data + def reader(): try: enqueuer = GeneratorEnqueuer( - infinite_reader(generator), - use_multiprocessing=use_multiprocessing) + infinite_reader(), use_multiprocessing=use_multiprocessing) enqueuer.start(max_queue_size=max_queue, workers=num_workers) generator_output = None while True: @@ -325,7 +325,10 @@ def train(settings, if enqueuer is not None: enqueuer.stop() - return reader + if enable_ce: + return infinite_reader + else: + return reader def test(settings, file_list, batch_size): diff --git a/fluid/object_detection/train.py b/fluid/object_detection/train.py index d653d93302182be0dd2a4b4acf5ae342b2e1437c..806887edca06df3102bcaa09f4b83d9d7e6524ea 100644 --- a/fluid/object_detection/train.py +++ b/fluid/object_detection/train.py @@ -32,7 +32,7 @@ add_arg('enable_ce', bool, False, "Whether use CE to evaluate the model") train_parameters = { "pascalvoc": { - "train_images": 19200, + "train_images": 16551, "image_shape": [3, 300, 300], "class_num": 21, "batch_size": 64, @@ -143,7 +143,6 @@ def train(args, startup_prog.random_seed = 111 train_prog.random_seed = 111 test_prog.random_seed = 111 - num_workers = 1 train_py_reader, loss = build_program( main_prog=train_prog, @@ -170,14 +169,14 @@ def train(args, if parallel: train_exe = fluid.ParallelExecutor(main_program=train_prog, use_cuda=use_gpu, loss_name=loss.name) - train_reader = reader.train(data_args, train_file_list, batch_size_per_device, shuffle=is_shuffle, use_multiprocessing=True, num_workers=num_workers, - max_queue=24) + max_queue=24, + enable_ce=enable_ce) test_reader = reader.test(data_args, val_file_list, batch_size) train_py_reader.decorate_paddle_reader(train_reader) test_py_reader.decorate_paddle_reader(test_reader)