def parse_args(args):
    parser = argparse.ArgumentParser("""
            Plot for the simulation convergence check: what if num features grows
            """)
    parser.add_argument('--result-folder',
                        type=str,
                        default="simulation_convergence_num_p")
    parser.add_argument(
        '--spinn-template',
        type=str,
        default="_output/seed_%d/num_train_200/num_p_%d/fitted_spinn.pkl")
    parser.add_argument(
        '--file-template',
        type=str,
        default="_output/seed_%d/num_train_200/num_p_%d/fitted_spinn.csv")
    parser.add_argument('--num-ps',
                        type=str,
                        default=make_params([25, 50, 100, 200, 400]))
    parser.add_argument('--lasso-ratio', type=float, default=0.1)
    parser.add_argument('--max-relevant-idx', type=int, default=6)
    parser.add_argument('--seeds', type=str, default=make_params(range(1, 21)))
    parser.add_argument('--out-plot',
                        type=str,
                        default="_output/plot_simulation_mse.png")
    parser.add_argument('--out-weight-plot',
                        type=str,
                        default="_output/plot_simulation_weights.png")
    parser.set_defaults()
    args = parser.parse_args(args)
    args.seeds = process_params(args.seeds, int)
    args.num_ps = process_params(args.num_ps, int)
    return args
Esempio n. 2
0
def parse_args(args):
    ''' parse command line arguments '''

    parser = argparse.ArgumentParser(description=__doc__)

    parser.add_argument('--seed', type=int, default=0)
    parser.add_argument('--pi-alpha',
                        type=float,
                        default=0.1,
                        help="(1-pi_alpha) prediction interval")
    parser.add_argument('--num-trains',
                        type=str,
                        default="1",
                        help="comma separated")
    parser.add_argument('--coverage-files',
                        type=str,
                        default="_output/agg_coverages.pkl",
                        help="comma separated")
    parser.add_argument('--plot-file',
                        type=str,
                        default="_output/coverage_vs_num_train.png")
    parser.set_defaults()
    args = parser.parse_args()
    args.coverage_files = process_params(args.coverage_files, str)
    args.num_trains = process_params(args.num_trains, int)
    return args
Esempio n. 3
0
def parse_args(args):
    ''' parse command line arguments '''

    parser = argparse.ArgumentParser(description=__doc__)

    parser.add_argument('--seed', type=int, default=0)
    parser.add_argument('--data-file', type=str, default="_output/data.pkl")
    parser.add_argument('--num-rand', type=int, default=20)
    parser.add_argument('--num-test', type=int, default=6000)
    parser.add_argument('--ci-alpha', type=float, default=0.1)
    parser.add_argument('--fitted-files',
                        type=str,
                        default="_output/fitted.pkl")
    parser.add_argument('--coverage-files',
                        type=str,
                        default="_output/recalibrated_coverages.pkl")
    parser.add_argument('--out-file',
                        type=str,
                        default="_output/aggregate_coverages.pkl")
    parser.add_argument('--log-file', type=str, default="_output/log_agg.txt")
    parser.set_defaults()
    args = parser.parse_args()
    args.fitted_files = process_params(args.fitted_files, str)
    args.coverage_files = process_params(args.coverage_files, str)
    return args
