def main(config):
    device = None
    if config['use_cuda']:
        device = torch.device(config['cuda_num'])

    print(">>> load train, valid, test dataloader <<<")
    train_dataloader, valid_dataloader, test_dataloader = data_loader.load_path_loss_with_detail_dataset(
        input_dir=config['input_dir'],
        model_type=config['model_type'],
        num_workers=config['num_workers'],
        batch_size=config['batch_size'],
        shuffle=config['shuffle'],
        input_size=config['sequence_length'])

    print(">>> setup tensorboard <<<")
    writer = use_tensorboard.set_tensorboard_writer('{}/{}'.format(
        config['tensorboard_writer_path'], config['section_message']))

    print(">>> model load <<<")
    model = model_reconst.model_load(model_configure=config)

    print(">>> loss, optimizer setup <<<")
    criterion = optimizer.set_criterion(config['criterion'])
    optim = optimizer.set_optimizer(config['optimizer'],
                                    model=model,
                                    learning_rate=config['learning_rate'])

    num_of_epoch = config['epoch']
    for epoch in range(num_of_epoch):
        print("start training ... [ {}/{} epoch ]".format(epoch, num_of_epoch))
        train(train_loader=train_dataloader,
              epoch=epoch,
              config=config,
              device=device,
              model=model,
              criterion=criterion,
              writer=writer,
              optim=optim)
        validation(valid_loader=valid_dataloader,
                   epoch=epoch,
                   config=config,
                   device=device,
                   model=model,
                   criterion=criterion,
                   writer=writer)
        torch.save(
            {
                "epoch": epoch,
                "model": model,
                "model_state_dict": model.state_dict()
            }, "{}/{}_epoch_{}.pt".format(config['checkpoint_dir'],
                                          config['section_message'], epoch))
예제 #2
0
            print(data.shape)
            x_data = data.transpose(1, 2)
            x_data = x_data.cuda()
            y_pred = nn_model(x_data).reshape(-1).cpu().numpy()
            total_pred.extend(y_pred)
        total_pred = np.array(total_pred)
        print('mean : ', total_pred.mean())
        print('median : ', np.median(total_pred))
        print('max : ', total_pred.max())
        print('min : ', total_pred.min())
        return {'mean': total_pred.mean(), 'median': np.median(total_pred),
                'max': total_pred.max(), 'min': total_pred.min()}


if __name__ == '__main__':
    inference_model = model_reconst.model_load(model_config)
    pole_line_count = 2
    height = 30
    width = 50
    pole_point = []
    circles = []
    for i in range(pole_line_count):
        pole_point.append([i*height, 0])
        pole_point.append([i*height, width])
    pole_data_path = [
        "dataset/v8/test_dataset01/test1_type01_point_f8-8a-5e-45-75-c5_39_15_10/f8-8a-5e-45-75-c5_39_15_10_pol0-0.csv",
        # pole1
        "dataset/v8/test_dataset01/test1_type01_point_f8-8a-5e-45-75-c5_39_15_10/f8-8a-5e-45-75-c5_39_15_10_pol50-0.csv",
        # pole2
        "dataset/v8/test_dataset01/test1_type01_point_f8-8a-5e-45-75-c5_39_15_10/f8-8a-5e-45-75-c5_39_15_10_pol0-30.csv",
        # pole3