Google發布的第二代深度學習係統TensorFlow

VIP內容

【導讀】圖神經網絡是近幾年大家關注的熱點之一。如何快速地實現各種GNN模型並構建你自己的GNN?缺乏一種統一有效的工具。最近來自專知團隊胡博士開源了 tf_geometric(tfg)是一個高效且友好的圖神經網絡庫,同時支持TensorFlow 1.x 和 2.x。tfg同時提供麵向對象接口(OOP API)和函數式接口(Functional API),可以用它們來構建有趣的GNN模型。 tf_geometric(tfg)已在Github開源,相關論文被ACM Multimedia 2021 Open Source Software Competition接受!

tf_geometric簡介

tf_geometric(tfg)是一個高效且友好的圖神經網絡(GNN)庫,同時支持TensorFlow 1.x 和 2.x。

Github主頁:*https://github.com/CrawlScript/tf_geometric

**開發文檔: **https://tf-geometric.readthedocs.io

論文:《Efficient Graph Deep Learning in TensorFlow with tf_geometric》 (https://arxiv.org/abs/2101.11552,已被ACM Multimedia 2021 Open Source Software Competition接收)

tf_geometric總體架構

下圖展示了tf_geometric的框架。從框架圖可以看出,tfg提供了用於構建圖神經網絡的內核(Kernel),同時也提供了許多流行的GNN模型的具體實現。

tf_geometric Kernel: tfg內核包含用於構建高效GNN的各種基礎設施,例如圖數據結構、圖map-reduce框架、圖mini-batch策略等,這些基礎設施使得tfg可以支持單圖計算、多圖計算、圖mini-batch、分布式訓練等。在內核的基礎上,tfg實現了多種麵向不同任務的GNN模型。

OOP and Functional API: tfg同時提供了麵向對象(OOP)和函數式(Functional)接口。目前一些流行的GNN框架如PyG、DGL等主要支持OOP API,缺乏對Functional API的支持。Functional API的欠缺使得這些GNN框架難以應對一些進階的GNN任務(如Graph Meta-learning)。tfg對Functional API有非常好的支持,因此可以靈活地使用tfg構建各種複雜的GNN模型。

Other API: 為了方便GNN的實現,tfg還提供了許多工具類,如數據集自動管理(現成數據集、數據集自動下載、解壓、預處理等)、圖采樣等。

tf_geometric的圖數據結構

tfg提供了非常友好且高效的圖數據結構,可以支持高效的單圖和多圖GNN計算。值得注意的是,tfg提供的圖數據結構同時支持TensorFlow和numpy,因此即使用戶在使用PyG等PyTorch GNN框架,也可以使用tfg的圖數據結構(使用numpy模式)來高效友好地進行單圖、多圖數據的組織。

下圖簡單展示了tfg的兩種圖數據結構:tfg.Graph(單圖)和tfg.BatchGraph(多圖),通過簡單的語句tfg.BatchGraph.from_graphs([graph0, graph1, graph2])就可以輕鬆將三個單圖虛擬成一個大圖(tfg.BatchGraph),在大圖上使用GCN、GAT等模型等價於在每個單圖上分別這些GNN(即圖mini-batch)。另外,可以在tfg.BatchGraph上直接執行各種圖池化(Graph Pooling)操作,以並行對多個單圖進行圖池化。

tf_geometric的圖map-reduce

許多GNN模型都可以看成是一個map-reduce計算流,其中map對應變換(Transformation)操作,reduce對應聚合(Aggregation)操作。實現高效GNN的關鍵之一是如何在不規整且稀疏的圖數據上進行高效地聚合(基於鄰節點的消息傳播、圖池化等):

示例—消息傳播:

示例—圖池化:

明顯,由於圖數據的不規整性和稀疏性,上述操作難以用深度學習框架提供的常規的基於矩陣的聚合操作(如tf.reduce_mean)等實現。為此,tfg借助了TensorFlow中處理不規整稀疏數據的tf.math.segment_xxxx操作實現了各種高層的麵向圖數據的reduce操作。如下圖所示,tf.math.segment_sum可以在不規整稀疏數據上根據索引號進行加法聚合。

tfg基於tf.math.segment_xxxx提供的若幹基本接口,構建了一些高級reduce方法。例如tfg實現了segment_softmax方法,它可以在圖數據中,為每個節點的鄰節點進行softmax歸一化操作(如下圖所示):

高效且友好的API

tf_geometric使用消息傳遞機製來實現圖神經網絡:相比於基於稠密矩陣的實現,它具有更高的效率;相比於基於稀疏矩陣的實現,它具有更友好的API。除此之外,tf_geometric還為複雜的圖神經網絡操作提供了簡易優雅的API。下麵的示例展現了使用tf_geometric構建一個圖結構的數據,並使用多頭圖注意力網絡(Multi-head GAT)對圖數據進行處理的流程:

運行結果:

開箱即用的Demo

tfg提供了許多開箱即用的Demo,這些Demo不僅複現了原文中的效果,還具有非常高的執行效率(充分利用了tf.function的性能優化):

一鍵安裝

tfg對係統、環境等沒有特殊的要求,一般能夠運行Python 3.5+且能夠運行TensorFlow的環境就可以使用pip一鍵安裝tfg。

更多詳細介紹

更多關於tf_geometric的詳細介紹,可以訪問項目的Github首頁、開發文檔和論文進行了解。

Github主頁:https://github.com/CrawlScript/tf_geometric

開發文檔:https://tf-geometric.readthedocs.io

論文: 《Efficient Graph Deep Learning in TensorFlow with tf_geometric》 (https://arxiv.org/abs/2101.11552,已被ACMMultimedia 2021 Open Source Software Competition接收)

參考鏈接:

https://github.com/CrawlScript/tf_geometric

https://tf-geometric.readthedocs.io

https://arxiv.org/abs/2101.11552

https://www.tensorflow.org/api_docs/python/tf/math/segment_sum

作者介紹:

胡博士,中國科學院自動化研究所博士後,研究方向為社會多媒體網絡表示學習,已經在包括CCF-A ACM Multimedia等多媒體領域多個頂級會議期刊發表論文多篇。專知技術負責人。Java主流開源爬蟲WebCollector作者,Github 2800+ Stars。

https://github.com/CrawlScript

成為VIP會員查看完整內容
0
19
0

最新論文

We introduce pygrank, an open source Python package to define, run and evaluate node ranking algorithms. We provide object-oriented and extensively unit-tested algorithm components, such as graph filters, post-processors, measures, benchmarks and online tuning. Computations can be delegated to numpy, tensorflow or pytorch backends and fit in back-propagation pipelines. Classes can be combined to define interoperable complex algorithms. Within the context of this paper we compare the package with related alternatives and demonstrate its flexibility and ease of use with code examples.

0
0
0
下載
預覽
Top