Esempio n. 4
0
def parse_args(args):
    parser = argparse.ArgumentParser("Plot for the main simulations")
    parser.add_argument(
        '--result-folder',
        type=str,
        default="simulation_alpha")
    parser.add_argument(
        '--lasso',
        type=str,
        default=make_params(np.arange(-.5, -6, step=-.5)))
    parser.add_argument(
        '--group-lasso',
        type=str,
        default=make_params(np.arange(-.5, -6, step=-.5)))
    parser.add_argument(
        '--max-relevant-idx',
        type=int,
        default=6)
    parser.add_argument(
        '--seeds',
        type=str,
        default="4,5,6,7,8,9,10,11")
    parser.add_argument(
        '--file-template',
        type=str,
        default="_output/seed_%d/group_lasso_%.2f/lasso_%.2f/fitted_spinn.%s")
    parser.add_argument(
        '--out-mse-plot',
        type=str,
        default="_output/plot_alpha_mse.png")
    parser.add_argument(
        '--out-irrelev-weight-plot',
        type=str,
        default="_output/plot_alpha_irrelev_weight.png")
    parser.add_argument(
        '--out-relev-weight-plot',
        type=str,
        default="_output/plot_alpha_relev_weight.png")
    parser.add_argument(
        '--out-nonzero-hidden-plot',
        type=str,
        default="_output/plot_alpha_nonzero_hidden.png")
    parser.add_argument(
        '--out-nonzero-inputs-plot',
        type=str,
        default="_output/plot_alpha_nonzero_inputs.png")
    parser.set_defaults()
    args = parser.parse_args(args)
    args.group_lasso = process_params(args.group_lasso, float)
    args.lasso = process_params(args.lasso, float)
    args.seeds = process_params(args.seeds, int)
    return args
def parse_args(args):
    ''' parse command line arguments '''

    parser = argparse.ArgumentParser(description=__doc__)

    parser.add_argument('--seed',
        type=int,
        default=0)
    parser.add_argument('--num-test',
        type=int,
        default=2000)
    parser.add_argument('--data-file',
        type=str,
        default="_output/data.pkl")
    parser.add_argument('--data-split-file',
        type=str,
        default="_output/data_split.pkl")
    parser.add_argument('--fitted-files',
        type=str,
        default="_output/fitted.pkl",
        help="comma separated")
    parser.add_argument('--plot-accept-region-file',
        type=str,
        default="_output/delta_accept_region.png")
    parser.set_defaults()
    args = parser.parse_args()
    args.fitted_files = process_params(args.fitted_files, str)
    return args
Esempio n. 6
0
def parse_args(args):
    """ parse command line arguments """

    parser = argparse.ArgumentParser(description=__doc__)

    parser.add_argument(
        "--seed",
        type=int,
        help="Random number generator seed for replicability",
        default=12,
    )
    parser.add_argument("--y-max", type=float, default=10)
    parser.add_argument("--y-min", type=float, default=None)
    parser.add_argument("--scale-loss", type=float, default=1)
    parser.add_argument("--x-start", type=int, default=None)
    parser.add_argument("--x-skip", type=int, default=None)
    parser.add_argument("--plot-mean", action="store_true")
    parser.add_argument("--history-files",
                        type=str,
                        help="comma separated pickle files")
    parser.add_argument("--loss-plot",
                        type=str,
                        default="_output/approver_history_loss.png")
    parser.add_argument("--human-plot",
                        type=str,
                        default="_output/approver_history_human.png")
    parser.add_argument("--log-file", type=str, default="_output/log.txt")
    parser.set_defaults()
    args = parser.parse_args()

    args.history_files = process_params(args.history_files, str)

    return args
Esempio n. 7
0
def parse_args(args):
    parser = argparse.ArgumentParser("Plot riboflavin")
    parser.add_argument('--result-folder', type=str, default="riboflavin")
    parser.add_argument(
        '--spinn-file-template',
        type=str,
        default="extractor_1/prop_0.20/seed_%d/relu_0/fitted_spinn.pkl")
    parser.add_argument(
        '--nn-file-template',
        type=str,
        #default="_output/seed_%d/relu_0/layer_10,10:2,10:4/fitted_%s.csv")
        default="_output/seed_%d/relu_0/layer_3,10/fitted_%s.csv")
    parser.add_argument('--file-template',
                        type=str,
                        default="_output/seed_%d/fitted_%s.csv")
    parser.add_argument('--methods',
                        type=str,
                        default="lasso,trees,spinn,spam,ridge_nn")
    parser.add_argument('--seeds',
                        type=str,
                        default=make_params(range(40, 70)))
    parser.set_defaults()
    args = parser.parse_args(args)
    args.methods = args.methods.split(",")
    args.seeds = process_params(args.seeds, int)
    return args
