【邁向圖神經網絡GNN】Part2: 使用PyTorch構建圖形結構的全過程

更新於 2024/07/24閱讀時間約 7 分鐘
上篇我們基本認識圖神經的起源發展,以及可行的應用場景
那這篇主要筆記使用 pytorch 建立 graph 的幾個概念與實作!

參考的資源: https://youtu.be/Obbr5TdD3Bo

如果還沒有看過上一篇的,可以點以下連結~那我們就開始吧!

【邁向圖神經網絡GNN】Part1: 圖數據的基本元素與應用


raw-image

為何需要GNN?

為了進一步理解圖神經網絡(GNN)的重要性,讓我們先回顧一下為何需要GNN。在傳統的神經網絡模型中,當我們輸入 Xa,模型會輸出 yA;同樣地,輸入 Xb​ 會得到 yB​。這樣的處理方式假設 Xa 與 Xb 之間沒有直接的相互關係,因此可以將它們視為獨立的實體。

然而,在許多真實世界的應用中,數據點之間往往是互相連接和影響的。例如,在社交網絡、化學分子或語言模型中,元素之間的關係是資料的核心部分。使用GNN,我們不僅處理單獨的數據點Xa​ 或 Xb​,而是處理一個包含多個數據點和它們之間連結的特徵。

GNN的優勢在於其能夠將這些連結關係納入模型中,將關係本身作為特徵進行學習。這使得GNN能夠產生更加精確和有意義的輸出,其中每個輸出不僅反映了單個節點的特性,也反映了節點之間的相互作用。

Graph組成的元素包含:Node、Edge、Node feature、Edge feature、label

引用: https://www.youtube.com/watch?v=Obbr5TdD3Bo

引用: https://www.youtube.com/watch?v=Obbr5TdD3Bo

  1. node: 節點,上圖中的 0 , 1 , 2 , 3 都屬於節點
  2. edge: 關係或稱線,兩個節點之間的連結就是關係,例如節點0與節點1之間有一條連線,就是 edge 
  3. node feature: 節點的特徵,例如節點 0 上有兩個特徵 x0 和 x1 
  4. edge feature : 線的特徵,例如節點 0 和節點 1 的連線上的特徵 attr = 1
  5. label : 標註資料,可以定義在 node 上,例如節點 0 的 label 是 1 

使用 pytorch 實作簡單的 graph

1. 首先安裝 package

# Install required packages.
import os
import torch
os.environ['TORCH'] = torch.__version__
print(torch.__version__)
!pip install -q torch-scatter -f https://data.pyg.org/whl/torch-${TORCH}.html!pip install -q torch-sparse -f https://data.pyg.org/whl/torch-${TORCH}.html!pip install -q git+https://github.com/pyg-team/pytorch_geometric.git

2. import 相關套件

import torch
import torch.nn as nn
import torch.nn.functional as F
import torch_geometric
from torch_geometric.nn import MessagePassing
from torch_geometric.utils import to_networkx
import networkx as nx
from torch_geometric.data import Data
import matplotlib.pyplot as plt

3. define graph 

依照上述的五個元素: node、edge、node feature、edge feature、label 去建立~

x = torch.tensor(
[[6, 4],
[0, 1],
[5, 3],
[1, 2]])
edge_index = torch.tensor(
[[0, 1, 0, 2, 1, 2, 2, 3],
[1, 0, 2, 0, 2, 1, 3, 2]])

edge_attr = torch.tensor(
[[1],
[1],
[4],
[4],
[2],
[2],
[5],
[5]])
y = torch.tensor(
[[1],
[0],
[1],
[0]]
)
graph = Data(x=x, edge_index=edge_index, edge_attr=edge_attr, y=y)
print(graph)
  • 第一個部分表達共有4個 node ,其 node feature 分別是 (6,4) (0,1)…
  • 第二個部分紀錄哪些 edge 相連,node 之間的連結可以有方向性,那我們這裡假設是屬於雙向連結,陣列直的看,表達 node 0 和 node 1 有連結,再來會重複一次,接著是 node 0 和 node 2 有連結
  • 第三部分是 edge 上的 feature ,同上也會重複一次,並且對應 edge 的陣列,表達 node 0 和 node 1 之間的連線上的 feature 為 1 
  • 第四部分是 label ,對應 node 的順序,依序表達 node 0 ~ node 4 

那把這個 object 建立起來會輸出

Data(x=[4, 2], edge_index=[2, 8], edge_attr=[8, 1], y=[4, 1])

那如果想再多加一個節點的話,可以這樣做:

# Define graph components

x = torch.tensor(
[[6, 4],
[0, 1],
[5, 3],
[9, 9],
[1, 2]]
)
edge_index = torch.tensor(
[[0, 1, 0, 2, 1, 2, 2, 3,3,4],
[1, 0, 2, 0, 2, 1, 3, 2,4,3]]
)
edge_attr = torch.tensor(
[[1],
[1],
[4],
[4],
[2],
[2],
[5],
[5],
[5],
[5]]
)

y = torch.tensor(
[[1],
[0],
[1],
[0],
[0]]
)
graph = Data(x=x, edge_index=edge_index, edge_attr=edge_attr, y=y)
print(graph)

