无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

一般人我不告訴他這些圖數(shù)據(jù)處理干貨!

2022-03-01 19:18 作者:深度之眼官方賬號(hào)  | 我要投稿

來源:投稿?作者:張宇

編輯:學(xué)姐


看完給學(xué)姐點(diǎn)個(gè)贊!一個(gè)贊就能給學(xué)姐的午飯加個(gè)雞腿??!


單張圖被PyG表示為 torch_geometric.data.Data 類型,有如下屬性:


data.x : 節(jié) 點(diǎn) 的 特 征 矩 陣 , 形 狀 為 [num_nodes, num_node_features]?

data.edge_index : COO格式的圖的邊 shape [2, num_edges] and type torch.long

data.edge_attr :邊的特征矩陣 shape [num_edges, num_edge_features]

data.y : 訓(xùn)練數(shù)據(jù)的標(biāo)簽,節(jié)點(diǎn)級(jí)的目標(biāo) shape [num_nodes, *] or 圖級(jí)的目標(biāo) shape [1, *]

data.pos : 節(jié)點(diǎn)的位置矩陣 shape [num_nodes, num_dimensions]



對(duì)于data提供了如下方法進(jìn)行訪問:



對(duì)于Data類的更多方法可以看這里:


https://pytorch-geometric.readthedocs.io/en/latest/modules/data.html#torch_geometric.data.Data


常用的基準(zhǔn)數(shù)據(jù)集


PyG提供了大量的基準(zhǔn)數(shù)據(jù)集,比如Planetoid datasets (Cora, Citeseer, Pubmed),更多圖的數(shù)據(jù)集可

以看這個(gè)鏈接???


https://pytorch-geometric.readthedocs.io/en/latest/modules/data.html#torch_geometric.data.Data


https://github.com/nd7141/graph_datasets


使用PyG處理數(shù)據(jù)非常簡單,并且下載下來就是源文件格式(raw file,可能在一些程序中看見這個(gè)單詞),并且會(huì)自動(dòng)處理為Data格式,例如:


我們可以看到數(shù)據(jù)集中的第一個(gè)圖包含37個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)有3個(gè)特性。有168/2 = 84條無向邊,圖被分配到一個(gè)類中。此外,數(shù)據(jù)對(duì)象只持有一個(gè)圖級(jí)目標(biāo)。


我們甚至可以使用切片、long或bool張量來分割數(shù)據(jù)集。例如,要?jiǎng)?chuàng)建90/10的訓(xùn)練/測試分割,輸入:


讓我們?cè)僭囈粋€(gè)!讓我們下載Cora,半監(jiān)督圖節(jié)點(diǎn)分類的標(biāo)準(zhǔn)基準(zhǔn)數(shù)據(jù)集,這個(gè)數(shù)據(jù)集是圖神經(jīng)網(wǎng)絡(luò)論文中經(jīng)常看見的數(shù)據(jù)集,是一個(gè)論文的引用圖,節(jié)點(diǎn)的特征為論文的詞向量:


Data對(duì)象保存每個(gè)節(jié)點(diǎn)的標(biāo)簽,以及額外的節(jié)點(diǎn)級(jí)屬性:


train_mask、val_mask和test_mask,其中Train_mask表示要訓(xùn)練哪個(gè)節(jié)點(diǎn)(140個(gè)節(jié)點(diǎn)),


Val_mask表示使用哪些節(jié)點(diǎn)進(jìn)行驗(yàn)證,例如,執(zhí)行早期停止(500個(gè)節(jié)點(diǎn)),


Test_mask表示要測試哪個(gè)節(jié)點(diǎn)(1000個(gè)節(jié)點(diǎn))。


比如data.train_mask 是一個(gè)一維的bool類型的tensor,里面的數(shù)據(jù)是True就代表是訓(xùn)練數(shù)據(jù)。

Mini-Batches

神經(jīng)網(wǎng)絡(luò)通常以批處理方式進(jìn)行訓(xùn)練。PyG通過創(chuàng)建稀疏塊對(duì)角鄰接矩陣(由edge_index定義)和連接節(jié)點(diǎn)維上的特征和目標(biāo)矩陣來實(shí)現(xiàn)小批量的并行化。這種組合允許在一個(gè)批處理中不同數(shù)量的節(jié)點(diǎn)和邊:


PyG包含它自己的torch_geometric.loader.DataLoader ,它已經(jīng)處理了這個(gè)連接過程。其實(shí)使用的過程和torch里面的DataLoader是一樣的:

torch_geometric.data.Batch從torch_geometric.data.Data 繼承,并包含稱為batch 的附加屬性。


batch是一個(gè)列向量,保存了batch中每個(gè)節(jié)點(diǎn)和對(duì)應(yīng)圖的映射關(guān)系。


可以使用batch來計(jì)算batch中每個(gè)圖中各個(gè)節(jié)點(diǎn)的平均特征。


Data Transforms


下面以一個(gè)例子來解釋,ShapeNet數(shù)據(jù)集是包含17000個(gè)3D點(diǎn)云的數(shù)據(jù)集。

我們可以通過transforms將點(diǎn)云生成最近鄰圖,將點(diǎn)云數(shù)據(jù)集轉(zhuǎn)換為圖數(shù)據(jù)集:

pre_transform參數(shù)可以在數(shù)據(jù)存入磁盤之前進(jìn)行轉(zhuǎn)換,在下次使用時(shí),數(shù)據(jù)集將自動(dòng)包含邊。


此外,我們可以使用transform參數(shù)來隨機(jī)增強(qiáng)一個(gè)Data對(duì)象,例如,將每個(gè)節(jié)點(diǎn)的位置轉(zhuǎn)換為一個(gè)小數(shù)字:

圖學(xué)習(xí)方法


在學(xué)習(xí)了PyG中的數(shù)據(jù)處理、datasets, loader 以及 transforms之后,是時(shí)候?qū)崿F(xiàn)我們的第一個(gè)圖形神經(jīng)網(wǎng)絡(luò)了!

我們將使用一個(gè)簡單的GCN層,并在Cora引文數(shù)據(jù)集上復(fù)制實(shí)驗(yàn)。關(guān)于GCN的解釋,請(qǐng)看 http://tkipf.g ithub.io/raph-convolutional-networks/ 。


首先,加載數(shù)據(jù)集:

然后定義一個(gè)兩層的GCN,和torch里面的定義方式一樣,只是在傳入GCN網(wǎng)絡(luò)時(shí)傳的是兩個(gè)參數(shù),第一個(gè)是數(shù)據(jù)特征,第二個(gè)是邊的index。數(shù)據(jù)特征x就是每個(gè)節(jié)點(diǎn)的特征向量,edge_index就是(2,節(jié)點(diǎn)數(shù))的Tensor,表示哪兩個(gè)節(jié)點(diǎn)之間有邊。卷積層后面的ReLU激活函數(shù)以及dropout層也是常用的,也不做介紹。

然后對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,訓(xùn)練的方式也是和torch中形式一樣的:

最后網(wǎng)絡(luò)新的訓(xùn)練精度進(jìn)行測試

總結(jié)


最后做個(gè)總結(jié)的話就是,使用PyG的圖神經(jīng)網(wǎng)絡(luò),其實(shí)和torch總體使用過程是差不多的,最重要的就是DataLoader的寫法。如果使用 torch_geometric.datasets 中沒有的數(shù)據(jù)集的話,將數(shù)據(jù)轉(zhuǎn)化為圖的形式可能需要一些時(shí)間。

代碼排版有點(diǎn)問題

關(guān)注公眾號(hào)【學(xué)姐帶你玩AI】回復(fù):“1”

領(lǐng)取代碼原文



一般人我不告訴他這些圖數(shù)據(jù)處理干貨!的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
武乡县| 额济纳旗| 抚州市| 九江市| 大庆市| 鲁山县| 井冈山市| 永丰县| 哈巴河县| 武山县| 九寨沟县| 大关县| 鹿邑县| 将乐县| 兰溪市| 连云港市| 化德县| 平乡县| 曲松县| 四川省| 应城市| 万载县| 长治县| 乐安县| 东方市| 扬州市| 辛集市| 汕尾市| 榆树市| 屏山县| 德化县| 驻马店市| 承德市| 万源市| 双辽市| 马龙县| 凉城县| 汾阳市| 封开县| 柳林县| 客服|