Esempio n. 8
0
def parse_args(args):
    ''' parse command line arguments '''

    parser = argparse.ArgumentParser(description=__doc__)

    parser.add_argument('--data-file',
        type=str,
        default="_output/data.pkl")
    parser.add_argument('--data-split-file',
        type=str,
        default="_output/data_split.pkl")
    parser.add_argument('--fitted-file',
        type=str,
        default="_output/fitted.pkl")
    parser.add_argument('--out-file',
        type=str,
        default="_output/recalibrated_coverages.pkl")
    parser.add_argument('--log-file',
        type=str,
        default="_output/recalibrated_log.txt")
    parser.add_argument('--alphas',
        type=str,
        help="""
        Specifies which alpha values to calibrate for
        comma separated list
        """,
        default="0.05,0.1,0.2")
    parser.set_defaults()
    args = parser.parse_args()
    args.alphas = process_params(args.alphas, float)
    return args
Esempio n. 9
0
    def _setup_skeleton(self):
        self.input_shape = process_params(self.prediction_layer_sizes[0], int, split_str="~")
        self.num_p = self.input_shape[0]

        # Input layers; create placeholders in tensorflow
        self.x_concat_ph = tf.placeholder(tf.float32, [None] + self.input_shape, name="x")
        self.y_concat_ph = tf.placeholder(tf.float32, [None, self.label_size], name="y")
        self.is_data_ph = tf.placeholder(tf.float32, [None, 1], name="is_data")
        self.min_y = None
Esempio n. 10
0
def parse_args(args):
    parser = argparse.ArgumentParser("Plot for the simulation convergence check")
    parser.add_argument(
        '--result-folder',
        type=str,
        default="simulation_convergence_num_obs")
    parser.add_argument(
        '--spinn-template',
        type=str,
        default="_output/seed_%d/n_train_%d/fitted_spinn.pkl")
    parser.add_argument(
        '--file-template',
        type=str,
        default="_output/seed_%d/n_train_%d/fitted_spinn.csv")
    parser.add_argument(
        '--n-trains',
        type=str,
        default=make_params([100, 200, 400, 800, 1600, 3200]))
    parser.add_argument(
        '--lasso-ratio',
        type=float,
        default=0.1)
    parser.add_argument(
        '--max-relevant-idx',
        type=int,
        default=6)
    parser.add_argument(
        '--seeds',
        type=str,
        default=make_params(range(11,31)))
    parser.add_argument(
        '--out-plot',
        type=str,
        default="_output/plot_simulation_mse.png")
    parser.add_argument(
        '--out-weight-plot',
        type=str,
        default="_output/plot_simulation_weights.png")
    parser.set_defaults()
    args = parser.parse_args(args)
    args.seeds = process_params(args.seeds, int)
    args.n_trains = process_params(args.n_trains, int)
    return args
Esempio n. 11
0
def parse_args(args):
    parser = argparse.ArgumentParser("Plot for the main simulations")
    parser.add_argument('--result-folder',
                        type=str,
                        default="simulation_univar_additive")
    parser.add_argument(
        '--spinn-template',
        type=str,
        #default="_output/seed_%d/n_train_%d/fitted_spinn.pkl")
        default="_output/seed_%d/n_train_%d/fitted_spinn.pkl")
    parser.add_argument('--file-template',
                        type=str,
                        default="_output/seed_%d/n_train_%d/fitted_%s.csv")
    parser.add_argument(
        '--methods',
        type=str,
        default="spam,lasso,spinn,gam,trees,ridge_nn,oracle_nn")
    parser.add_argument('--max-relevant-idx', type=int, default=6)
    parser.add_argument(
        '--n-trains',
        type=str,
        #default=make_params([125, 250, 500, 1000]))
        default=make_params([125, 250, 500, 1000, 2000, 4000, 8000]))
    parser.add_argument('--seeds', type=str, default=make_params(range(2, 22)))
    parser.add_argument('--out-plot',
                        type=str,
                        default="_output/plot_simulation_mse.png")
    parser.add_argument('--out-weight-plot',
                        type=str,
                        default="_output/plot_simulation_weights.png")
    parser.add_argument('--show-legend', action='store_true')
    parser.set_defaults()
    args = parser.parse_args(args)
    args.methods = args.methods.split(",")
    args.seeds = process_params(args.seeds, int)
    args.n_trains = process_params(args.n_trains, int)
    return args
