PyTorch Geometric 图神经网络:自定义数据集和模型训练
使用自定义特征和边连接数据训练图神经网络模型本教程将指导您如何修改代码以使用新的输入特征和边连接文件。步骤1:更新 MyDataset 类为了适应新的输入特征和边连接文件,需要更新 MyDataset 类。以下是更新后的代码:pythonclass MyDataset(torch.utils.data.Dataset): def init(self, root, transform=None, pre_transform=None): self.features = pd.read_csv(os.path.join(root, 'images_flatten', 'i.txt_j.txt'), header=None, sep=' ') self.edges = pd.read_csv(os.path.join(root, 'input', 'edges_L.csv'), header=None) self.labels = pd.read_csv(os.path.join(root, 'labels.csv'), header=None) self.transform = transform self.pre_transform = pre_transform def len(self): return len(self.labels) def getitem(self, idx): edge_index = torch.tensor(self.edges.values, dtype=torch.long).t().contiguous() x = torch.tensor(self.features.iloc[idx].values, dtype=torch.float) y = torch.tensor(self.labels.iloc[idx].values, dtype=torch.long) train_mask = torch.zeros(y.size(0), dtype=torch.bool) val_mask = torch.zeros(y.size(0), dtype=torch.bool) train_mask[:16] = 1 val_mask[16:] = 1 data = Data(x=x, edge_index=edge_index, y=y, train_mask=train_mask, val_mask=val_mask) if self.transform is not None: data = self.transform(data) return data解释:- 该代码从 'images_flatten' 文件夹中读取 'i.txt_j.txt' 文件,其中 i 表示图片编号,j 表示节点编号。该文件包含 900 个特征值,用空格隔开。- 从 'input' 文件夹中读取 'edges_L.csv' 文件,该文件包含边的连接关系。- labels.csv 文件包含节点的标签。- __getitem__ 函数从 features DataFrame 中获取索引为 idx 的行,将其转换为 torch.Tensor,并将 edge_index、y、train_mask 和 val_mask 一起封装成 Data 对象返回。步骤2:更新根目录路径将 'C:/Users/jh/Desktop/data' 替换为您实际的根目录路径。步骤3:运行代码完成上述步骤后,您可以运行代码,并观察其使用新的输入特征和边连接文件训练模型的效果。注意:- 新的输入特征文件格式为 'i.txt_j.txt',其中 i 表示图片编号,j 表示节点编号。- edges_L.csv 文件包含边的连接关系,其格式应与之前一致。- 您可以根据需要调整训练参数,例如 epochs 数,优化器参数等。
原文地址: https://www.cveoy.top/t/topic/T89 著作权归作者所有。请勿转载和采集!