예제 #1
0
            # ---------------------- Save checkpoint --------------------- #
            if epoch % 5 == 0 and not save_ckpt == None:
                torch.save(
                    {
                        'epoch': epoch,
                        'D_state_dict': self.D.state_dict(),
                        'G_state_dict': self.G.state_dict(),
                        'D_loss': loss_log['D_loss'],
                        'G_loss': loss_log['G_loss'],
                        'FPD': metric['FPD']
                    }, save_ckpt + str(epoch) + '_' + class_name + '.pt')

                # print('Checkpoint is saved.')


if __name__ == '__main__':
    args = Arguments().parser().parse_args()

    args.device = torch.device(
        'cuda:' + str(args.gpu) if torch.cuda.is_available() else 'cpu')
    torch.cuda.set_device(args.device)

    SAVE_CHECKPOINT = args.ckpt_path + args.ckpt_save if args.ckpt_save is not None else None
    LOAD_CHECKPOINT = args.ckpt_load if args.ckpt_load is not None else None
    RESULT_PATH = args.result_path + args.result_save

    model = TreeGAN(args)
    model.run(save_ckpt=SAVE_CHECKPOINT,
              load_ckpt=LOAD_CHECKPOINT,
              result_path=RESULT_PATH)
예제 #2
0
        gt_data = torch.Tensor([])
        for _iter, data in enumerate(dataLoader):
            point, partial, index = data
            gt_data = torch.cat((gt_data, point), 0)
        ref_pcs = gt_data.detach().cpu().numpy()
        sample_pcs = fake_pcs.detach().cpu().numpy()

        tic = time.time()
        mmd, matched_dists, dist_mat = MMD_batch(sample_pcs,
                                                 ref_pcs,
                                                 batch_size,
                                                 normalize=normalize,
                                                 use_EMD=use_EMD,
                                                 device=args.device)
        toc = time.time()
        if verbose:
            print('-----MMD-EMD: {:5.3f}'.format(mmd * 100))


if __name__ == '__main__':
    args = Arguments(stage='eval_treegan').parser().parse_args()
    args.device = torch.device('cuda')

    assert args.eval_treegan_mode in [
        "MMD", "FPD", "save", "generate_fpd_stats"
    ]

    if args.eval_treegan_mode == "generate_fpd_stats":
        script_create_fpd_stats(args)
    else:
        test(args, mode=args.eval_treegan_mode)