示例#1
0
def main():
    parameters_2_optimize = (list(model_CNN.parameters()) + list(model_my_fc6.parameters()) +
                           list(model_score_regressor.parameters()))
    parameters_2_optimize_named = (list(model_CNN.named_parameters()) + list(model_my_fc6.named_parameters()) +
                                   list(model_score_regressor.named_parameters()))
    if with_dive_classification:
        parameters_2_optimize = parameters_2_optimize + list(model_dive_classifier.parameters())
        parameters_2_optimize_named = parameters_2_optimize_named + list(model_dive_classifier.named_parameters())
    if with_caption:
        parameters_2_optimize = parameters_2_optimize + list(model_caption.parameters())
        parameters_2_optimize_named = parameters_2_optimize_named + list(model_caption.named_parameters())

    optimizer = optim.Adam(parameters_2_optimize, lr=0.0001)
    # print('Parameters that will be learnt: ', parameters_2_optimize_named)

    criterions = {}
    criterion_final_score = nn.MSELoss()
    penalty_final_score = nn.L1Loss()
    criterions['criterion_final_score'] = criterion_final_score
    criterions['penalty_final_score'] = penalty_final_score
    if with_dive_classification:
        criterion_dive_classifier = nn.CrossEntropyLoss()
        criterions['criterion_dive_classifier'] = criterion_dive_classifier
    if with_caption:
        criterion_caption = utils_1.LanguageModelCriterion()
        criterions['criterion_caption'] = criterion_caption

    train_dataset = VideoDataset('train')
    test_dataset = VideoDataset('test')
    train_dataloader = DataLoader(train_dataset, batch_size=train_batch_size, shuffle=True)
    test_dataloader = DataLoader(test_dataset, batch_size=test_batch_size, shuffle=False)
    print('Length of train loader: ', len(train_dataloader))
    print('Length of test loader: ', len(test_dataloader))
    print('Training set size: ', len(train_dataloader)*train_batch_size,
          ';    Test set size: ', len(test_dataloader)*test_batch_size)

    # actual training, testing loops
    for epoch in range(100):
        # saving_dir = 'c3davg_140_saved' # ADDED PATH FOR SAVING DIRECTORY
        saving_dir = 'c3davg_lstm_encode' # ADDED PATH FOR SAVING DIRECTORY
        print('-------------------------------------------------------------------------------------------------------')
        for param_group in optimizer.param_groups:
            print('Current learning rate: ', param_group['lr'])

        train_phase(train_dataloader, optimizer, criterions, epoch)
        test_phase(test_dataloader)

        if (epoch+1) % model_ckpt_interval == 0: # save models every 5 epochs
            save_model(model_CNN, 'model_CNN', epoch, saving_dir)
            save_model(model_my_fc6, 'model_my_fc6', epoch, saving_dir)
            save_model(model_score_regressor, 'model_score_regressor', epoch, saving_dir)
            if with_dive_classification:
                save_model(model_dive_classifier, 'model_dive_classifier', epoch, saving_dir)
            if with_caption:
                save_model(model_caption, 'model_caption', epoch, saving_dir)
示例#2
0
def main():
    parameters_2_optimize = (list(model_CNN.parameters()) + list(
        model_my_fc6.parameters())) + list(model_caption.parameters())
    parameters_2_optimize_named = (list(model_CNN.named_parameters()) + list(
        model_my_fc6.named_parameters())) + list(
            model_caption.named_parameters())

    optimizer = optim.Adam(parameters_2_optimize, lr=0.0001)
    print('Parameters that will be learnt:', len(parameters_2_optimize_named))

    criterions = {}
    criterion_hockey_classifier = nn.CrossEntropyLoss()
    # criterion_hockey_classifier = nn.MSELoss()
    criterions['criterion_hockey_classifier'] = criterion_hockey_classifier
    criterion_caption = utils_1.LanguageModelCriterion()
    criterions['criterion_caption'] = criterion_caption

    train_dataset = VideoDataset('train')
    test_dataset = VideoDataset('test')
    train_dataloader = DataLoader(train_dataset,
                                  batch_size=train_batch_size,
                                  shuffle=True)
    test_dataloader = DataLoader(test_dataset,
                                 batch_size=test_batch_size,
                                 shuffle=False)
    print('Length of train loader: ', len(train_dataloader))
    print('Length of test loader: ', len(test_dataloader))
    print('Training set size: ',
          len(train_dataloader) * train_batch_size, ';    Test set size: ',
          len(test_dataloader) * test_batch_size)

    losses = []

    # actual training, testing loops
    for epoch in range(100):
        print(
            '---------------------------------------------------------------------------------'
        )
        for param_group in optimizer.param_groups:
            print('Current learning rate: ', param_group['lr'])

        loss = train_phase(train_dataloader, optimizer, criterions, epoch)
        losses.append(loss.cpu().item())
        test_phase(test_dataloader)

        if (epoch +
                1) % model_ckpt_interval == 0:  # save models every 5 epochs
            save_model(model_CNN, 'model_CNN', epoch, saving_dir)
            save_model(model_my_fc6, 'model_my_fc6', epoch, saving_dir)
            save_model(model_caption, 'model_caption', epoch, saving_dir)

    plt.plot(range(len(losses)), losses)
    plt.savefig('losses5.png')