Exemple #1
0
def main(args):

    if args.gpu < 0:
        cuda = False
    else:
        cuda = True
        torch.cuda.set_device(args.gpu)

    default_path = create_default_path()
    print('\n*** Set default saving/loading path to:', default_path)

    if args.dataset == AIFB or args.dataset == MUTAG:
        module = importlib.import_module(MODULE.format('dglrgcn'))
        data = module.load_dglrgcn(args.data_path)
        data = to_cuda(data) if cuda else data
        mode = NODE_CLASSIFICATION
    elif args.dataset == MUTAGENICITY or args.dataset == PTC_MR or args.dataset == PTC_MM or args.dataset == PTC_FR or args.dataset == PTC_FM:
        module = importlib.import_module(MODULE.format('dortmund'))
        data = module.load_dortmund(args.data_path)
        data = to_cuda(data) if cuda else data
        mode = GRAPH_CLASSIFICATION
    else:
        raise ValueError('Unable to load dataset', args.dataset)

    print_graph_stats(data[GRAPH])

    config_params = read_params(args.config_fpath, verbose=True)

    # create GNN model
    model = Model(g=data[GRAPH],
                  config_params=config_params[0],
                  n_classes=data[N_CLASSES],
                  n_rels=data[N_RELS] if N_RELS in data else None,
                  n_entities=data[N_ENTITIES] if N_ENTITIES in data else None,
                  is_cuda=cuda,
                  mode=mode)

    if cuda:
        model.cuda()

    # 1. Training
    app = App()
    learning_config = {
        'lr': args.lr,
        'n_epochs': args.n_epochs,
        'weight_decay': args.weight_decay,
        'batch_size': args.batch_size,
        'cuda': cuda
    }
    print('\n*** Start training ***\n')
    app.train(data, config_params[0], learning_config, default_path, mode=mode)

    # 2. Testing
    print('\n*** Start testing ***\n')
    app.test(data, default_path, mode=mode)

    # 3. Delete model
    remove_model(default_path)
Exemple #2
0
 def prepare_files(self, task_ids=None, cuda=True):
     data = self.prep_data.load_data_files(task_ids)
     if data is None:
         return None, self.args
     
     data = to_cuda(data) if cuda is True else data
     return data, self.args
Exemple #3
0
def load_dataset(args, cuda):
    if 'prep_path' in config_params and config_params['prep_path'] is not None:
        sys.path.insert(0, config_params['prep_path'])
        print('*** prep path', config_params['prep_path'])
        from prep_data_n import PrepareData
    else:
        from utils.prep_data_n import PrepareData

    prep_data = PrepareData(args, cuckoo_analysis_dir='api_tasks/data_report')
    data = prep_data.load_data()
    data = to_cuda(data) if cuda is True else data
    # if cuda is True:
    #     data[GRAPH] = data[GRAPH].to(torch.device('cuda:0'))
    return data
Exemple #4
0
def load_dataset(args, cuda):
    prep_data = PrepareData(reports_parent_dir_path=args.input_report_folder,
                            data_json_path=args.input_data_file,
                            pickle_folder=args.input_data_folder,
                            vocab_path=args.vocab_path,
                            encode_edge_data=args.encode_edge_data,
                            save_json=args.save_json,
                            use_interesting_apis=args.use_interesting_apis,
                            prepend_vocab=args.prepend_vocab,
                            mapping_path=args.mapping_path)
    data = prep_data.load_data(from_folder=args.from_report_folder,
                               from_json=args.from_data_json,
                               from_pickle=args.from_pickle)
    data = to_cuda(data) if cuda else data
    return data
Exemple #5
0
    def prepare_files(self, cuda=True):
        if self.task_ids is None:
            data = self.prep_data.load_data_files(
                self.task_ids,
                report_dir_path=self.report_dir_path,
                report_dir_name=self.report_dir_name,
                report_file_name=self.report_file_name)
        else:
            data = self.prep_data.load_data_files(self.task_ids)
        # data = self.prep_data.load_data()

        if data is None:
            return None, self.args

        data = to_cuda(data) if cuda is True else data
        return data
Exemple #6
0
def prepare_files(task_ids=None, cuda=True):
    args = read_params(CONFIG_PATH, verbose=False)

    args['config_fpath'] = CONFIG_PATH

    if task_ids is not None:
        task_ids = [str(tid) for tid in task_ids]
        batch_task_name = '-'.join(task_ids)
        args["input_report_folder"] = cf.__ROOT__ + '/api_tasks/data_report'
        args[
            "input_data_folder"] = cf.__ROOT__ + '/api_tasks/data_json/{}'.format(
                batch_task_name)
        args[
            "input_pickle_folder"] = cf.__ROOT__ + '/api_tasks/data_pickle/{}'.format(
                batch_task_name)

    args["mapping_path"] = cf.__ROOT__ + '/' + args["mapping_path"]
    args["train_embedding_path"] = cf.__ROOT__ + '/' + args[
        "train_embedding_path"]
    args["vocab_path"] = cf.__ROOT__ + '/' + args["vocab_path"]

    args["graph_viz_dir"] = cf.__ROOT__ + '/data/graphviz'

    args["from_pickle"] = False
    args["from_report_folder"] = False
    args["from_data_json"] = False

    args["prepare_word_embedding"] = True
    args["train_embedder"] = False

    args["reverse_edge"] = __REVERSE_EDGE__

    del args['train_list_file']
    del args['test_list_file']

    args['do_draw'] = __DO_DRAW__

    prep_data = PrepareData(args)
    data = prep_data.load_data_files(task_ids)
    if data is None:
        return None, args

    data = to_cuda(data) if cuda is True else data
    return data, args