@ -40,10 +40,7 @@ def parse_args():
parser . add_argument (
parser . add_argument (
' --batch_size ' , type = int , default = 32 , help = ' The minibatch size. ' )
' --batch_size ' , type = int , default = 32 , help = ' The minibatch size. ' )
parser . add_argument (
parser . add_argument (
' --learning_rate ' ,
' --learning_rate ' , type = float , default = 0.001 , help = ' The learning rate. ' )
type = float ,
default = 0.001 ,
help = ' The minibatch size. ' )
# TODO(wuyi): add "--use_fake_data" option back.
# TODO(wuyi): add "--use_fake_data" option back.
parser . add_argument (
parser . add_argument (
' --skip_batch_num ' ,
' --skip_batch_num ' ,
@ -72,6 +69,11 @@ def parse_args():
type = int ,
type = int ,
default = 1 ,
default = 1 ,
help = ' If gpus > 1, will use ParallelExecutor to run, else use Executor. ' )
help = ' If gpus > 1, will use ParallelExecutor to run, else use Executor. ' )
parser . add_argument (
' --cpus ' ,
type = int ,
default = 1 ,
help = ' If cpus > 1, will use ParallelDo to run, else use Executor. ' )
parser . add_argument (
parser . add_argument (
' --data_set ' ,
' --data_set ' ,
type = str ,
type = str ,
@ -88,8 +90,8 @@ def parse_args():
help = ' If set, use nvprof for CUDA. ' )
help = ' If set, use nvprof for CUDA. ' )
parser . add_argument (
parser . add_argument (
' --no_test ' ,
' --no_test ' ,
action = ' store_ fals e' ,
action = ' store_ tru e' ,
help = ' If set, test the testset during training.' )
help = ' If set, do not test the testset during training.' )
parser . add_argument (
parser . add_argument (
' --memory_optimize ' ,
' --memory_optimize ' ,
action = ' store_true ' ,
action = ' store_true ' ,
@ -231,13 +233,10 @@ def train(avg_loss, infer_prog, optimizer, train_reader, test_reader, batch_acc,
train_losses . append ( loss )
train_losses . append ( loss )
print ( " Pass: %d , Iter: %d , Loss: %f \n " %
print ( " Pass: %d , Iter: %d , Loss: %f \n " %
( pass_id , iters , np . mean ( train_losses ) ) )
( pass_id , iters , np . mean ( train_losses ) ) )
train_elapsed = time . time ( ) - start_time
print_train_time ( start_time , time . time ( ) , num_samples )
examples_per_sec = num_samples / train_elapsed
print ( " Pass: %d , Loss: %f " % ( pass_id , np . mean ( train_losses ) ) ) ,
print ( ' \n Total examples: %d , total time: %.5f , %.5f examples/sec \n ' %
( num_samples , train_elapsed , examples_per_sec ) )
print ( " Pass: %d , Loss: %f " % ( pass_id , np . mean ( train_losses ) ) )
# evaluation
# evaluation
if not args . no_test and batch_acc != None :
if not args . no_test and batch_acc :
pass_test_acc = test ( exe , infer_prog , test_reader , feeder ,
pass_test_acc = test ( exe , infer_prog , test_reader , feeder ,
batch_acc )
batch_acc )
print ( " , Test Accuracy: %f " % pass_test_acc )
print ( " , Test Accuracy: %f " % pass_test_acc )
@ -315,11 +314,8 @@ def train_parallel(avg_loss, infer_prog, optimizer, train_reader, test_reader,
if batch_id % 1 == 0 :
if batch_id % 1 == 0 :
print ( " Pass %d , batch %d , loss %s " %
print ( " Pass %d , batch %d , loss %s " %
( pass_id , batch_id , np . array ( loss ) ) )
( pass_id , batch_id , np . array ( loss ) ) )
train_elapsed = time . time ( ) - start_time
print_train_time ( start_time , time . time ( ) , num_samples )
examples_per_sec = num_samples / train_elapsed
if not args . no_test and batch_acc :
print ( ' \n Total examples: %d , total time: %.5f , %.5f examples/sed \n ' %
( num_samples , train_elapsed , examples_per_sec ) )
if not args . no_test and batch_acc != None :
test_acc = test ( startup_exe , infer_prog , test_reader , feeder ,
test_acc = test ( startup_exe , infer_prog , test_reader , feeder ,
batch_acc )
batch_acc )
print ( " Pass: %d , Test Accuracy: %f \n " % ( pass_id , test_acc ) )
print ( " Pass: %d , Test Accuracy: %f \n " % ( pass_id , test_acc ) )
@ -329,12 +325,19 @@ def train_parallel(avg_loss, infer_prog, optimizer, train_reader, test_reader,
def print_arguments ( args ) :
def print_arguments ( args ) :
vars ( args ) [ ' use_nvprof ' ] = ( vars ( args ) [ ' use_nvprof ' ] and
vars ( args ) [ ' use_nvprof ' ] = ( vars ( args ) [ ' use_nvprof ' ] and
vars ( args ) [ ' device ' ] == ' GPU ' )
vars ( args ) [ ' device ' ] == ' GPU ' )
print ( ' ----------- resnet Configuration Arguments -----------' )
print ( ' ----------- Configuration Arguments -----------' )
for arg , value in sorted ( vars ( args ) . iteritems ( ) ) :
for arg , value in sorted ( vars ( args ) . iteritems ( ) ) :
print ( ' %s : %s ' % ( arg , value ) )
print ( ' %s : %s ' % ( arg , value ) )
print ( ' ------------------------------------------------ ' )
print ( ' ------------------------------------------------ ' )
def print_train_time ( start_time , end_time , num_samples ) :
train_elapsed = end_time - start_time
examples_per_sec = num_samples / train_elapsed
print ( ' \n Total examples: %d , total time: %.5f , %.5f examples/sed \n ' %
( num_samples , train_elapsed , examples_per_sec ) )
def main ( ) :
def main ( ) :
args = parse_args ( )
args = parse_args ( )
print_arguments ( args )
print_arguments ( args )
@ -342,7 +345,7 @@ def main():
# the unique trainer id, starting from 0, needed by trainer
# the unique trainer id, starting from 0, needed by trainer
# only
# only
nccl_id_var , num_trainers , trainer_id = (
nccl_id_var , num_trainers , trainer_id = (
None , 1 , int ( os . getenv ( " PADDLE_TRAINER_ID " , " -1 " ) ) )
None , 1 , int ( os . getenv ( " PADDLE_TRAINER_ID " , " 0 " ) ) )
if args . use_cprof :
if args . use_cprof :
pr = cProfile . Profile ( )
pr = cProfile . Profile ( )