欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PyG搭建GCN需要準備的數據格式

 更新時間:2022年05月10日 15:20:58   作者:Cyril_KI  
這篇文章主要為大家介紹了PyG搭建GCN前需要準備的PyG數據格式,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

前言

有關GCN的原理可以參考:GCN圖卷積神經網絡原理

一開始是打算手寫一下GCN,畢竟原理也不是很難,但想了想還是直接調包吧。在使用各種深度學習框架時我們首先需要知道的是框架內的數據集結構,因此這篇文章主要講講PyG中的數據結構。

1. PyG數據集

原始論文中使用的數據集:

本篇文章使用Citeseer網絡。Citeseer網絡是一個引文網絡,節(jié)點為論文,一共3327篇論文。論文一共分為六類:Agents、AI(人工智能)、DB(數據庫)、IR(信息檢索)、ML(機器語言)和HCI。如果兩篇論文間存在引用關系,那么它們之間就存在鏈接關系。

使用PyG加載數據集:

data = Planetoid(root='/data/CiteSeer', name='CiteSeer')
print(len(data))

輸出:

1

CiteSeer中只有一個網絡,然后我們輸出一下這個網絡:

data = data[0]
print(data)
print(data.is_directed())

輸出:

Data(x=[3327, 3703], edge_index=[2, 9104], y=[3327], train_mask=[3327], val_mask=[3327], test_mask=[3327])
False

x=[3327, 3703]。表示一共有3327個節(jié)點,然后節(jié)點的特征維度為3703,這里實際上是去除停用詞和在文檔中出現頻率小于10次的詞,整理得到3703個唯一詞。

edge_index=[2, 9104],表示一共9104條edge。數據一共兩行,每一行都表示節(jié)點編號。

輸出一下data.y:

tensor([3, 1, 5, ..., 3, 1, 5])tensor([3, 1, 5,  ..., 3, 1, 5])

data.y表示節(jié)點的標簽編號,比如3表示該篇論文屬于第3類。

輸出data.train_mask:

tensor([ True, True, True, ..., False, False, False])

data.train_mask的長度和y的長度一致,如果某個位置為True就表示該樣本為訓練樣本。val_mask和test_mask類似,分別表示驗證集和訓練集。

比如我們輸出:

print(data.y[data.test_mask])

結果為:

