"docs/source/api-guide/optimizer_cpu_offload.rst" did not exist on "a02a5490baab3b4745844b0f0752fe746a0cb7bc"
load_graph.py 1.72 KB
Newer Older
1
2
3
4
5
6
7
8
import dgl
import torch as th

def load_reddit():
    from dgl.data import RedditDataset

    # load reddit data
    data = RedditDataset(self_loop=True)
Xiangkun Hu's avatar
Xiangkun Hu committed
9
10
11
    g = data[0]
    g.ndata['features'] = g.ndata['feat']
    g.ndata['labels'] = g.ndata['label']
12
13
14
15
16
    return g, data.num_labels

def load_ogb(name):
    from ogb.nodeproppred import DglNodePropPredDataset

Da Zheng's avatar
Da Zheng committed
17
    print('load', name)
18
    data = DglNodePropPredDataset(name=name)
Da Zheng's avatar
Da Zheng committed
19
    print('finish loading', name)
20
21
22
23
24
25
26
    splitted_idx = data.get_idx_split()
    graph, labels = data[0]
    labels = labels[:, 0]

    graph.ndata['features'] = graph.ndata['feat']
    graph.ndata['labels'] = labels
    in_feats = graph.ndata['features'].shape[1]
Da Zheng's avatar
Da Zheng committed
27
    num_labels = len(th.unique(labels[th.logical_not(th.isnan(labels))]))
28
29
30

    # Find the node IDs in the training, validation, and test set.
    train_nid, val_nid, test_nid = splitted_idx['train'], splitted_idx['valid'], splitted_idx['test']
31
32
33
34
35
36
    train_mask = th.zeros((graph.number_of_nodes(),), dtype=th.bool)
    train_mask[train_nid] = True
    val_mask = th.zeros((graph.number_of_nodes(),), dtype=th.bool)
    val_mask[val_nid] = True
    test_mask = th.zeros((graph.number_of_nodes(),), dtype=th.bool)
    test_mask[test_nid] = True
37
38
39
    graph.ndata['train_mask'] = train_mask
    graph.ndata['val_mask'] = val_mask
    graph.ndata['test_mask'] = test_mask
Da Zheng's avatar
Da Zheng committed
40
41
    print('finish constructing', name)
    return graph, num_labels
42
43
44
45
46
47
48
49

def inductive_split(g):
    """Split the graph into training graph, validation graph, and test graph by training
    and validation masks.  Suitable for inductive models."""
    train_g = g.subgraph(g.ndata['train_mask'])
    val_g = g.subgraph(g.ndata['train_mask'] | g.ndata['val_mask'])
    test_g = g
    return train_g, val_g, test_g