Ejemplo n.º 1
0
def train_model(model, train_loader, test_loader, val_loader, obj=None, LMIs=None, regularizers=None, log_dir=default_log_dir, options=None):

    print("Beginnning training at {}".format(time.ctime()))

    if obj is None:
        obj = torch.nn.MSELoss()

    if options is None:
        options = nlsdp.make_stochastic_nlsdp_options()

    problem = nlsdp.stochastic_nlsdp(model=model, criterion=obj, train_loader=train_loader, val_loader=val_loader, **options)

    if LMIs is not None:
        for lmi in LMIs:
            problem.addSDPconstraint(lmi)

    if regularizers is not None:
        for reg in regularizers:
            problem.add_regularizer(reg)

    log = problem.solve()

    print("Training Complete")
    return log
Ejemplo n.º 2
0
                                                             val_bs=10,
                                                             ar=False,
                                                             val_set=val_set)
            dataset_options["subject"] = subject
            train_loader, val_loader, test_loader, scaling_factors = load_data.load_dataset(
                dataset="gait_prediction_stairs",
                dataset_options=dataset_options)

            nu = train_loader.nu
            ny = train_loader.ny

            # Options for the solver
            # solver_options = nlsdp.make_stochastic_nlsdp_options(max_epochs=max_epochs, lr=5.0E-4, mu0=100, lr_decay=0.98)
            solver_options = nlsdp.make_stochastic_nlsdp_options(
                max_epochs=max_epochs,
                lr=lr,
                mu0=10,
                lr_decay=lr_decay,
                patience=patience)

            # Train an LSTM network
            name = "RNN_sub{:d}_val{:d}".format(subject, val_set)
            model = rnn.rnn(nu, lstm_width, ny, layers=layers)
            log, best_model = train.train_model_ipm(model,
                                                    train_loader=train_loader,
                                                    val_loader=val_loader,
                                                    test_loader=test_loader,
                                                    options=solver_options)

            test_and_save_model(name,
                                best_model,
                                train_loader,
                                                             val_bs=10,
                                                             ar=ar,
                                                             val_set=val_set)
            dataset_options["subject"] = subject
            train_loader, val_loader, test_loader = load_data.load_dataset(
                dataset="gait_prediction_stairs",
                dataset_options=dataset_options)

            nu = train_loader.nu
            ny = train_loader.ny

            # Options for the solver
            # solver_options = nlsdp.make_stochastic_nlsdp_options(max_epochs=max_epochs, lr=5.0E-4, mu0=100, lr_decay=0.98)
            solver_options = nlsdp.make_stochastic_nlsdp_options(
                max_epochs=max_epochs,
                lr=5.0E-4,
                mu0=500,
                lr_decay=0.987,
                patience=20)

            # Train Unconstrained model - still project onto stable models for stable initial point
            name = "uncon_sub{:d}_val{:d}".format(subject, val_set)
            model = dnb.dnbRNN(nu, width, ny, layers, nBatches=9, init_var=1.3)

            log, best_model = train.train_model(model,
                                                train_loader=train_loader,
                                                val_loader=val_loader,
                                                test_loader=test_loader,
                                                options=solver_options)

            test_and_save_model(name, best_model, train_loader, val_loader,
                                test_loader, log)
Ejemplo n.º 4
0
            # Load the data set
            dataset_options = load_data.make_default_options(train_bs=40,
                                                             train_sl=200,
                                                             val_set=val_set,
                                                             test_sl=2000)
            dataset_options["gain"] = 1.4
            train_loader, val_loader, test_loader = load_data.load_dataset(
                dataset="chen", dataset_options=dataset_options)

            nu = train_loader.nu
            ny = train_loader.ny

            # Options for the solver
            solver_options = nlsdp.make_stochastic_nlsdp_options(
                max_epochs=max_epochs,
                lr=0.1E-4,
                mu0=2000,
                lr_decay=0.96,
                patience=10)

            # Train Contracting implicit model ------------------------------------------------------------------------
            name = "contracting_sub{:d}_val{:d}".format(subject, val_set)
            model = diRNN.diRNN(nu,
                                width,
                                ny,
                                layers,
                                nBatches=dataset_options["train_batch_size"] -
                                1)
            model.init_l2(mu=mu, epsilon=eps, init_var=1.2)

            log, best_model = train.train_model(model,
                                                train_loader=train_loader,