tensor([4, 5, 4, 4, 4, 1, 4, 2, 3, 3, 3, 3, 2, 3, 3, 4, 2, 0, 1, 2, 0, 3, 3, 4,
        2, 4, 0, 4, 3, 3, 3, 5, 4, 5, 4, 5, 1, 1, 3, 3, 3, 3, 3, 1, 2, 3, 3, 3,
        1, 2, 2, 3, 3, 1, 5, 5, 5, 3, 2, 3, 3, 3, 3, 3, 3, 3, 5, 1, 3, 1, 1, 4,
        1, 3, 3, 1, 3, 3, 2, 4, 3, 3, 3, 1, 2, 2, 2, 3, 5, 2, 1, 3, 2, 2, 2, 4,
        3, 3, 4, 0, 3, 1, 2, 2, 2, 2, 3, 2, 2, 2, 1, 1, 5, 2, 2, 1, 2, 4, 3, 1,
        1, 3, 2, 3, 4, 3, 3, 4, 4, 3, 2, 2, 1, 3, 4, 4, 4, 4, 4, 4, 5, 0, 3, 1,
        1, 3, 1, 3, 1, 3, 4, 4, 3, 2, 3, 5, 3, 3, 3, 4, 2, 2, 2, 5, 3, 1, 0, 3,
        2, 5, 2, 3, 2, 4, 2, 2, 2, 0, 5, 1, 3, 4, 4, 4, 1, 1, 5, 1, 2, 0, 1, 0,
        2, 2, 3, 3, 3, 3, 5, 4, 4, 3, 1, 1, 2, 1, 2, 2, 2, 2, 5, 0, 1, 2, 2, 4,
        0, 4, 1, 1, 2, 3, 1, 1, 2, 3, 3, 5, 2, 5, 5, 3, 1, 0, 5, 5, 5, 5, 3, 3,
        3, 0, 4, 5, 3, 4, 5, 4, 5, 2, 0, 5, 5, 5, 1, 1, 3, 1, 2, 2, 2, 3, 2, 4,
        5, 3, 3, 1, 3, 1, 2, 2, 1, 3, 1, 3, 1, 2, 1, 2, 1, 2, 2, 2, 2, 5, 4, 4,
        5, 0, 3, 4, 5, 4, 4, 4, 4, 4, 0, 0, 1, 4, 1, 1, 5, 0, 2, 2, 3, 3, 2, 2,
        0, 0, 3, 2, 4, 1, 1, 0, 0, 1, 2, 2, 2, 2, 2, 0, 4, 0, 1, 4, 1, 1, 2, 2,
        3, 3, 1, 3, 2, 4, 4, 0, 0, 3, 4, 4, 2, 2, 2, 5, 5, 2, 5, 5, 5, 5, 4, 0,
        2, 2, 0, 2, 4, 5, 4, 0, 3, 3, 5, 3, 3, 4, 2, 1, 5, 5, 0, 1, 3, 3, 3, 5,
        3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 2, 0, 2, 2, 2, 2, 4, 3, 3,
        5, 5, 4, 5, 2, 4, 4, 4, 5, 5, 4, 2, 2, 3, 3, 4, 4, 3, 1, 3, 2, 0, 5, 5,
        5, 3, 4, 1, 4, 0, 5, 5, 0, 3, 0, 2, 3, 5, 3, 4, 2, 2, 3, 5, 1, 5, 3, 4,
        5, 5, 2, 2, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 3, 0, 0, 5, 1, 2, 3, 3, 1, 3,
        2, 4, 3, 1, 3, 3, 3, 3, 3, 1, 0, 5, 4, 4, 1, 1, 3, 4, 4, 4, 4, 5, 4, 2,
        2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 1, 4, 0, 1, 4, 4, 4, 1, 2, 1, 5, 5, 2, 4,
        4, 2, 2, 3, 1, 1, 0, 0, 2, 1, 0, 1, 5, 1, 2, 2, 3, 2, 0, 0, 3, 3, 3, 2,
        2, 2, 1, 1, 1, 3, 3, 3, 5, 3, 5, 2, 3, 2, 3, 1, 5, 2, 2, 3, 3, 3, 1, 1,
        1, 3, 3, 3, 3, 4, 4, 1, 4, 4, 1, 3, 3, 1, 0, 3, 5, 4, 4, 2, 4, 1, 0, 3,
        1, 4, 1, 4, 4, 0, 5, 3, 2, 2, 2, 5, 5, 0, 4, 4, 1, 2, 2, 3, 3, 3, 5, 5,
        5, 1, 5, 1, 4, 3, 1, 5, 5, 4, 4, 2, 3, 1, 0, 0, 5, 3, 1, 2, 1, 4, 1, 4,
        1, 2, 2, 5, 1, 2, 1, 4, 5, 5, 1, 4, 5, 5, 1, 1, 5, 5, 3, 1, 0, 0, 1, 0,
        0, 2, 0, 4, 3, 4, 3, 3, 1, 2, 3, 5, 3, 5, 5, 5, 5, 5, 3, 4, 4, 5, 4, 2,
        2, 5, 1, 4, 4, 4, 3, 1, 5, 3, 1, 3, 4, 2, 2, 4, 2, 1, 5, 2, 2, 5, 5, 3,
        3, 4, 1, 1, 2, 5, 3, 4, 4, 4, 5, 5, 1, 5, 5, 1, 5, 5, 1, 1, 1, 4, 2, 3,
        5, 4, 1, 1, 4, 5, 2, 3, 1, 2, 1, 4, 1, 4, 1, 1, 1, 0, 0, 1, 5, 0, 2, 1,
        1, 5, 1, 1, 3, 2, 3, 3, 1, 1, 2, 3, 2, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3,
        3, 5, 2, 2, 3, 4, 4, 4, 4, 0, 3, 0, 3, 4, 1, 1, 3, 3, 0, 4, 5, 0, 0, 0,
        2, 1, 3, 4, 5, 2, 1, 1, 3, 3, 4, 4, 4, 2, 2, 1, 5, 4, 0, 5, 5, 4, 3, 4,
        5, 0, 3, 0, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 5, 2, 0, 0, 1, 0, 0, 0, 3, 1,
        5, 3, 2, 3, 5, 3, 3, 3, 1, 5, 5, 5, 5, 1, 2, 1, 4, 5, 4, 3, 3, 5, 5, 1,
        4, 2, 5, 4, 1, 4, 4, 4, 4, 5, 5, 4, 3, 4, 3, 5, 3, 3, 1, 1, 0, 4, 4, 3,
        1, 1, 1, 1, 3, 3, 3, 4, 3, 1, 4, 1, 1, 3, 5, 5, 5, 4, 4, 1, 3, 1, 4, 3,
        3, 3, 1, 2, 2, 5, 3, 2, 5, 1, 3, 3, 5, 5, 4, 0, 3, 5, 5, 5, 1, 2, 2, 4,
        1, 4, 5, 5, 5, 4, 5, 2, 1, 5, 4, 4, 0, 3, 5, 4, 1, 3, 3, 5, 4, 2, 1, 0,
        1, 3, 2, 4, 3, 2, 4, 4, 1, 1, 0, 3, 3, 3, 1, 5])