def parse_args(args):
    """ parse command line arguments """

    parser = argparse.ArgumentParser(description=__doc__)

    parser.add_argument(
        "--seed",
        type=int,
        help="Random number generator seed for replicability",
        default=12,
    )
    parser.add_argument(
        "--history-files", type=str, help="comma separated pickle files"
    )
    parser.add_argument(
        "--out-file", type=str, default="_output/approver_history_agg.pkl"
    )
    parser.set_defaults()
    args = parser.parse_args()

    args.history_files = process_params(args.history_files, str)

    return args
Esempio n. 13
0
def parse_args(args):
    parser = argparse.ArgumentParser("Plot peptide results")
    parser.add_argument(
        '--result-folder',
        type=str,
        default="peptide_binding/_output")
    parser.add_argument(
        '--hla',
        type=str,
        default="A")
    parser.add_argument(
        '--spinn-file-template',
        type=str,
        default="extractor_1/prop_0.20/seed_%d/relu_0/fitted_spinn.pkl")
    parser.add_argument(
        '--nn-file-template',
        type=str,
        default="extractor_1/prop_0.20/seed_%d/relu_0/fitted_%s.csv")
        #default="extractor_1/prop_0.20/seed_%d/relu_0/fitted_%s_final.csv")
    parser.add_argument(
        '--file-template',
        type=str,
        default="extractor_1/prop_0.20/seed_%d/fitted_%s.csv")
    parser.add_argument(
        '--methods',
        type=str,
        default="lasso,trees,spam,spinn,ridge_nn")
    parser.add_argument(
        '--seeds',
        type=str,
        default=make_params(range(3,23)))
    parser.set_defaults()
    args = parser.parse_args(args)
    args.methods = args.methods.split(",")
    args.seeds = process_params(args.seeds, int)
    return args
Esempio n. 14
0
def parse_args(args):
    """ parse command line arguments """

    parser = argparse.ArgumentParser(description=__doc__)

    parser.add_argument(
        "--seed",
        type=int,
        help="Random number generator seed for replicability",
        default=0,
    )
    parser.add_argument(
        "--density-parametric-form",
        type=str,
        default="bernoulli",
        help="The parametric form we are going to use for Y|X",
        choices=["gaussian", "bernoulli"],
    )
    parser.add_argument("--proposer-eps", type=float, default=1e-4)
    parser.add_argument("--proposer-cv", type=int, default=3)
    parser.add_argument("--proposer-batches", type=str, default="1")
    parser.add_argument("--proposer-alphas", type=int, default=30)
    parser.add_argument("--proposer-offset-scale", type=float, default=0)
    parser.add_argument("--min-y", type=float, default=-1)
    parser.add_argument("--max-y", type=float, default=1)
    parser.add_argument("--log-file",
                        type=str,
                        default="_output/proposer_log.txt")
    parser.add_argument("--out-file", type=str, default="_output/proposer.pkl")
    parser.set_defaults()
    args = parser.parse_args()

    assert args.min_y < args.max_y
    args.proposer_batches = process_params(args.proposer_batches, int)
    assert np.all(np.array(args.proposer_batches) > 0)
    return args
