0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

谷歌正式發(fā)布TensorFlow 圖神經(jīng)網(wǎng)絡(luò)

谷歌開(kāi)發(fā)者 ? 來(lái)源:谷歌開(kāi)發(fā)者 ? 作者:谷歌開(kāi)發(fā)者 ? 2022-01-05 13:44 ? 次閱讀

發(fā)布人:Sibon Li、Jan Pfeifer、Bryan Perozzi 和 Douglas Yarrington

日前,我們很高興發(fā)布了 TensorFlow神經(jīng)網(wǎng)絡(luò) (Graph Neural Networks, GNNs),此庫(kù)可以幫助開(kāi)發(fā)者利用 TensorFlow 輕松處理圖結(jié)構(gòu)化數(shù)據(jù)。我們已在 Google 的多個(gè)生產(chǎn)環(huán)境中使用了該庫(kù)的早期版本(例如,垃圾郵件和異常檢測(cè)、數(shù)據(jù)流量估計(jì)、YouTube 內(nèi)容標(biāo)簽),并作為可擴(kuò)容的圖挖掘管道的一個(gè)組成部分。特別是,鑒于 Google 的數(shù)據(jù)類(lèi)型繁多,我們的庫(kù)在設(shè)計(jì)時(shí)就考慮到了異構(gòu)圖。發(fā)布此庫(kù)的初衷是為了鼓勵(lì)與業(yè)界研究人員的合作。

TensorFlow 圖神經(jīng)網(wǎng)絡(luò)

https://github.com/tensorflow/gnn

為何使用 GNNs?

在現(xiàn)實(shí)世界和我們的工程系統(tǒng)中,“圖”無(wú)處不在。一組物體、地點(diǎn)或人以及它們之間的聯(lián)系通常都可以用圖來(lái)表述。通常情況下,我們?cè)?a target="_blank">機(jī)器學(xué)習(xí)問(wèn)題中看到的數(shù)據(jù)是結(jié)構(gòu)化或關(guān)系化的,因此也可以用圖來(lái)表述。雖然關(guān)于 GNNs 的基礎(chǔ)研究可能只有幾十年的歷史,但當(dāng)代 GNNs 最近取得的功能進(jìn)展已經(jīng)幫助推動(dòng)了多個(gè)領(lǐng)域的進(jìn)步,其中包括數(shù)據(jù)流量預(yù)測(cè)、謠言和假新聞檢測(cè)、疾病傳播建模、物理學(xué)模擬和理解分子有氣味的原因等。

數(shù)據(jù)流量預(yù)測(cè)

https://deepmind.com/blog/article/traffic-prediction-with-advanced-graph-neural-networks

謠言和假新聞檢測(cè)

https://arxiv.org/abs/2108.03548

疾病傳播建模

https://arxiv.org/abs/2007.03113

物理學(xué)模擬

http://proceedings.mlr.press/v80/sanchez-gonzalez18a/sanchez-gonzalez18a.pdf

理解分子有氣味的原因

https://arxiv.org/abs/1910.10685

圖可以對(duì)多種不同類(lèi)型數(shù)據(jù)之間的關(guān)系進(jìn)行建模,

包括網(wǎng)頁(yè)(左)、社交關(guān)系(中)或分子(右)等

圖代表了一組實(shí)體(節(jié)點(diǎn)或頂點(diǎn))之間的關(guān)系(邊)。我們可以通過(guò)描述每個(gè)節(jié)點(diǎn)、邊或整個(gè)圖的特征,從而將信息存儲(chǔ)在圖的每一塊中。此外,我們還可以賦予邊方向性,來(lái)描述信息或數(shù)據(jù)流,等等。