4. 視覺化呈現 visualize graph

(圖片在最下方,方格子好像卡住不能在這插入圖片)

四個點,四個邊的影像,然後雙向連結


小結

到目前為止,我們已經利用 PyTorch 成功建立了圖(graph)結構,並且理解 graph object 能夠包含哪些元素。此外,我們還實現了圖的基礎視覺化展示。當手頭的數據具有這種互聯關係時,我們可以使用這種方法將數據轉換成圖形結構。這不僅包括原始數據的特徵,還能創造出基於連結的新特徵,幫助接下來模型預測提高精準度

方格子 vocus

raw-image
avatar-img
33會員
43內容數
歡迎來到《桃花源記》專欄。這裡不僅是一個文字的集合,更是一個探索、夢想和自我發現的空間。在這個專欄中,我們將一同走進那些隱藏在日常生活中的"桃花源"——那些讓我們心動、讓我們反思、讓我們找到內心平靜的時刻和地方
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Karen的沙龍 的其他內容
GNN發展背景 傳統的深度學習模型如在計算機視覺(CV)和自然語言處理(NLP)領域中極為成功,主要是處理結構化數據如影像和文本。這些數據類型通常具有固定且規律的結構,例如影像是由有序的像素點組成。然而,在真實世界中,許多數據是非結構化的,如化合物結構(原子和分子)。這些數據雖然具有一定的規則性,
本文探討了監督式學習、分群和相似度這幾個推薦系統算法,分別討論了它們的優點、缺點以及適用場景。這些算法在推薦系統中扮演著重要角色,並透過特徵選擇與預處理、相似度度量和鄰居的選擇等關鍵因素進行深入分析。文章最後提出在選擇推薦系統算法時應該考慮的因素,以及未來的研究方向。
Kafka是一個先進的分佈式流處理平臺,具有高吞吐量、可擴展性、容錯性和低延遲特性,提供瞭解耦、非同步和削峰特點。本文介紹了Kafka的通訊模式、適合的應用場景和未來發展趨勢,旨在幫助使用者更好地理解和應用Kafka。
本文探討了在使用 pandas 處理資料時應注意的幾個關鍵點,以及如何減少因資料型態問題而產生的錯誤,確保資料的原始意義得以保留。主要包括Pandas 資料處理深入解析,尋找CSV之外的數據儲存方案,以及優化資料處理策略。
上篇進一步認識基本的圖形架構與三大 Graph 算法,那首先從 shortest path 開始,我們會陸續去理解這些算法,以及可能的應用,如果還沒有看過上一篇的,可以點以下連結~那我們就開始吧! 【圖論Graph】Part1:初探圖形與圖形演算法之應用
本篇文章深入介紹了圖形的基本概念、組成和應用。從圖形的基本組成,到圖的類型與種類,再到圖形演算法的三大類型,本文將接續圖形領域的深入學習,並分享了對圖形的初步認識和學習方向的小心得。希望對正在學習圖形的人有所幫助。
0/5Graph
GNN發展背景 傳統的深度學習模型如在計算機視覺(CV)和自然語言處理(NLP)領域中極為成功,主要是處理結構化數據如影像和文本。這些數據類型通常具有固定且規律的結構,例如影像是由有序的像素點組成。然而,在真實世界中,許多數據是非結構化的,如化合物結構(原子和分子)。這些數據雖然具有一定的規則性,
本文探討了監督式學習、分群和相似度這幾個推薦系統算法,分別討論了它們的優點、缺點以及適用場景。這些算法在推薦系統中扮演著重要角色,並透過特徵選擇與預處理、相似度度量和鄰居的選擇等關鍵因素進行深入分析。文章最後提出在選擇推薦系統算法時應該考慮的因素,以及未來的研究方向。
Kafka是一個先進的分佈式流處理平臺,具有高吞吐量、可擴展性、容錯性和低延遲特性,提供瞭解耦、非同步和削峰特點。本文介紹了Kafka的通訊模式、適合的應用場景和未來發展趨勢,旨在幫助使用者更好地理解和應用Kafka。
本文探討了在使用 pandas 處理資料時應注意的幾個關鍵點,以及如何減少因資料型態問題而產生的錯誤,確保資料的原始意義得以保留。主要包括Pandas 資料處理深入解析,尋找CSV之外的數據儲存方案,以及優化資料處理策略。
上篇進一步認識基本的圖形架構與三大 Graph 算法,那首先從 shortest path 開始,我們會陸續去理解這些算法,以及可能的應用,如果還沒有看過上一篇的,可以點以下連結~那我們就開始吧! 【圖論Graph】Part1:初探圖形與圖形演算法之應用
本篇文章深入介紹了圖形的基本概念、組成和應用。從圖形的基本組成,到圖的類型與種類,再到圖形演算法的三大類型,本文將接續圖形領域的深入學習,並分享了對圖形的初步認識和學習方向的小心得。希望對正在學習圖形的人有所幫助。
0/5Graph
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
🐳本篇獲邀 《1111人力銀行》刊登! 石頭哥以一位經理人的視角,今天要分享的是:找一句話,可以鞭策你持續邁向成功的巔峰!
Thumbnail
深陷財務危機的英國第二大城市伯明罕,出現了不少出售市議會資產作為現金週轉的討論,包含博物館、美術館和圖書館,真的可以被賣掉嗎?來聽聽第一線館員怎麼說...
Thumbnail
GoSky AI於2018年3月創立,GoSky AI共同創辦人暨執行長張聿瑋談及進場的時機點很重要,他提到我們這一代恰逢數位世代,Al 人工智慧技術已日趨成熟,應該廣泛運用 Al 科技去幫助更多人圓夢。
Thumbnail
人人都有不同的拍照動機,大部分是為了紀錄、分享或創作。至於修圖的理由又是什麼呢?虛榮?仔細思考,找尋更深層的意義,而後正確追求,生活更加自在快活。
Thumbnail
簡報的靈魂是「重點」;打造重點靠「對比」! 但PPT 不是專業設計軟體, 想把一張照片的某區域, 拉高視覺能見度, 真的不容易辦到! 後來,我才明白,一個有趣的組合: 圖片或材質填滿+ 投影片背景填滿,幫我打開了簡報設計的另一番小天地。
Thumbnail
主動脈瘤是主動脈出現異常膨大,當膨大部位的直徑超過正常主動脈直徑的1.5倍以上,就稱為「主動脈瘤」。國立臺灣大學醫學院附設醫院心臟血管外科吳毅暉醫師指出,主動脈瘤就像氣球一樣,越大越容易破裂;而主動脈瘤一旦破裂了,會導致大量出血,是極度危險的急症。
Thumbnail
腦動脈瘤破裂會引發爆炸性頭痛、頸部僵硬,可能在短時間內昏迷、甚至奪命。若能提早發現、提早治療,有助於改善預後,降低失能的風險!
Thumbnail
寫作與讀書關係非常大。善於寫作的人首先善於讀書,熱愛讀書。而不善於寫作的人,基本上對書沒有多少興趣。 讀書的最佳年齡是兒童青少年時期,這個時期如果熱愛閱讀,就可以保持一輩子。青少年時期不愛讀書,以後能夠愛上讀書的可能性不大。 每個年齡段都有最適合的事情,錯過了就難以彌補。年輕時沒有把最優秀思想裝
Thumbnail
非常開心地受到邀約來到南山微風幫三星NOTE10來做現場似顏繪的活動 一早到現場就被排隊等候的粉絲們嚇到了這次的旗艦機
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
🐳本篇獲邀 《1111人力銀行》刊登! 石頭哥以一位經理人的視角,今天要分享的是:找一句話,可以鞭策你持續邁向成功的巔峰!
Thumbnail
深陷財務危機的英國第二大城市伯明罕,出現了不少出售市議會資產作為現金週轉的討論,包含博物館、美術館和圖書館,真的可以被賣掉嗎?來聽聽第一線館員怎麼說...
Thumbnail
GoSky AI於2018年3月創立,GoSky AI共同創辦人暨執行長張聿瑋談及進場的時機點很重要,他提到我們這一代恰逢數位世代,Al 人工智慧技術已日趨成熟,應該廣泛運用 Al 科技去幫助更多人圓夢。
Thumbnail
人人都有不同的拍照動機,大部分是為了紀錄、分享或創作。至於修圖的理由又是什麼呢?虛榮?仔細思考,找尋更深層的意義,而後正確追求,生活更加自在快活。
Thumbnail
簡報的靈魂是「重點」;打造重點靠「對比」! 但PPT 不是專業設計軟體, 想把一張照片的某區域, 拉高視覺能見度, 真的不容易辦到! 後來,我才明白,一個有趣的組合: 圖片或材質填滿+ 投影片背景填滿,幫我打開了簡報設計的另一番小天地。
Thumbnail
主動脈瘤是主動脈出現異常膨大,當膨大部位的直徑超過正常主動脈直徑的1.5倍以上,就稱為「主動脈瘤」。國立臺灣大學醫學院附設醫院心臟血管外科吳毅暉醫師指出,主動脈瘤就像氣球一樣,越大越容易破裂;而主動脈瘤一旦破裂了,會導致大量出血,是極度危險的急症。
Thumbnail
腦動脈瘤破裂會引發爆炸性頭痛、頸部僵硬,可能在短時間內昏迷、甚至奪命。若能提早發現、提早治療,有助於改善預後,降低失能的風險!
Thumbnail
寫作與讀書關係非常大。善於寫作的人首先善於讀書,熱愛讀書。而不善於寫作的人,基本上對書沒有多少興趣。 讀書的最佳年齡是兒童青少年時期,這個時期如果熱愛閱讀,就可以保持一輩子。青少年時期不愛讀書,以後能夠愛上讀書的可能性不大。 每個年齡段都有最適合的事情,錯過了就難以彌補。年輕時沒有把最優秀思想裝
Thumbnail
非常開心地受到邀約來到南山微風幫三星NOTE10來做現場似顏繪的活動 一早到現場就被排隊等候的粉絲們嚇到了這次的旗艦機