Ejemplo n.º 1
0
def train(model, data_loader, parameters, name, save_best_ckpt):
    # Train the given model and evaluate it
    print("Start Train Model")
    trainer = Trainer(model, data_loader, parameters['criterion'], parameters['lr'], parameters['betas'],
                      parameters['epochs'], parameters['batch_size'], parameters['num_classes'],
                      parameters['epsilon'], name, parameters['path'])
    trainer.__train__(save_best_ckpt)
    if save_best_ckpt:
        # if len(trainer.model_states) > 0:
        #     trainer.model_states = sorted(trainer.model_states, key=lambda x: x['loss'])
        #     torch.save({'model_state_dict': trainer.model_states[0]['state_dict']}, trainer.ckpt)
        # else:
        trainer.model.save(trainer.ckpt)

    plot(trainer.losses, "{} Loss".format(trainer.name), "loss", "epoch", parameters['path_plots_nn'])
    plot(trainer.accuracies, "{} Accuracy".format(trainer.name), "accuracy", "epoch", parameters['path_plots_nn'])
    print("End Train Model")
    print("==============================================================================")

    return trainer
Ejemplo n.º 2
0
def playing_with_learning_rate(train_loader, parameters):
    print("Start part 2")
    # Question 2 - Playing with learning rate
    print("Playing with learning rate")
    models = [SimpleModel() for _ in range(len(parameters['lrs']))]
    for idx in range(len(parameters['lrs'])):
        models[idx].load(parameters['pretrained_path'])
        model_name = "model_{}".format(idx)
        lr = parameters['lrs'][idx]
        print("model: {}. lr: {}".format(model_name, lr))
        trainer = Trainer(models[idx], train_loader, parameters['criterion'],
                          lr, parameters['betas'], parameters['epochs'],
                          parameters['batch_size'], parameters['num_classes'],
                          parameters['epsilon'], model_name,
                          parameters['path_lrs'])
        trainer.__train__(False)
        plot(trainer.losses, "{} Loss".format(trainer.name), "loss", "epoch",
             parameters['path_lrs'])
        plot(trainer.accuracies, "{} Accuracy".format(trainer.name),
             "accuracy", "epoch", parameters['path_lrs'])
    print("End Playing with learning rate")
    print("End part 2")