若這些圖有多個(gè)特征,則可以用 GNNs 來(lái)解決這類(lèi)問(wèn)題。通過(guò)圖層級(jí)的研究,我們嘗試預(yù)測(cè)整個(gè)圖的特征。我們可以識(shí)別某些“形狀”的存在,如圖中的圓圈,可能代表亞分子,也可能代表密切的社會(huì)關(guān)系。GNNs 可以用于節(jié)點(diǎn)級(jí)的任務(wù),對(duì)圖的節(jié)點(diǎn)進(jìn)行分類(lèi),并預(yù)測(cè)圖中的分區(qū)和相似性,類(lèi)似于圖像分類(lèi)或分割。最后,我們可以在邊層級(jí)上使用 GNNs 來(lái)發(fā)現(xiàn)實(shí)體之間的聯(lián)系,或許可以使用 GNNs 來(lái)“修剪”邊,以確定場(chǎng)景中對(duì)象的狀態(tài)。

結(jié)構(gòu)

TF-GNN 提供了基本模塊,以便在 TensorFlow 中實(shí)現(xiàn) GNN 模型。除了建模 API,我們的庫(kù)還針對(duì)處理圖數(shù)據(jù)的困難任務(wù)提供了大量的工具:基于 Tensor 的圖數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)處理管道,以及一些供用戶(hù)快速上手的示例模型。

組成工作流的各種 TF-GNN 組件

TF-GNN庫(kù)的初始版本包含一些實(shí)用程序和功能,初學(xué)者和有經(jīng)驗(yàn)的用戶(hù)都能使用,其中包括:

TF-GNN 庫(kù)

https://github.com/tensorflow/gnn

高階 Keras 式 API,用于創(chuàng)建 GNN 模型,可以輕松地與其他類(lèi)型的模型組合。GNNs 經(jīng)常與排名、深度檢索(雙編碼器)結(jié)合使用或與其他類(lèi)型的模型(圖像、文本等)混合使用。

用于異構(gòu)圖的 GNN API。我們?cè)?Google 和現(xiàn)實(shí)世界中處理的許多圖問(wèn)題都包含不同類(lèi)型的節(jié)點(diǎn)和邊。因此,我們選擇提供一種簡(jiǎn)單的方法來(lái)對(duì)此建模。

定義明確的架構(gòu),用于聲明圖的拓?fù)?,以及?yàn)證架構(gòu)的工具。此架構(gòu)描述了其訓(xùn)練數(shù)據(jù)的形狀,并用于指導(dǎo)其他工具。

GraphTensor 復(fù)合張量類(lèi)型,它持有圖數(shù)據(jù),可以分批處理,還有圖操作例程可用。

關(guān)于 GraphTensor 結(jié)構(gòu)的操作庫(kù):

對(duì)節(jié)點(diǎn)和邊的各種有效的廣播和池化運(yùn)算,以及相關(guān)工具。

標(biāo)準(zhǔn)并入的卷積庫(kù),ML 工程師/研究人員可以輕松地對(duì)其進(jìn)行擴(kuò)展。

高階 API,幫助產(chǎn)品工程師快速構(gòu)建 GNN 模型,而不必?fù)?dān)心其細(xì)節(jié)問(wèn)題。

磁盤(pán)上的圖形訓(xùn)練數(shù)據(jù)的編碼,以及用來(lái)將該數(shù)據(jù)解析為數(shù)據(jù)結(jié)構(gòu)的庫(kù),您的模型可以從該庫(kù)中提取各種特征。

示例用法

在下面的例子中,我們使用 TF-GNN Keras API 構(gòu)建一個(gè)模型,根據(jù)用戶(hù)觀看的內(nèi)容和喜歡的類(lèi)型向其推薦電影。

我們使用 ConvGNNBuilder 方法來(lái)指定邊類(lèi)型和節(jié)點(diǎn)配置,即對(duì)邊使用 WeightedSumConvolution(定義如下)。每次通過(guò) GNN 時(shí),我們將通過(guò) Dense 互連層來(lái)更新節(jié)點(diǎn)值:

import tensorflow as tf
    import tensorflow_gnn as tfgnn

    # Model hyper-parameters:
    h_dims = {'user': 256, 'movie': 64, 'genre': 128}

    # Model builder initialization:
    gnn = tfgnn.keras.ConvGNNBuilder(
      lambda edge_set_name: WeightedSumConvolution(),
      lambda node_set_name: tfgnn.keras.layers.NextStateFromConcat(
         tf.keras.layers.Dense(h_dims[node_set_name]))
    )

    # Two rounds of message passing to target node sets:
    model = tf.keras.models.Sequential([
        gnn.Convolve({'genre'}),  # sends messages from movie to genre
        gnn.Convolve({'user'}),  # sends messages from movie and genre to users
        tfgnn.keras.layers.Readout(node_set_name="user"),
        tf.keras.layers.Dense(1)
    ])

以上代碼很好用,但有時(shí)我們可能想要為 GNNs 使用更強(qiáng)大的自定義模型架構(gòu)。例如,在之前的用例中,我們可能想指定某些電影或類(lèi)型,讓它們?cè)谖覀冞M(jìn)行推薦時(shí)擁有更多權(quán)重。在下列片段中,我們用自定義圖卷積定義了一個(gè)更高級(jí)的 GNN,例子中使用的是加權(quán)邊。我們定義了 WeightedSumConvolution 類(lèi)來(lái)匯集邊值,讓其作為所有邊的權(quán)重之和:

class WeightedSumConvolution(tf.keras.layers.Layer):
  """Weighted sum of source nodes states."""

  def call(self, graph: tfgnn.GraphTensor,
           edge_set_name: tfgnn.EdgeSetName) -> tfgnn.Field:
    messages = tfgnn.broadcast_node_to_edges(
        graph,
        edge_set_name,
        tfgnn.SOURCE,
        feature_name=tfgnn.DEFAULT_STATE_NAME)
    weights = graph.edge_sets[edge_set_name]['weight']
    weighted_messages = tf.expand_dims(weights, -1) * messages
    pooled_messages = tfgnn.pool_edges_to_node(
        graph,
        edge_set_name,
        tfgnn.TARGET,
        reduce_type='sum',
        feature_value=weighted_messages)
    return pooled_messages

請(qǐng)注意,盡管卷積的編寫(xiě)只考慮了源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn),但 TF-GNN 保障了其適用性,讓其能夠在異構(gòu)圖(有各種類(lèi)型的節(jié)點(diǎn)和邊)上無(wú)縫工作。

更多信息

您可以查看 TF-GNNGitHub repo,以獲得更多信息。

GitHub repo

https://github.com/tensorflow/gnn

歡迎加入 TensorFlow 論壇,隨時(shí)關(guān)注 TensorFlow 博客、Twitter 或 YouTube,獲悉最新消息。

TensorFlow 論壇

https://discuss.tensorflow.google.cn/

博客

https://blog.tensorflow.google.cn/

Twitter

http://twitter.com/tensorflow

YouTube

http://youtube.com/tensorflow

您還可以通過(guò) Community Spotlight 計(jì)劃向我們提交作品,分享您的構(gòu)建成果。如需提供反饋,您可以在 GitHub 上提交問(wèn)題。我們歡迎您的貢獻(xiàn)和參與,謝謝!

Community Spotlight 計(jì)劃

http://goo.gle/TFCS

GitHub

https://github.com/tensorflow/gnn/issues

致謝

本文所介紹的研究來(lái)自以下各位的合作成果:來(lái)自 Google 的 Oleksandr Ferludin?、Martin Blais、Jan Pfeifer?、Arno Eigenwillig、Dustin Zelle、Bryan Perozzi 和 Da-Cheng Juan,以及來(lái)自 DeepMind 的 Sibon Li、Alvaro Sanchez-Gonzalez、Peter Battaglia、Kevin Villela、Jennifer She 和 David Wong。

原文標(biāo)題:推出 TensorFlow 圖神經(jīng)網(wǎng)絡(luò) (GNNs)

文章出處:【微信公眾號(hào):谷歌開(kāi)發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

審核編輯:彭菁

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 谷歌
    +關(guān)注

    關(guān)注

    27

    文章

    6211

    瀏覽量

    106520
  • 神經(jīng)網(wǎng)絡(luò)

    關(guān)注

    42

    文章

    4789

    瀏覽量

    101613
  • 開(kāi)發(fā)者
    +關(guān)注

    關(guān)注

    1

    文章

    601

    瀏覽量

    17175

