DGL图神经网络计算框架常用操作记录

这里仅用于记录一些DGL的常用基本操作,以便后续使用查阅。

DGL创建一个简单同构图

import dgl
import torch

# 边 0->1, 0->2, 0->3, 1->3
u, v = torch.tensor([0, 0, 0, 1]), torch.tensor([1, 2, 3, 3])
g = dgl.graph((u, v))
#节点特征
g.ndata['feat'] = torch.randn(4, 64)
#节点标签
g.ndata['label'] = torch.tensor([0,1,1,0])
print(g)

DGL计算节点的入度

degrees = g.in_degrees()
print(degrees)

在这里插入图片描述

计算指定节点的入度

degrees = g.in_degrees([0, 1])#计算节点0和1的入度
print(degrees)

在这里插入图片描述

计算节点的出度

degrees = g.out_degrees()
print(degrees)

在这里插入图片描述

DGL添加自边

#这里我让节点2不出现,于是这样的图结构深入到模型中计算会报错
u, v = torch.tensor([0, 0, 0, 1]), torch.tensor([1, 4, 3, 3])
g = dgl.graph((u, v))
print(g)
print(g.edges())
#添加自边后,图结构中会出现2->2的边
g = dgl.add_self_loop(g)
print("="*100)
print(g)
print(g.edges())

在这里插入图片描述

DGL默认出现的边中节点ID最大的为这个图网络的节点数目,因此可以提前声明节点的数目

u, v = torch.tensor([0, 0, 0, 1]), torch.tensor([1, 4, 3, 3])
g = dgl.graph((u, v), num_nodes=10)
print(g)
print(g.edges())
#添加自边
g = dgl.add_self_loop(g)
print("="*100)
print(g)
print(g.edges())

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值