近期參加了開源組織Datawhale的線上組隊學(xué)習(xí)活動,因為之前有看過一些圖神經(jīng)的理論知識,之后的課題方向也想向圖神經(jīng)靠攏,所以打算跟著Datawhale再重新走一遍圖神經(jīng)。然后期間每個任務(wù)都會總結(jié)(估計會有很多不到位的地方拉~如果有人會看到,請多多包涵哦?。?/p>
Datawhale提供的課程鏈接:https://github.com/datawhalechina/team-learning-nlp/blob/master/GNN
一,簡單圖論
1.圖的表示

節(jié)點和邊的信息可以是類別型的(categorical),類別型數(shù)據(jù)的取值只能是哪一類別。一般稱類別型的信息為標簽(label)。
節(jié)點和邊的信息可以是數(shù)值型的(numeric),數(shù)值型數(shù)據(jù)的取值范圍為實數(shù)。一般稱數(shù)值型的信息為屬性(attribute)。


2.圖的屬性
2.1 結(jié)點的度

2.2 鄰接結(jié)點(neighbors)

2.3 行走(walk)


2.4 路徑(path)
路徑是結(jié)點不可重復(fù)的行走。
2.5 子圖(subgraph)

2.6 連通分量(connected component)

2.7 連通圖(connected graph)
當一個圖只包含一個連通分量,即其自身,那么該圖是一個連通圖。
2.8 最短路徑(shortest path)

2.9 直徑(diameter)

2.10 拉普拉斯矩陣

對稱歸一化的拉普拉斯矩陣如下所示:

3.圖的基本類型
3.1 有向圖和無向圖

3.2 非加權(quán)圖和加權(quán)圖

3.3 連通圖和非連通圖

3.4 二部圖

3.5 同質(zhì)圖和異質(zhì)圖
同質(zhì)圖(Homogeneous Graph):只有一種類型的節(jié)點和一種類型的邊的圖
異質(zhì)圖(Heterogeneous Graph):存在多種類型的節(jié)點和多種類型的邊的圖。
二,環(huán)境配置
1.使用nvidia-smi命令查看服務(wù)器上GPU情況

2.安裝正確版本的pytorch和cudatoolkit,此處安裝1.8.1版本的pytorch和11.1版本的cudatoolkit
在vscode上新建虛擬環(huán)境gnn_env_lj,用來安裝正確版本的pytorch和cudatoolkit。
新建虛擬環(huán)境:conda create -n gnn_env_lj python=3.8.5,創(chuàng)建新的虛擬環(huán)境gnn_env_lj,并在里面安裝了python3.8.5,然后conda activate gnn_env_lj,激活虛擬環(huán)境,在該虛擬環(huán)境里面安裝相應(yīng)版本的pytorch和cudatoolkit。
使用教程提供的conda install pytorch torchvision torchaudio cudatoolkit=11.1 -c pytorch -c nvidia代碼安裝總是有幾個包安裝不上,如下圖所示:


把裝不上的四個包用pip install安裝,發(fā)現(xiàn)只有不加版本號的時候才能裝上,好奇怪!

最后在pytorch官網(wǎng)上找到對應(yīng)版本的pip安裝pytorch代碼:pip3 install torch==1.9.0+cu111 torchvision==0.10.0+cu111 torchaudio==0.9.0 -f https://download.pytorch.org/whl/torch_stable.html,
pytorch官網(wǎng)網(wǎng)址:https://pytorch.org/

運行這段代碼后可以成功安裝pytorch:

然后確認是否正確安裝,以下結(jié)果表示安裝正確。

3.安裝正確版本的PyG

三.Data類——PyG中圖的表示及其使用
1.PyG圖數(shù)據(jù)的表示及其使用,即學(xué)習(xí)PyG中的Data類




2.PyG中圖數(shù)據(jù)的表示及其使用,即學(xué)習(xí)PyG中Dataset類
PyG內(nèi)置了大量常用的基準數(shù)據(jù)集,下面我們以PyG內(nèi)置的Planetoid數(shù)據(jù)集為例,來學(xué)習(xí)PyG中圖數(shù)據(jù)集的表示及使用


展示一個簡單的GCN模型構(gòu)造和訓(xùn)練過程,沒有用到Dataset和DataLoader,我們將使用一個簡單的GCN層,并在Cora數(shù)據(jù)集上實驗。

4.作業(yè)

