def read_command_line()

in exp_vd/options.py [0:0]


def read_command_line():
  title = 'Train explicit coreference resolution visual dialog model'
  parser = argparse.ArgumentParser(description=title)
  #-------------------------------------------------------------------------

  # data input settings
  parser.add_argument('--dataset', default='visdial_v0.9_tiny',
                      help='Visdial dataset type')
  parser.add_argument('--data_root', default='data/',
                      help='Root to the data')
  parser.add_argument('--feature_path', default='data/resnet_res5c/',
                      help='Path to the image features')
  parser.add_argument('--text_vocab_path', default='',
                      help='Path to the vocabulary for text')
  parser.add_argument('--prog_vocab_path', default='',
                      help='Path to the vocabulary for programs')
  parser.add_argument('--snapshot_path', default='checkpoints/',
                      help='Path to save checkpoints')
  #--------------------------------------------------------------------------

  # specify encoder/decoder
  parser.add_argument('--model', default='nmn-cap-prog-only',
                      help='Name of the model, will be changed later')
  parser.add_argument('--generator', default='ques',
                      help='Name of the generator to use (ques | memory)')
  parser.add_argument('--decoder', default='gen',
                      help='Name of the decoder to use (gen | disc)')
  parser.add_argument('--preload_features', default=False, type=bool,
                      help='Preload visual features on RAM')
  #-------------------------------------------------------------------------

  # model hyperparameters
  parser.add_argument('--h_feat', default=14, type=int,
                      help='Height of visual conv feature')
  parser.add_argument('--w_feat', default=14, type=int,
                      help='Width of visual conv feature')
  parser.add_argument('--d_feat', default=2048, type=int,
                      help='Size of visual conv feature')
  parser.add_argument('--text_embed_size', default=300, type=int,
                      help='Size of embedding for text')
  parser.add_argument('--map_size', default=1024, type=int,
                      help='Size of the final mapping')
  parser.add_argument('--prog_embed_size', default=300, type=int,
                      help='Size of embedding for program tokens')
  parser.add_argument('--lstm_size', default=1000, type=int,
                      help='Size of hidden state in LSTM')
  parser.add_argument('--enc_dropout', default=True, type=bool,
                      help='Dropout in encoder')
  parser.add_argument('--dec_dropout', default=True, type=bool,
                      help='Dropout in decoder')
  parser.add_argument('--num_layers', default=2, type=int,
                      help='Number of layers in LSTM')

  parser.add_argument('--max_enc_len', default=24, type=int,
                      help='Maximum encoding length for sentences (ques|cap)')
  parser.add_argument('--max_dec_len', default=14, type=int,
                      help='Maximum decoding length for programs (ques|cap)')
  parser.add_argument('--dec_sampling', default=False, type=bool,
                      help='Sample while decoding programs vs argmax')
  #---------------------------------------------------------------------------

  parser.add_argument('--use_refer', dest='use_refer', action='store_true',
                      help='Flag to use Refer for coreference resolution')
  parser.set_defaults(use_refer=False)
  parser.add_argument('--use_fact', dest='use_fact', action='store_true',
                      help='Flag to use the fact in coreference pool')
  parser.set_defaults(use_fact=False)
  parser.add_argument('--supervise_attention', dest='supervise_attention',
                      action='store_true',
                      help='Flag to supervise attention for the modules')
  parser.set_defaults(supervise_attention=False)
  parser.add_argument('--amalgam_text_feats', dest='amalgam_text_feats',
                      action='store_true',
                      help='Flag to amalgamate text features')
  parser.set_defaults(amalgam_text_feats=False)
  parser.add_argument('--no_cap_alignment', dest='cap_alignment',
                      action='store_false',
                      help='Use the auxiliary caption alignment loss')
  parser.set_defaults(cap_alignment=True)
  #-------------------------------------------------------------------------

  # optimization params
  parser.add_argument('--batch_size', default=20, type=int,
                      help='Training batch size (adjust based on GPU memory)')
  parser.add_argument('--learning_rate', default=1e-3, type=float,
                      help='Learning rate for training')
  parser.add_argument('--dropout', default=0.5, type=float, help='Dropout')
  parser.add_argument('--num_epochs', default=20, type=int,
                      help='Maximum number of epochs to run training')
  parser.add_argument('--gpu_id', type=int, default=0,
                      help='GPU id to use for training, -1 for CPU')
  #-------------------------------------------------------------------------

  try:
    parsed_args = vars(parser.parse_args())
  except (IOError) as msg:
    parser.error(str(msg))

  # set the cuda environment variable for the gpu to use
  gpu_id = '' if parsed_args['gpu_id'] < 0 else str(parsed_args['gpu_id'])
  print('Using GPU id: %s' % gpu_id)
  os.environ['CUDA_VISIBLE_DEVICES'] = gpu_id

  # pretty print arguments and return
  support.pretty_print_dict(parsed_args)

  return parsed_args