Hello dears,

I have multiple graphs and want to classify their nodes. Until now, all the examples regarding node classification consist one graph not multiple graphs. Can anybody give me a suggestion?

Thanks

Hi @mkh

Let’s say you have multiple DGL graph objects g_{1}, g_{2}, g_{3} with # nodes n_{1}, n_{2}, and n_{3}. Using DGL, you can create a batch graph (think block-diagonal matrix), using the `dgl.batch`

function:

```
graph = dgl.batch([g1, g2, g3])
```

Similarly, you would need to stack the node feature matrices (assuming the feature matrices are of the same size) as

```
feat = th.stack([feat_1, feat_2, feat_3], axis=2)
feat = feat.view(feat.shape[0]*feat.shape[-1], in_feats)
```

otherwise, you could use Numpy

```
feats = th.tensor(np.row_stack([feat_1, feat_2, feat_3])).float()
```

This creates a large graph, with no edges shared between sub-graphs – as such, no information is convolved across graphs, and a large feature matrix. You can plug `graph`

and `feat`

directly into your model for both training and testing-purposes.

Very cool answer.

Forgiving me I am a beginner, trying many times still fails to implement this function.

Can you share some code of this function?

Thanks in advance.