可以發(fā)現,我們輸出的是測試集的內容。

那么很顯然,如果我們最終得到了預測值,我們就可以通過以下代碼來計算分類的正確數:

correct = int(pred[data.test_mask].eq(data.y[data.test_mask]).sum().item())

模型輸出的pred實際上包含了所有節(jié)點的預測值,而我們只需要取測試集中的內容,即:

pred[data.test_mask]

然后再與data.y[data.test_mask]進行比較,最后計算二者對應位置相等的個數即可。

2. 構造數據集

如果我們需要的數據集在PyG中沒有,我們就需要自己手動構造數據集。

例如對于一個無向圖,我們知道了其節(jié)點特征矩陣x:

x = torch.tensor([[-1, 1], [0, 1], [1, 3]], dtype=torch.float)

一共3個節(jié)點,每個節(jié)點具有兩個特征。

然后我們知道了節(jié)點間的鄰接關系:

edge_index = torch.tensor([[0, 1, 1, 2],
                           [1, 0, 2, 1]], dtype=torch.long)

一共4條邊,第一條邊為0->1,第2條邊為1->0。

然后我們就可以構造數據集:

data = Data(x=x, edge_index=edge_index)

有關GCN的實現放在下一篇文章!

以上就是PyG搭建GCN需要準備的數據格式的詳細內容,更多關于PyG搭建GCN數據格式的資料請關注腳本之家其它相關文章!

相關文章

  • 70行Python代碼實現一個桌面自動翻譯工具

    70行Python代碼實現一個桌面自動翻譯工具

    PySimpleGUI是一款很棒的自動化輔助模塊,讓你更輕松的實現日常任務的自動化。本文將利用PySimpleGUI編寫一個桌面自動翻譯工具,感興趣的可以了解一下
    2022-07-07
  • Python利用requests模塊下載圖片實例代碼

    Python利用requests模塊下載圖片實例代碼

    這篇文章主要給大家介紹了關于Python利用requests模塊下載圖片的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Python具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-08-08
  • 淺析Python面向對象編程

    淺析Python面向對象編程

    這篇文章主要介紹了Python面向對象編程的相關資料,文中示例代碼非常詳細,幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • 淺談django 重載str 方法

    淺談django 重載str 方法

    這篇文章主要介紹了淺談django 重載str 方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • python定時任務sched庫用法簡單實例

    python定時任務sched庫用法簡單實例

    sched可用于定時任務,唯一需要注意的就是,這些任務在一個線程中運行,如果前面的任務耗時過長,則后面的任務將順延執(zhí)行,下面這篇文章主要給大家介紹了關于python定時任務sched庫用法的相關資料,需要的朋友可以參考下
    2023-01-01
  • scipy稀疏數組coo_array的實現

    scipy稀疏數組coo_array的實現

    本文主要介紹了scipy稀疏數組coo_array的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • Python中Parsel的兩種數據提取方式詳解

    Python中Parsel的兩種數據提取方式詳解

    在網絡爬蟲的世界中,數據提取是至關重要的一環(huán),Python 提供了許多強大的工具,其中之一就是 parsel 庫,下面我們就來深入學習一下Parsel的兩種數據提取方式吧
    2023-12-12
  • python如何計算圓的周長和面積

    python如何計算圓的周長和面積

    這篇文章主要介紹了python如何計算圓的周長和面積問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • numpy中實現ndarray數組返回符合特定條件的索引方法

    numpy中實現ndarray數組返回符合特定條件的索引方法

    下面小編就為大家分享一篇numpy中實現ndarray數組返回符合特定條件的索引方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python Pandas 箱線圖的實現

    Python Pandas 箱線圖的實現

    這篇文章主要介紹了Python Pandas 箱線圖的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07

最新評論