Exemple #1
0
def evaluate(args, exe, test_prog, model, test_dataset, featurizer):
    """
    Define the evaluate function

    In the dataset, a proportion of labels are blank. So we use a `valid` tensor 
    to help eliminate these blank labels in both training and evaluation phase.

    """
    data_gen = test_dataset.iter_batch(batch_size=args.batch_size,
                                       num_workers=args.num_workers,
                                       shuffle=True,
                                       collate_fn=featurizer.collate_fn)
    total_pred = []
    total_label = []
    total_valid = []
    for batch_id, feed_dict in enumerate(data_gen):
        pred, = exe.run(test_prog,
                        feed=feed_dict,
                        fetch_list=[model.pred],
                        return_numpy=False)
        total_pred.append(np.array(pred))
        total_label.append(feed_dict['finetune_label'])
        total_valid.append(feed_dict['valid'])
    total_pred = np.concatenate(total_pred, 0)
    total_label = np.concatenate(total_label, 0)
    total_valid = np.concatenate(total_valid, 0)
    return calc_rocauc_score(total_label, total_pred, total_valid)
Exemple #2
0
def evaluate(args, exe, test_prog, agent, test_data_list, epoch_id):
    """Evaluate the model on test dataset."""
    collate_fn = MoleculeCollateFunc(agent.graph_wrapper,
                                     task_type='cls',
                                     num_cls_tasks=args.num_tasks,
                                     with_graph_label=True,
                                     with_pos_neg_mask=False)
    data_loader = Dataloader(test_data_list,
                             batch_size=args.batch_size,
                             num_workers=args.num_workers,
                             shuffle=False,
                             collate_fn=collate_fn)

    total_data, eval_data = len(test_data_list), 0
    total_pred, total_label, total_valid = [], [], []
    for batch_id, feed_dict in enumerate(data_loader):
        pred, = exe.run(test_prog,
                        feed=feed_dict,
                        fetch_list=[agent.pred],
                        return_numpy=False)
        total_pred.append(np.array(pred))
        total_label.append(feed_dict['label'])
        total_valid.append(feed_dict['valid'])

    total_pred = np.concatenate(total_pred, 0)
    total_label = np.concatenate(total_label, 0)
    total_valid = np.concatenate(total_valid, 0)
    return calc_rocauc_score(total_label, total_pred, total_valid)
Exemple #3
0
def evaluate(args, exe, test_prog, model, test_dataset, featurizer):
    """tbd"""
    data_gen = test_dataset.iter_batch(batch_size=args.batch_size,
                                       num_workers=args.num_workers,
                                       shuffle=True,
                                       collate_fn=featurizer.collate_fn)
    total_pred = []
    total_label = []
    total_valid = []
    for batch_id, feed_dict in enumerate(data_gen):
        pred, = exe.run(test_prog,
                        feed=feed_dict,
                        fetch_list=[model.pred],
                        return_numpy=False)
        total_pred.append(np.array(pred))
        total_label.append(feed_dict['finetune_label'])
        total_valid.append(feed_dict['valid'])
    total_pred = np.concatenate(total_pred, 0)
    total_label = np.concatenate(total_label, 0)
    total_valid = np.concatenate(total_valid, 0)
    return calc_rocauc_score(total_label, total_pred, total_valid)