123456789101112131415161718192021222324252627282930 |
-
- import torch
- import torch.nn.functional as F
- from torch_geometric.nn import GCNConv
-
- class GCN(torch.nn.Module):
- def __init__(self, in_channels, out_channels):
- super().__init__()
- torch.manual_seed(1234)
- self.conv = GCNConv(in_channels, out_channels, add_self_loops=False)
-
- def forward(self, x, edge_index, edge_weight=None):
- x = F.dropout(x, p=0.5, training=self.training)
- x = self.conv(x, edge_index, edge_weight).relu()
- return x
-
-
- model = GCN(dataset.num_features, dataset.num_classes)
- model.train()
- optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
-
- print("Training on CPU.")
-
- for epoch in range(1, 6):
- optimizer.zero_grad()
- out = model(data.x, data.edge_index, data.edge_attr)
- loss = F.cross_entropy(out, data.y)
- loss.backward()
- optimizer.step()
- print(f"Epoch: {epoch}, Loss: {loss}")
|