import os.path as osp import torch from torch.nn import Linear import torch.nn.functional as F from sklearn.metrics import f1_score from torch_geometric.datasets import PPI import torch_geometric.transforms as T from torch_geometric.nn import GCN2Conv from torch_geometric.loader import DataLoader path = osp.join(osp.dirname(osp.realpath(__file__)), '..', 'data', 'GCN2_PPI') pre_transform = T.Compose([T.GCNNorm(), T.ToSparseTensor()]) train_dataset = PPI(path, split='train', pre_transform=pre_transform) val_dataset = PPI(path, split='val', pre_transform=pre_transform) test_dataset = PPI(path, split='test', pre_transform=pre_transform) train_loader = DataLoader(train_dataset, batch_size=2, shuffle=True) val_loader = DataLoader(val_dataset, batch_size=2, shuffle=False) test_loader = DataLoader(test_dataset, batch_size=2, shuffle=False) class Net(torch.nn.Module): def __init__(self, hidden_channels, num_layers, alpha, theta, shared_weights=True, dropout=0.0): super(Net, self).__init__() self.lins = torch.nn.ModuleList() self.lins.append(Linear(train_dataset.num_features, hidden_channels)) self.lins.append(Linear(hidden_channels, train_dataset.num_classes)) self.convs = torch.nn.ModuleList()
from tqdm import tqdm import torch import torch.nn.functional as F from sklearn.metrics import roc_auc_score from sklearn.model_selection import train_test_split from torch_geometric.datasets import BAShapes from torch_geometric.nn import GCN, GNNExplainer from torch_geometric.utils import k_hop_subgraph import torch_geometric.transforms as T dataset = BAShapes(transform=T.GCNNorm()) data = dataset[0] idx = torch.arange(data.num_nodes) train_idx, test_idx = train_test_split(idx, train_size=0.8, stratify=data.y) device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') data = data.to(device) model = GCN(data.num_node_features, hidden_channels=20, num_layers=3, out_channels=dataset.num_classes, normalize=False).to(device) optimizer = torch.optim.Adam(model.parameters(), lr=0.001, weight_decay=0.005) def train(): model.train() optimizer.zero_grad()
import os.path as osp import torch import torch.nn.functional as F import matplotlib.pyplot as plt from torch_geometric.datasets import Planetoid import torch_geometric.transforms as T from torch_geometric.nn import GCNConv, GNNExplainer dataset = 'Cora' path = osp.join(osp.dirname(osp.realpath(__file__)), '..', 'data', 'Planetoid') transform = T.Compose([T.GCNNorm(), T.NormalizeFeatures()]) dataset = Planetoid(path, dataset, transform=transform) data = dataset[0] class Net(torch.nn.Module): def __init__(self): super().__init__() self.conv1 = GCNConv(dataset.num_features, 16, normalize=False) self.conv2 = GCNConv(16, dataset.num_classes, normalize=False) def forward(self, x, edge_index, edge_weight): x = F.relu(self.conv1(x, edge_index, edge_weight)) x = F.dropout(x, training=self.training) x = self.conv2(x, edge_index, edge_weight) return F.log_softmax(x, dim=1) device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') model = Net().to(device)