前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >斯坦福大学的图神经网络课01

斯坦福大学的图神经网络课01

作者头像
Tom2Code
发布2024-01-03 15:53:19
1250
发布2024-01-03 15:53:19
举报
文章被收录于专栏:TomTom

先来几张重要的ppt,作为start

这张图介绍了图的嵌入表示,通过一个嵌入查找,来表示每一个节点。

这张图则是介绍了顶点嵌入的目标,就是使嵌入前和嵌入后的两个的相似度保持尽可能的相等。

好了下面开始上demo版本的代码:

  1. 导库
代码语言:javascript
复制
import networkx as nx

2.生成一图,或者实例化一个图G

代码语言:javascript
复制
G = nx.Graph()
print(G.is_directed())


H = nx.DiGraph()
print(H.is_directed())


G.graph["Name"] = "Bar"
print(G.graph)

这里的DiGraph就是一个有向图(相信学术数据结构的大家一定不陌生)

这是对应的输出:

3.给图G增加节点

代码语言:javascript
复制
G.add_node(0, feature=5, label=0)

node_0_attr = G.nodes[0]
print("Node 0 has the attributes {}".format(node_0_attr))

输出如下:

4.查看一下图G的信息:

代码语言:javascript
复制
G.nodes(data=True)

5.增加多个节点

代码语言:javascript
复制
G.add_nodes_from([
  (1, {"feature": 1, "label": 1}),
  (2, {"feature": 2, "label": 2})
]) #(节点, 属性字典)

for node in G.nodes(data=True):
  print(node)


num_nodes = G.number_of_nodes()
print("G has {} nodes".format(num_nodes))

输出:

6.给图G增加边(和边上的权重weight)

代码语言:javascript
复制
G.add_edge(0, 1, weight=0.5)

edge_0_1_attr = G.edges[(0, 1)]
print("Edge (0, 1) has the attributes {}".format(edge_0_1_attr))

输出:

7.增加多条边

代码语言:javascript
复制
G.add_edges_from([
  (1, 2, {"weight": 0.3}),
  (2, 0, {"weight": 0.1})
])


for edge in G.edges():
  print(edge)


num_edges = G.number_of_edges()
print("G has {} edges".format(num_edges))

输出:

G现在一共有三条边

8.让我们来看看这个图G是个啥样子

代码语言:javascript
复制
nx.draw(G, with_labels = True)

输出:

很简单一个又三个顶点三条边组成的无向图

9.来顶点1的其他信息(度,还有邻居):

代码语言:javascript
复制
node_id = 1

print("Node {} has degree {}".format(node_id, G.degree[node_id]))


for neighbor in G.neighbors(node_id):
  print("Node {} has neighbor {}".format(node_id, neighbor))

输出:

两个度,对应两个边,没错。

10.创建一个有向图,并且计算pagerank:

代码语言:javascript
复制
num_nodes = 4
# Create a new path like graph and change it to a directed graph
G = nx.DiGraph(nx.path_graph(num_nodes))
nx.draw(G, with_labels = True)

# Get the PageRank
pr = nx.pagerank(G, alpha=0.8)
pr

输出:

关于pagerank:

PageRank的基本思想是,一个网页的重要性可以通过其他网页指向它的数量和质量来衡量。具体来说,如果一个网页被许多其他网页链接到,那么它的重要性就会更高。而如果这些链接来自于其他重要的网页,那么这个网页的权重也会相应提高。 chatgpt

所以1和2这两个点的pagerank的值会比较高

这今天的教程就到这里,下面我会继续分享GNN相关的知识,如果您觉得这对您有帮助,请点个关注哦,也别忘了点个赞和在看。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-12-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Tom的小院 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档