def parse_args()

in main.py [0:0]


def parse_args():
    """Returns a configuration from command line arguments."""

    # Main options
    parser = argparse.ArgumentParser()

    parser.add_argument('--out_dir', required=True, type=str,
                        help='Output directory')
    parser.add_argument('--exp_name', default=None, type=str,
                        help='Name for the experiment output folder')
    parser.add_argument('--dataset', required=True, type=str,
                        help='Dataset to use')

    # Model options
    parser.add_argument('--model', required=True, type=str,
                        help='Type of Encoder/Decoder to use')
    parser.add_argument('--rec_loss', default='l1', type=str,
                        choices=['l1', 'l2', 'bce'],
                        help='Reconstruction loss to use')
    parser.add_argument('--checkpoint', default=None, type=str,
                        help='Resume training with this checkpoint path')

    # Hyperparameters
    parser.add_argument('--n_ctx', required=True, type=int,
                        help='Number of context frames to use')
    parser.add_argument('--n_steps', required=True, type=int,
                        help='Number of steps to unroll the model for')
    parser.add_argument('--lr', default=1e-4, type=float,
                        help='Learning rate for the optimizer')
    parser.add_argument('--n_z', default=10, type=int,
                        help='Number of latents to use.')
    parser.add_argument('--beta', default=1, type=float,
                        help='Weight for the KL loss in the VAE objective')
    parser.add_argument('--beta_wu', default=0, type=int,
                        help='Use a warm-up schedule for the beta parameter')

    # Experiment options
    parser.add_argument('--batch_size', default=16, type=int,
                        help='Number of examples per batch')
    parser.add_argument('--log_freq', default=100, type=int,
                        help='Display information every X batches')
    parser.add_argument('--sample_freq', default=1, type=int,
                        help='Log samples every X epochs')
    parser.add_argument('--save_freq', default=1, type=int,
                        help='Save model every X epochs')
    parser.add_argument('--n_workers', default=4, type=int,
                        help='Number of data loading threads')
    parser.add_argument('--gpu', default=1, type=int,
                        help='Use GPU')
    parser.add_argument('--max_epochs', default=500, type=int,
                        help='Maximum number of epochs')
    parser.add_argument('--test_batches', default=10, type=int,
                        help='Number of batches to test the model for.')

    # Distributed options and float16 options
    parser.add_argument('--apex', action='store_true', default=False,
                        help='Use APEX (float16)')
    parser.add_argument('--multigpu', default=0, type=int,
                        help='Use multi GPU training')
    parser.add_argument('--dist-url', default=None, type=str,
                        help='url used to set up distributed training')
    parser.add_argument('--dist_backend', default='nccl', type=str,
                        help='distributed backend')

    args = parser.parse_args()

    return vars(args)