Esempio n. 15
0
def parse_args(args):
    ''' parse command line arguments '''

    parser = argparse.ArgumentParser(description=__doc__)

    parser.add_argument('--seed',
        type=int,
        help='Random number generator seed for replicability',
        default=1)
    parser.add_argument('--max-iters',
        type=int,
        help="max training iters",
        default=20)
    parser.add_argument('--num-inits',
        type=int,
        help="num random initializations",
        default=1)
    parser.add_argument('--data-file',
        type=str,
        help="input data file name, needs to be a pickle file containing a Dataset obj (see data_generator.py)",
        default="_output/data.pkl")
    parser.add_argument('--data-split-file',
        type=str,
        help="data split file",
        default="_output/data_split.pkl")
    parser.add_argument('--density-weight-params',
        type=str,
        help="""
        Ridge penalty of the coefficients in the neural network parameterizing the conditioanl density
        comma separated list of weight params (for tuning over)
        """,
        default="0.1")
    parser.add_argument('--weight-penalty-type',
        type=str,
        help="""
        Weight type lasso or ridge
        """,
        default="ridge",
        choices=["ridge", "group_lasso"])
    parser.add_argument('--density-layer-sizes',
        type=str,
        help="""
        NN structure for density function
        comma-colon separated lists of +-separated lists of layer sizes (for tuning over)
        does not include the output layer
        Example: 6+2+1,6+2+2+1
        """,
        default="4+10")
    parser.add_argument('--density-parametric-form',
        type=str,
        default="gaussian",
        help="The parametric form we are going to use for Y|X",
        choices=["gaussian", "bernoulli", "multinomial"])
    parser.add_argument('--dropout-rate',
        type=str,
        help="""
        dropout rate (0 means no dropout)
        comma separated list (for tuning over)
        """,
        default="0")
    parser.add_argument('--num-ensemble',
        type=int,
        help="num ensemble",
        default=1)
    parser.add_argument('--act-func',
        type=str,
        help="activation function in all the NNs",
        default="tanh",
        choices=["tanh", "relu"])
    parser.add_argument('--learning-rate',
        type=float,
        help="learning rate for adam",
        default=0.002)
    parser.add_argument('--cv',
        type=int,
        help="num cross-validation folds",
        default=2)
    parser.add_argument('--do-distributed',
        action="store_true")
    parser.add_argument('--log-file',
        type=str,
        default="_output/log.txt")
    parser.add_argument('--fitted-file',
        type=str,
        default="_output/fitted.pkl")
    parser.add_argument('--scratch-dir',
        type=str,
        default="scratch")
    parser.set_defaults()
    args = parser.parse_args()

    # Parse parameters to CV over
    args.density_weight_params = process_params(args.density_weight_params, float)
    args.density_layer_sizes = [process_params(substr, str, "+") for substr in args.density_layer_sizes.split(",")]
    args.dropout_rate = process_params(args.dropout_rate, float)
    return args