原文標(biāo)題:推出 TensorFlow 圖神經(jīng)網(wǎng)絡(luò) (GNNs)

文章出處:【微信號(hào):Google_Developers,微信公眾號(hào):谷歌開(kāi)發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    TF之CNN:Tensorflow構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)CNN的嘻嘻哈哈事之詳細(xì)攻略

    TF之CNN:Tensorflow構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)CNN的嘻嘻哈哈事之詳細(xì)攻略
    發(fā)表于 12-19 17:03

    【PYNQ-Z2試用體驗(yàn)】神經(jīng)網(wǎng)絡(luò)基礎(chǔ)知識(shí)

    超過(guò)閾值,輸出就一躍而起。但我們一般用S函數(shù)作為激活函數(shù)。如下圖:2 該函數(shù)相比階越函數(shù)更加接近現(xiàn)實(shí)。神經(jīng)網(wǎng)絡(luò)原理如圖所示是一個(gè)具有兩層的神經(jīng)網(wǎng)絡(luò),每層有兩個(gè)神經(jīng)元。
    發(fā)表于 03-03 22:10

    發(fā)布MCU上跑的輕量神經(jīng)網(wǎng)絡(luò)包 NNoM, 讓MCU也神經(jīng)一把

    神經(jīng)網(wǎng)絡(luò)包。AIoT那么火,為何大家卻止步于科普文?因?yàn)楝F(xiàn)成的機(jī)器學(xué)習(xí)框架都太復(fù)雜太難用。NNoM從一開(kāi)始就被設(shè)計(jì)成提供給嵌入式大佬們的一個(gè)簡(jiǎn)單易用的神經(jīng)網(wǎng)絡(luò)框架。你不需要會(huì)TensorFlow
    發(fā)表于 05-01 19:03

    卷積神經(jīng)網(wǎng)絡(luò)如何使用

    卷積神經(jīng)網(wǎng)絡(luò)(CNN)究竟是什么,鑒于神經(jīng)網(wǎng)絡(luò)在工程上經(jīng)歷了曲折的歷史,您為什么還會(huì)在意它呢? 對(duì)于這些非常中肯的問(wèn)題,我們似乎可以給出相對(duì)簡(jiǎn)明的答案。
    發(fā)表于 07-17 07:21

    【案例分享】ART神經(jīng)網(wǎng)絡(luò)與SOM神經(jīng)網(wǎng)絡(luò)

    今天學(xué)習(xí)了兩個(gè)神經(jīng)網(wǎng)絡(luò),分別是自適應(yīng)諧振(ART)神經(jīng)網(wǎng)絡(luò)與自組織映射(SOM)神經(jīng)網(wǎng)絡(luò)。整體感覺(jué)不是很難,只不過(guò)一些最基礎(chǔ)的概念容易理解不清。首先ART神經(jīng)網(wǎng)絡(luò)是競(jìng)爭(zhēng)學(xué)習(xí)的一個(gè)代表,
    發(fā)表于 07-21 04:30

    TensorFlow是什么

    更長(zhǎng)。TensorFlow 使這一切變得更加簡(jiǎn)單快捷,從而縮短了想法到部署之間的實(shí)現(xiàn)時(shí)間。在本教程中,你將學(xué)習(xí)如何利用 TensorFlow 的功能來(lái)實(shí)現(xiàn)深度神經(jīng)網(wǎng)絡(luò)。TensorFlow
    發(fā)表于 07-22 10:14

    【AI學(xué)習(xí)】第3篇--人工神經(jīng)網(wǎng)絡(luò)

    `本篇主要介紹:人工神經(jīng)網(wǎng)絡(luò)的起源、簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)模型、更多神經(jīng)網(wǎng)絡(luò)模型、機(jī)器學(xué)習(xí)的步驟:訓(xùn)練與預(yù)測(cè)、訓(xùn)練的兩階段:正向推演與反向傳播、以TensorFlow + Excel表達(dá)訓(xùn)練流程
    發(fā)表于 11-05 17:48

    如何移植一個(gè)CNN神經(jīng)網(wǎng)絡(luò)到FPGA中?

    二次開(kāi)發(fā)。移植一個(gè)神經(jīng)網(wǎng)絡(luò)到Lattice FPGA上可以分為三步:第一步:使用Tensorflow, Caffe, Keras訓(xùn)練自己的網(wǎng)絡(luò)。(這里L(fēng)attice官網(wǎng)的參考設(shè)計(jì)提供了訓(xùn)練網(wǎng)絡(luò)
    發(fā)表于 11-26 07:46

    如何構(gòu)建神經(jīng)網(wǎng)絡(luò)?

    原文鏈接:http://tecdat.cn/?p=5725 神經(jīng)網(wǎng)絡(luò)是一種基于現(xiàn)有數(shù)據(jù)創(chuàng)建預(yù)測(cè)的計(jì)算系統(tǒng)。如何構(gòu)建神經(jīng)網(wǎng)絡(luò)?神經(jīng)網(wǎng)絡(luò)包括:輸入層:根據(jù)現(xiàn)有數(shù)據(jù)獲取輸入的層隱藏層:使用反向傳播優(yōu)化輸入變量權(quán)重的層,以提高模型的預(yù)測(cè)
    發(fā)表于 07-12 08:02

    如何使用TensorFlow神經(jīng)網(wǎng)絡(luò)模型部署到移動(dòng)或嵌入式設(shè)備上

    有很多方法可以將經(jīng)過(guò)訓(xùn)練的神經(jīng)網(wǎng)絡(luò)模型部署到移動(dòng)或嵌入式設(shè)備上。不同的框架在各種平臺(tái)上支持Arm,包括TensorFlow、PyTorch、Caffe2、MxNet和CNTK,如Android
    發(fā)表于 08-02 06:43

    TensorFlow寫(xiě)個(gè)簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)

    這次就用TensorFlow寫(xiě)個(gè)神經(jīng)網(wǎng)絡(luò),這個(gè)神經(jīng)網(wǎng)絡(luò)寫(xiě)的很簡(jiǎn)單,就三種層,輸入層--隱藏層----輸出層;
    的頭像 發(fā)表于 03-23 15:37 ?5233次閱讀
    用<b class='flag-5'>TensorFlow</b>寫(xiě)個(gè)簡(jiǎn)單的<b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>

    如何使用Numpy搭建神經(jīng)網(wǎng)絡(luò)

    很多同學(xué)入門(mén)機(jī)器學(xué)習(xí)之后,直接用TensorFlow調(diào)包實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò),對(duì)于神經(jīng)網(wǎng)絡(luò)內(nèi)在機(jī)理知之甚少。
    的頭像 發(fā)表于 05-18 11:02 ?3674次閱讀
    如何使用Numpy搭建<b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>

    推出 TensorFlow 神經(jīng)網(wǎng)絡(luò) (GNNs)

    發(fā)布人:Sibon Li、Jan Pfeifer、Bryan Perozzi 和 Douglas Yarrington 日前,我們很高興發(fā)布TensorFlow
    的頭像 發(fā)表于 01-05 13:44 ?1325次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)的應(yīng)用分析

    【源碼】卷積神經(jīng)網(wǎng)絡(luò)Tensorflow文本分類(lèi)中的應(yīng)用
    發(fā)表于 11-14 11:15 ?648次閱讀

    使用TensorFlow進(jìn)行神經(jīng)網(wǎng)絡(luò)模型更新

    使用TensorFlow進(jìn)行神經(jīng)網(wǎng)絡(luò)模型的更新是一個(gè)涉及多個(gè)步驟的過(guò)程,包括模型定義、訓(xùn)練、評(píng)估以及根據(jù)新數(shù)據(jù)或需求進(jìn)行模型微調(diào)(Fine-tuning)或重新訓(xùn)練。下面我將詳細(xì)闡述這個(gè)過(guò)程,并附上相應(yīng)的TensorFlow代碼
    的頭像 發(fā)表于 07-12 11:51 ?565次閱讀