日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DGL教程【五】使用自己的数据集

發布時間:2024/9/18 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DGL教程【五】使用自己的数据集 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如果想構建自己的數據集,應該繼承dgl.data.DGLDataset類,并且實現下面的方法:

  • __getitem__(self,i):得到數據集的第i個數據,
  • __len__(self):數據集的大小
  • process(self):從硬盤加載和處理原始數據

這里使用一個小數據集Zachary’s Karate Club network,包含:

  • menbers.csv文件包含每個成員的屬性
  • interactions.csv文件包含兩個成員的關系
import urllib.request import pandas as pd urllib.request.urlretrieve('https://data.dgl.ai/tutorial/dataset/members.csv', './members.csv') urllib.request.urlretrieve('https://data.dgl.ai/tutorial/dataset/interactions.csv', './interactions.csv')members = pd.read_csv('./members.csv') members.head()interactions = pd.read_csv('./interactions.csv') interactions.head()

我們將成員視作節點,關系視作邊,年齡視作節點的屬性,加入的club作為節點的標簽,邊的權重作為變的屬性:

import pandas as pd import dgl from dgl.data import DGLDataset import torch import osclass KarateClubDataset(DGLDataset):def __init__(self):super().__init__(name='karate_club')def process(self):nodes_data = pd.read_csv('./karate/members.csv')edges_data = pd.read_csv('./karate/interactions.csv')node_features = torch.from_numpy(nodes_data['Age'].to_numpy())node_labels = torch.from_numpy(nodes_data['Club'].astype('category').cat.codes.to_numpy()) # 將Club屬性變為category類型,往往作為label 并且轉為0,1edge_features = torch.from_numpy(edges_data['Weight'].to_numpy())edges_src = torch.from_numpy(edges_data['Src'].to_numpy())edges_dst = torch.from_numpy(edges_data['Dst'].to_numpy())self.graph = dgl.graph((edges_src, edges_dst), num_nodes=nodes_data.shape[0])self.graph.ndata['feat'] = node_featuresself.graph.ndata['label'] = node_labelsself.graph.edata['weight'] = edge_features# If your dataset is a node classification dataset, you will need to assign# masks indicating whether a node belongs to training, validation, and test set.n_nodes = nodes_data.shape[0]n_train = int(n_nodes * 0.6)n_val = int(n_nodes * 0.2)train_mask = torch.zeros(n_nodes, dtype=torch.bool)val_mask = torch.zeros(n_nodes, dtype=torch.bool)test_mask = torch.zeros(n_nodes, dtype=torch.bool)train_mask[:n_train] = Trueval_mask[n_train:n_train + n_val] = Truetest_mask[n_train + n_val:] = Trueself.graph.ndata['train_mask'] = train_maskself.graph.ndata['val_mask'] = val_maskself.graph.ndata['test_mask'] = test_maskdef __getitem__(self, i):return self.graphdef __len__(self):return 1dataset = KarateClubDataset() graph = dataset[0]print(graph)

總結

以上是生活随笔為你收集整理的DGL教程【五】使用自己的数据集的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。