在pyg的torch_geometric.datasets的包中,已经包含许多常见的数据集,但是针对的自己的需求去构建或者引用其他的一些数据集的时候,我们需要在pyg提供的函数的基础上进行数据的规范化。 在pyg中,可以构建两种类型的数据集,一种是In Memory Dataset,另一种是Larger Dataset。前者需要引入的包torch_geometric.data.InMemoryDa...
节点的特征是关于论文的词袋描述,节点的类别表示论文的不同类型,分为7类。 fromtorch_geometric.datasetsimportPlanetoidimportnetworkxasnximporttorch_geometricdataset=Planetoid(root="",name="Cora")#将数据保存在当前目录下 加载出的dataset是PyG里实现的一个类,这个类里面包含了K张图。其中,K是由数据集自身决定,...
因为保存一个巨大的 python 列表速度非常慢,因此在保存前可以通过torch_geometric.data.InMemoryDataset.collate() 方法将列表整理成一个巨大的Data对象,再返回一个Data对象切片(slices)字典和一个Data对象重建的单个示例,最后我们需要在构造函数中将这两个对象加载到属性self.data 和 self.slices。 五、torch_geometric...
dataset=KarateClub()data=dataset[0] 1. 2. 4. 构建图神经网络模型 我们将使用Graph Convolutional Network (GCN)作为图神经网络模型。GCNConv是GCN的一层。 classGCN(torch.nn.Module):def__init__(self):super(GCN,self).__init__()self.conv1=GCNConv(dataset.num_features,16)self.conv2=GCNConv(16...
model = Net(dataset.num_features, 128, 64).to(device)optimizer = torch.optim.Adam(params=model.parameters(), lr=0.01)criterion = torch.nn.BCEWithLogitsLoss()model = train_link_predictor(model, train_data, val_data, optimizer, criterion)test_auc = eval_link_predictor(model, test_data)...
dataset = Planetoid(root='/path/to/dataset', name='Cora', transform=T.NormalizeFeatures())data= dataset[0] print(data) AI代码助手复制代码 定义GCN模型 在定义PyG的GCN网络之前,需要定义Convolutional Layer,这个层以邻接矩阵A作为输入,通过权重权值矩阵W来散播消息,并输出一个新特征向量。
transform=ToSparseTensor()dataset=dataset.transform(transform)# 这行运行报错! 修改之后代码(自己利用一个名为smiles的xlsx文件运行尝试): importtorchimporttorch_geometricfromtorch_geometric.dataimportDatafromtorch_geometric.transformsimportToSparseTensor smiles=df['smiles']labels=df['reporter']defsmiles_to_...
dataset = KarateClub() print(f'Dataset: {dataset}:') print('===') print(f'Number of graphs: {len(dataset)}') print(f'Number of features: {dataset.num_features}') print(f'Number of classes: {dataset.num_classes}') 1. 2. 3. 4. 5. 6. 7...
dataset.num_features和dataset.num_classes是节点特征数和类别数。接下来,我们实现前向传播函数: def forward(self, data): x, edge_index = data.x, data.edge_index x = self.conv1(x, edge_index) x = torch.relu(x) # 使用ReLU激活函数 x = self.conv2(x, edge_index) return x 在前向传播...