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))
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