本文轉(zhuǎn)載自:機(jī)器之心 | 編輯:陳萍,、杜偉當(dāng)前最流行和廣泛使用的 GNN 庫(kù) PyG(PyTorch Geometric)現(xiàn)在出 2.0 版本了,,新版本提供了全面的異構(gòu)圖支持、GraphGam 以及很多其他特性,,這一系列改進(jìn),,為使用者帶來(lái)了更好的用戶體驗(yàn)。 PyTorch Geometric(PyG)是一個(gè)構(gòu)建于 PyTorch 之上的庫(kù),,用來(lái)為一系列與結(jié)構(gòu)化數(shù)據(jù)相關(guān)的應(yīng)用編寫(xiě)和訓(xùn)練圖神經(jīng)網(wǎng)絡(luò)(GNN),。PyG 對(duì)機(jī)器學(xué)習(xí)研究者以及機(jī)器學(xué)習(xí)工具包的首次使用者都很友好。就其特征和功能而言,,PyG 具有易用和統(tǒng)一的 API,,用戶花費(fèi)更少的時(shí)間在實(shí)現(xiàn)和運(yùn)行圖神經(jīng)網(wǎng)絡(luò)的底層機(jī)制上,只需要 10 至 20 行代碼就可以訓(xùn)練自定義 GNN 模型,。PyG 涵蓋了大量的 SOTA GNN 架構(gòu)以及訓(xùn)練和可擴(kuò)展流程,,并且易于擴(kuò)展以匹配用戶自己的特定用例或進(jìn)行自己的 GNN 研究。此外,,PyG 中的全新 GraphGym 使得用戶可以輕松地復(fù)現(xiàn) GNN 實(shí)驗(yàn),,執(zhí)行和分析數(shù)千個(gè) GNN 實(shí)驗(yàn),并將自定義模塊嵌入到 GNN 學(xué)習(xí) pipeline 中,。近日,PyG 核心領(lǐng)導(dǎo)者(Core lead)Matthias Fey 宣布 PyG 2.0 版本來(lái)了,!新版本提供了全面的異構(gòu)圖支持,、GraphGam 以及很多其他特性。PyG 2.0 詳情地址:https://github.com/pyg-team/pytorch_geometric/releases/tag/2.0.0PyG 2.0 是一個(gè)新的版本,,提供了復(fù)雜的異構(gòu)圖支持,、GraphGym 集成以及其他新特性。PyG 2.0 中提供了完全的異構(gòu)圖支持,。異構(gòu)圖支持包括數(shù)據(jù)存儲(chǔ)層的完整重寫(xiě)(同時(shí)保持向后兼容性),、異構(gòu)圖轉(zhuǎn)換、通過(guò)鄰采樣的關(guān)系型數(shù)據(jù)加載例程,,以及一整套異構(gòu) GNN 模型 / 示例,。異構(gòu)圖存儲(chǔ):異構(gòu)圖現(xiàn)在可以存儲(chǔ)在它們自己的專用 data.HeteroData 類中,。from torch_geometric.data import HeteroData data = HeteroData() # Create two node types 'paper' and 'author' holding a single feature matrix:
data['paper'].x = torch.randn(num_papers, num_paper_features) data['author'].x = torch.randn(num_authors, num_authors_features) # Create an edge type ('paper', 'written_by', 'author') holding its graph connectivity: data['paper', 'written_by', 'author'].edge_index = ... # [2, num_edges] 異構(gòu) Mini-Batch 加載:異構(gòu)圖可以分別通過(guò) loader.DataLoader 和 loader.NextorLoader 對(duì)許多小的、單個(gè)的巨大圖進(jìn)行轉(zhuǎn)化,,轉(zhuǎn)換成 mini-batches,。這些 loaders 現(xiàn)在可以處理同構(gòu)圖和異構(gòu)圖:from torch_geometric.loader import DataLoaderloader = DataLoader(heterogeneous_graph_dataset, batch_size=32, shuffle=True)from torch_geometric.loader import NeighborLoaderloader = NeighborLoader(heterogeneous_graph, num_neighbors=[30, 30], batch_size=128, input_nodes=('paper', data['paper'].train_mask), shuffle=True) 異構(gòu)圖神經(jīng)網(wǎng)絡(luò):異構(gòu) GNN 現(xiàn)在可以通過(guò) nn.to_hetero、nn.to_hetero_with_bases 從同構(gòu) GNN 輕松創(chuàng)建,。這些進(jìn)程采用現(xiàn)有的 GNN 模型并復(fù)制其消息功能,,以考慮不同的節(jié)點(diǎn)和邊緣類型:from torch_geometric.nn import SAGEConv, to_hetero
class GNN(torch.nn.Module): def __init__(hidden_channels, out_channels): super().__init__() self.conv1 = SAGEConv((-1, -1), hidden_channels) self.conv2 = SAGEConv((-1, -1), out_channels)
def forward(self, x, edge_index): x = self.conv1(x, edge_index).relu() x = self.conv2(x, edge_index) return x
model = GNN(hidden_channels=64, out_channels=dataset.num_classes) model = to_hetero(model, data.metadata(), aggr='sum') 使用 GraphGym 管理實(shí)驗(yàn)PyG 2.0 現(xiàn)在通過(guò) torch_geometric.graphgym 正式支持 GraphGym??偟膩?lái)說(shuō),,GraphGym 是一個(gè)平臺(tái),用于通過(guò)高度模塊化的 pipeline 從配置文件中設(shè)計(jì)和評(píng)估圖神經(jīng)網(wǎng)絡(luò):GraphGym 是開(kāi)始學(xué)習(xí)標(biāo)準(zhǔn)化 GNN 實(shí)現(xiàn)和評(píng)估的最佳平臺(tái),; GraphGym 提供了一個(gè)簡(jiǎn)單的接口來(lái)并行嘗試數(shù)千個(gè) GNN 架構(gòu),,以找到適合特定任務(wù)的最佳設(shè)計(jì); GraphGym 可輕松進(jìn)行超參數(shù)搜索并可視化哪些設(shè)計(jì)選擇更好,。 datasets.AMiner 數(shù)據(jù)集現(xiàn)在返回 data.HeteroData 對(duì)象,;transforms.AddTrainValTestMask 已被替換為 transforms.RandomNodeSplit;由于 data.Data 的存儲(chǔ)布局發(fā)生了顯著變化以支持異構(gòu)圖,,因此需要通過(guò)刪除 root/processed 文件夾來(lái)重新處理已處理的數(shù)據(jù)集,。此外,data.Data.__cat_dim__ ,、 data.Data.__inc__現(xiàn)在需要額外的參數(shù)輸入:def __cat_dim__(self, key, value, *args, **kwargs): passdef __inc__(self, key, value, *args, **kwargs): pass 如果你修改了自定義 data.Data 對(duì)象中的__cat_dim__或__inc__ ,,請(qǐng)確保應(yīng)用上述更改。了解更多變化,,請(qǐng)參考原項(xiàng)目,。PyG 核心團(tuán)隊(duì)共有 6 位成員,包括多特蒙德工業(yè)大學(xué)四年級(jí)圖機(jī)器學(xué)習(xí)博士生 Matthias Fey,、多特蒙德工業(yè)大學(xué)博士生 Jan Eric Lenssen(核心貢獻(xiàn)者)和圖網(wǎng)絡(luò)領(lǐng)域大牛 & 斯坦福計(jì)算機(jī)科學(xué)副教授 Jure Leskovec(擔(dān)任顧問(wèn)),。從左至右依次為 Matthias Fey、Jan Eric Lenssen 和 Jure Leskovec,。此外還有三位華人成員,,分別是斯坦福大學(xué)計(jì)算機(jī)科學(xué)四年級(jí)博士生尤佳軒(Jiaxuan You,核心領(lǐng)導(dǎo)者),、斯坦福大學(xué)計(jì)算機(jī)科學(xué)博士生 Rex Ying(核心貢獻(xiàn)者,,他將于 2022 年加入耶魯大學(xué)擔(dān)任助理教授)和卡內(nèi)基梅隆大學(xué) - 漢斯學(xué)院三年級(jí)博士生趙越(Yue Zhao,核心貢獻(xiàn)者),。從左至右依次為尤佳軒,、Rex Ying 和趙越。日前,趙越在知乎分享了自己參與 PyG 2.0 版本設(shè)計(jì)與升級(jí)過(guò)程中的心得體會(huì),,感興趣的讀者可以參考閱讀,。知乎鏈接:https://www.zhihu.com/pin/1420674585365196800TensorFlow 學(xué)習(xí)資料下載
|