def parse_args(args):
    ''' parse command line arguments '''

    parser = argparse.ArgumentParser(description=__doc__)

    parser.add_argument('--seed',
                        type=int,
                        help='Random number generator seed for replicability',
                        default=1)
    parser.add_argument('--max-iters',
                        type=int,
                        help="max training iters",
                        default=2000)
    parser.add_argument('--num-inits',
                        type=int,
                        help="num random initializations",
                        default=1)
    parser.add_argument(
        '--support-sim-num',
        type=int,
        help="number of points to sample from the support (uniformly)",
        default=100)
    parser.add_argument(
        '--data-file',
        type=str,
        help=
        "input data file name, needs to be a pickle file containing a Dataset obj (see data_generator.py)",
        default="_output/data.pkl")
    parser.add_argument('--data-split-file',
                        type=str,
                        help="data split file",
                        default="_output/data_split.pkl")
    parser.add_argument('--do-no-harm-params',
                        type=str,
                        help="""
        The weight param for the do-no-harm penalty
        comma separated list (for tuning over)
        """,
                        default="0.1")
    parser.add_argument('--log-barrier-params',
                        type=str,
                        help="""
        The weight param for the log barrier penalty
        comma separated list(for tuning over)
        """,
                        default="0.05")
    parser.add_argument('--interval-alpha',
                        type=float,
                        help="Train intervals to have coverage (1 - alpha)",
                        default=0.1)
    parser.add_argument('--cost-decline',
                        type=float,
                        help="The cost of declining to make a prediction",
                        default=0.1)
    parser.add_argument('--interval-weight-params',
                        type=str,
                        help="""
        Ridge penalty of the coefficients in the neural network parameterizing the interval
        comma separated list of weight params (for tuning over)
        """,
                        default="0.1")
    parser.add_argument('--decision-weight-params',
                        type=str,
                        help="""
        Ridge penalty of the coefficients in the neural network parameterizing the decision function
        comma separated list of weight params (for tuning over)
        """,
                        default="0.1")
    parser.add_argument('--weight-penalty-type',
                        type=str,
                        help="""
        Weight type lasso or ridge
        """,
                        default="ridge",
                        choices=["ridge", "lasso"])
    parser.add_argument('--decision-layer-sizes',
                        type=str,
                        help="""
        NN structure for decision function
        comma-separated lists of +-separated lists of layer sizes (for tuning over)
        Example: 6+2+1,6+2+2+1
        """,
                        default=None)
    parser.add_argument('--interval-layer-sizes',
                        type=str,
                        help="""
        NN structure for interval function
        comma-colon separated lists of +-separated lists of layer sizes (for tuning over)
        does not include the output layer
        Example: 6+2+1,6+2+2+1
        """,
                        default="4+10")
    parser.add_argument('--act-func',
                        type=str,
                        help="activation function in all the NNs",
                        default="tanh",
                        choices=["tanh", "relu"])
    parser.add_argument('--learning-rate',
                        type=float,
                        help="learning rate for adam",
                        default=0.002)
    parser.add_argument('--cv',
                        type=int,
                        help="num cross-validation folds",
                        default=2)
    parser.add_argument('--log-file', type=str, default="_output/log.txt")
    parser.add_argument('--fitted-file',
                        type=str,
                        default="_output/fitted.pkl")
    parser.set_defaults()
    args = parser.parse_args()

    # Parse parameters to CV over
    args.do_no_harm_params = process_params(args.do_no_harm_params, float)
    args.log_barrier_params = process_params(args.log_barrier_params, float)
    args.interval_weight_params = process_params(args.interval_weight_params,
                                                 float)
    args.decision_weight_params = process_params(args.decision_weight_params,
                                                 float)
    args.interval_layer_sizes = [
        process_params(substr, str, "+")
        for substr in args.interval_layer_sizes.split(",")
    ]
    if args.decision_layer_sizes is not None:
        args.decision_layer_sizes = [
            process_params(substr, str, "+")
            for substr in args.decision_layer_sizes.split(",")
        ]
    else:
        args.decision_layer_sizes = [None]
    return args
