dgl資料集的儲存和載入使用
阿新 • • 發佈:2020-12-30
技術標籤:dgl
DGL建議使用者實現儲存和載入資料的函式,將處理後的資料快取在本地磁碟中。 這樣在多數情況下可以幫使用者節省大量的資料處理時間。DGL提供了4個函式讓任務變得簡單。
-
dgl.save_graphs()
和dgl.load_graphs()
: 儲存DGLGraph物件和標籤到本地磁碟和從本地磁碟讀取它們。 -
dgl.data.utils.save_info()
和dgl.data.utils.load_info()
: 將資料集的有用資訊(python dict物件)儲存到本地磁碟和從本地磁碟讀取它們。
下面的示例顯示瞭如何儲存和讀取圖和資料集資訊的列表。
import os from dgl import save_graphs, load_graphs from dgl.data.utils import makedirs, save_info, load_info def save(self): # 儲存圖和標籤 graph_path = os.path.join(self.save_path, self.mode + '_dgl_graph.bin') save_graphs(graph_path, self.graphs, {'labels': self.labels}) # 在Python字典裡儲存其他資訊 info_path = os.path.join(self.save_path, self.mode + '_info.pkl') save_info(info_path, {'num_classes': self.num_classes}) def load(self): # 從目錄 `self.save_path` 裡讀取處理過的資料 graph_path = os.path.join(self.save_path, self.mode + '_dgl_graph.bin') self.graphs, label_dict = load_graphs(graph_path) self.labels = label_dict['labels'] info_path = os.path.join(self.save_path, self.mode + '_info.pkl') self.num_classes = load_info(info_path)['num_classes'] def has_cache(self): # 檢查在 `self.save_path` 裡是否有處理過的資料檔案 graph_path = os.path.join(self.save_path, self.mode + '_dgl_graph.bin') info_path = os.path.join(self.save_path, self.mode + '_info.pkl') return os.path.exists(graph_path) and os.path.exists(info_path)
請注意:有些情況下不適合儲存處理過的資料。例如,在內建資料集GDELTDataset
中, 處理過的資料比較大。所以這個時候,在__getitem__(idx)
中處理每個資料例項是更高效的方法。
參考
https://docs.dgl.ai/guide_cn/data-savenload.html#guide-cn-data-pipeline-savenload