| 319 | |
| 320 | |
| 321 | def random_walk_subgraph(edge_index: torch.LongTensor, edge_weight: Optional[torch.FloatTensor] = None, batch_size: int = 1000, length: int = 10): |
| 322 | num_nodes = edge_index.max().item() + 1 |
| 323 | |
| 324 | row, col = edge_index |
| 325 | adj = SparseTensor(row=row, col=col, sparse_sizes=(num_nodes, num_nodes)) |
| 326 | |
| 327 | start = torch.randint(0, num_nodes, size=(batch_size, ), dtype=torch.long).to(edge_index.device) |
| 328 | node_idx = adj.random_walk(start.flatten(), length).view(-1) |
| 329 | |
| 330 | edge_index, edge_weight = subgraph(node_idx, edge_index, edge_weight) |
| 331 | |
| 332 | return edge_index, edge_weight |