日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Pytorch神经网络理论篇】 28 DGLGraph图的基本操作(缺一部分 明天补)

發布時間:2024/7/5 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Pytorch神经网络理论篇】 28 DGLGraph图的基本操作(缺一部分 明天补) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 DGLGraph圖的創建與維護

1.1 生成DGLGraph圖并且增加頂點與邊

import dgl import torch as th# 邊 0->1, 0->2, 0->3, 1->3 u, v = th.tensor([0, 0, 0, 1]), th.tensor([1, 2, 3, 3]) g = dgl.graph((u, v))print(g) # 圖中節點的數量是DGL通過給定的圖的邊列表中最大的點ID推斷所得出的 # 獲取節點的ID print(g.nodes()) # 獲取邊的對應端點 print(g.edges()) # 獲取邊的對應端點和邊ID print(g.edges(form='all')) # 如果具有最大ID的節點沒有邊,在創建圖的時候,用戶需要明確地指明節點的數量。 g = dgl.graph((u, v), num_nodes=8)

1.2 獲得DGLGraph圖的頂點與邊

import dgl import networkx as nx import matplotlib.pyplot as plt import matplotlib as mpl mpl.rcParams['font.sans-serif'] = ['SimHei'] # 顯示中文字符 mpl.rcParams['font.family'] = 'STSong' mpl.rcParams['font.size'] = 40 g_dgl = dgl.DGLGraph() # 生成一個空圖 g_dgl.add_nodes(4) # 增加四個頂點 g_dgl.add_edges(list(range(4)),[0]*4) # 增加四條邊 print("頂點",g_dgl.nodes()) # 輸出頂點列表 print("邊:",g_dgl.edges()) # 輸出邊 print("邊索引",g_dgl.edge_id(1,0)) # 輸出邊索引 print("邊屬性",g_dgl.edges[g_dgl.edge_id(1,0)]) # 輸出邊屬性

頂點 tensor([0, 1, 2, 3])
邊: (tensor([0, 1, 2, 3]), tensor([0, 0, 0, 0]))
邊索引 1
邊屬性 EdgeSpace(data={})

1.3 刪除DGLGraph圖的頂點與邊

g_dgl.remove_edges(i) # 刪除索引值為i的邊 print(g_dgl.number_of_edges()) # 輸出圖的邊數

1.4 清空DGLGraph圖

g_dgl.clear() # 清空圖內容

2 查看DGLGraph圖中的度

DGLGraph圖按照邊的方向將度分為兩種:連接其他頂點的度(out)和被其他頂點連接的度。

  • in_degree:查詢指定頂點被連接的邊數。
  • in_degrees:查詢多個頂點被連接的邊數,默認查詢圖中的全部頂點。
  • out_degree:查詢指定頂點連接其他頂點的邊數。
  • out_degrees:查詢多個頂點連接其他頂點的邊數,默認查詢圖中的全部頂點。

2.1 代碼實戰:查看DGLGraph圖中的度

import dgl import networkx as nx import matplotlib.pyplot as plt import matplotlib as mpl mpl.rcParams['font.sans-serif'] = ['SimHei'] # 顯示中文字符 mpl.rcParams['font.family'] = 'STSong' mpl.rcParams['font.size'] = 40 g_dgl = dgl.DGLGraph() # 生成一個空圖 g_dgl.add_nodes(4) # 增加四個頂點 g_dgl.add_edges(list(range(4)),[0]*4) # 增加四條邊 print(g_dgl.in_degree(0)) # 查詢連接0頂點的度,輸出:4 print(g_dgl.in_degrees([0,1])) # 查詢連接0,1頂點的度,輸出:tensor([4, 0]) print(g_dgl.in_degrees()) # 查詢全部頂點被連接的度,輸出:tensor([4, 0, 0, 0]) print(g_dgl.out_degrees()) # 查詢全部頂點向外連接的度,輸出:tensor([1, 1, 1, 1])

3?DGLGraph圖與NetWorkx圖的相互轉化

DGLGraph類在NetWorkx模塊之上進行擴展

3.1?將DGLGraph圖轉成NetWorkx圖并顯示

將DGLGraph圖轉成NetWorkx圖后便可以借助NetWorkx圖的顯示功能來可視化其內部結構。

import dgl import networkx as nx import matplotlib.pyplot as plt import matplotlib as mpl mpl.rcParams['font.sans-serif'] = ['SimHei'] # 顯示中文字符 mpl.rcParams['font.family'] = 'STSong' mpl.rcParams['font.size'] = 40 import os os.environ['KMP_DUPLICATE_LIB_OK'] = 'True'g_dgl = dgl.DGLGraph() # 生成一個空圖 g_dgl.add_nodes(4) # 增加四個頂點 g_dgl.add_edges(list(range(4)),[0]*4) # 增加四條邊nx.draw(g_dgl.to_networkx(),with_labels=True) # 先調用to_networkx()方法,將DGLGraph圖轉成NetWorkx圖,再調用NeWorkx的draw()方法進行顯示。#### Networkx庫中對圖的可視化沒有自環圖的功能

3.2 利用NetWorkx圖創建DGLGraph圖

DGLGraph圖可以從NetWorkx圖中轉化而來。

3.2.1 代碼實戰:利用NetWorkx圖創建DGLGraph圖

先調用dgl.DGLGraph()將NetWorkx圖轉化為DGLGraph圖,再調用了DGLGraph圖對象的to_networkx()方法,將DGLGraph圖轉換為NetWorkx圖顯示。

import dgl import networkx as nx import matplotlib.pyplot as plt import matplotlib as mpl mpl.rcParams['font.sans-serif'] = ['SimHei'] # 顯示中文字符 mpl.rcParams['font.family'] = 'STSong' mpl.rcParams['font.size'] = 40 import os os.environ['KMP_DUPLICATE_LIB_OK'] = 'True'g_nx = nx.petersen_graph() # 創建一個Networkx類型的無向圖petersen g_dgl = dgl.DGLGraph(g_nx) # 將Networkx類型轉化為DGLGraph plt.figure(figsize=(20,6)) plt.title("Networkx無向圖",fontsize=20) nx.draw(g_nx,with_labels=True) plt.subplots(122) plt.title("DGL有向圖",fontsize=20) nx.draw(g_dgl.to_networkx(),with_labels=True) # 將DGLGraph轉化為Networkx類型的圖

4 DGLGraph圖中頂點屬性的操作

4.1 為圖添加節點特征和邊特征

許多圖數據包含節點和邊上的屬性,即節點特征和邊特征。雖然節點特征和邊特征的類型在現實世界中可以是任意的,但是DGLGraph只接受存儲在張量(Tensor)中的屬性,且該屬性必須為數值類型。

4.2 修改頂點屬性

4.3 刪除頂點屬性

DGL庫官方操作指南https://docs.dgl.ai/

總結

以上是生活随笔為你收集整理的【Pytorch神经网络理论篇】 28 DGLGraph图的基本操作(缺一部分 明天补)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。