Esempio n. 17
0
def parse_args(args):
    ''' parse command line arguments '''

    parser = argparse.ArgumentParser(description=__doc__)

    parser.add_argument('--seed',
        type=int,
        help='Random number generator seed for replicability',
        default=1)
    parser.add_argument('--max-iters',
        type=int,
        help="max training iters",
        default=2000)
    parser.add_argument('--num-ensemble',
        type=int,
        default=1)
    parser.add_argument('--num-inits',
        type=int,
        help="num random initializations",
        default=1)
    parser.add_argument('--support-sim-num',
        type=int,
        help="number of points to sample from the support (uniformly)",
        default=100)
    parser.add_argument('--data-file',
        type=str,
        help="input data file name, needs to be a pickle file containing a Dataset obj (see data_generator.py)",
        default="_output/data.pkl")
    parser.add_argument('--data-split-file',
        type=str,
        help="data split file",
        default="_output/data_split.pkl")
    parser.add_argument('--log-barrier-params',
        type=str,
        help="""
        The weight param for the log barrier penalty
        comma separated list (for tuning over)
        """,
        default="0.01")
    parser.add_argument('--do-no-harm-params',
        type=str,
        help="""
        The weight param for the do-no-harm penalty
        comma separated list (for tuning over)
        """,
        default="0.1")
    parser.add_argument('--cost-decline',
        type=float,
        help=""""
        The cost of declining to make a prediction.
        If is zero, we assume that we actually want an accept ALL model (not accept none).
        """,
        default=0.1)
    parser.add_argument('--density-weight-params',
        type=str,
        help="""
        Ridge penalty of the coefficients in the neural network parameterizing the conditioanl density
        comma separated list of weight params (for tuning over)
        """,
        default="0.1")
    parser.add_argument('--decision-weight-params',
        type=str,
        help="""
        Ridge penalty of the coefficients in the neural network parameterizing the decision function
        comma separated list of weight params (for tuning over)
        """,
        default="0.1")
    parser.add_argument('--weight-penalty-type',
        type=str,
        help="""
        Weight type lasso or ridge
        """,
        default="ridge",
        choices=["ridge", "group_lasso"])
    parser.add_argument('--density-layer-sizes',
        type=str,
        help="""
        NN structure for density function
        comma-colon separated lists of +-separated lists of layer sizes (for tuning over)
        does not include the output layer
        Example: 6+2+1,6+2+2+1
        """,
        default="4+10")
    parser.add_argument('--decision-layer-sizes',
        type=str,
        help="""
        NN structure for density function
        comma-colon separated lists of +-separated lists of layer sizes (for tuning over)
        does not include the output layer
        Example: 6+2+1,6+2+2+1
        """,
        default=None)
    parser.add_argument('--dropout-rate',
        type=str,
        help="""
        dropout rate (0 means no dropout)
        comma separated list (for tuning over)
        """,
        default="0")
    parser.add_argument('--density-parametric-form',
        type=str,
        default="gaussian",
        help="The parametric form we are going to use for Y|X",
        choices=["gaussian", "bernoulli", "multinomial"])
    parser.add_argument('--act-func',
        type=str,
        help="activation function in all the NNs",
        default="tanh",
        choices=["tanh", "relu"])
    parser.add_argument('--learning-rate',
        type=float,
        help="learning rate for adam",
        default=0.002)
    parser.add_argument('--cv',
        type=int,
        help="num cross-validation folds",
        default=2)
    parser.add_argument('--use-train-data-support',
        action="store_true")
    parser.add_argument('--empirical-support-file',
        type=str,
        default="",
        help="support empirical distribution")
    parser.add_argument('--support-empirical-scale',
        type=float,
        default=1,
        help="How much to scale the gaussian perturbation around the empirical support distirbution")
    parser.add_argument('--log-file',
        type=str,
        default="_output/log.txt")
    parser.add_argument('--fitted-file',
        type=str,
        default="_output/fitted.pkl")
    parser.add_argument('--do-distributed',
        action="store_true")
    parser.add_argument('--scratch-dir',
        type=str,
        default="scratch")
    parser.set_defaults()
    args = parser.parse_args()

    # Parse parameters to CV over
    args.do_no_harm_params = process_params(args.do_no_harm_params, float)
    args.log_barrier_params = process_params(args.log_barrier_params, float)
    args.density_weight_params = process_params(args.density_weight_params, float)
    args.decision_weight_params = process_params(args.decision_weight_params, float)
    args.dropout_rate = process_params(args.dropout_rate, float)
    args.density_layer_sizes = [process_params(substr, str, "+") for substr in args.density_layer_sizes.split(",")]
    if args.decision_layer_sizes is not None:
        args.decision_layer_sizes = [process_params(substr, str, "+") for substr in args.decision_layer_sizes.split(",")]
    else:
        args.decision_layer_sizes = [None]
    return args