图神经网络
znsoft
A doctor of engineering dedicated to natural language processing.
展开
-
图注意力神经网络GAT 浅析,单层GAT layer 理解
class GATLayer(nn.Module): def __init__(self,g,in_dim,out_dim): super(GATLayer,self).__init__() self.g=g self.fc=nn.Linear(in_dim,out_dim,bias=False) self.attn_fc=nn.Linear(2*out_dim, 1, bias=False) # attention层 ..原创 2021-05-02 17:31:28 · 2921 阅读 · 0 评论 -
DGL 消息传递机制详解
DGL 核心 — 消息传递DGL中的消息传递,大家通常知其然不知所以然。在看完GCN的公式后,会出现这样的疑问: 矩阵运算在哪 ?D波浪和A波浪在哪 ?GCN公式:https://www.cnblogs.com/denny402/p/10917820.html下文详细解释了这个背后的机制:DGL 的核心为消息传递机制(message passing),主要分为消息函数 (message function)和汇聚函数(reduce function)。如下图所示:...原创 2021-04-22 07:38:08 · 968 阅读 · 0 评论 -
DGL中的local_scope
在DGL中,我们经常见到使用 go.local_scope() 的场合,如下面的代码def foo(g): with g.local_scope(): g.edata['h'] = torch.ones((g.num_edges(), 3)) g.edata['h2'] = torch.ones((g.num_edges(), 3)) return g.edata['h']这里的g是DGL中的一个图。以前我们在学习dgl时并没有见到这个函数的原创 2021-04-05 13:14:17 · 2948 阅读 · 4 评论 -
CogDL: 解放你的baseline, 图神经网络复现神器,炼丹必备工具
CogDL 是清华大学出品的图神经复现工具。它的用途是用最简单的方式,比如一行代码或命令行方式来复现各种经典图神经网络,并在适当的数据集上复现,以获取性能数据。我们在炼丹时经常需要获取baseline数据,难道需要我们去复杂 地重现?这样很费时间呀。有来CogDL, 一切都易如反掌。我们来看一个例子from cogdl import experiment# basic usageexperiment(task="node_classification", dataset="c..原创 2021-04-05 07:36:28 · 1187 阅读 · 0 评论 -
DGL 中的update_all函数 的详细理解
所有讨论是以以下代码为基础进行:import dglimport torch as thfrom dglfn import dgl_fnimport dgl.function as fn # https://blog.csdn.net/CY19980216/article/details/110629996?device=th.device("cuda" if th.cuda.is_available() else 'cpu')u= th.tensor([0,1,2,3,4.原创 2021-03-28 22:04:09 · 3740 阅读 · 6 评论 -
onnx模型的量化处理
默认是uint8量化,需要安装onnx 1.8或以上版本。目前在ubuntu 20.04下测试通过model_fp32 = ‘path/to/the/model.onnx’ model_quant = ‘path/to/the/model.quant.onnx’ quantized_model = quantize_dynamic(model_fp32, model_quant, weight_type=QuantType.QUInt8)- QAT quantization```p..原创 2021-03-10 15:46:30 · 13522 阅读 · 23 评论 -
onnxruntime中传入特定数据类型,比如fp16,int8
typedef enum ONNXTensorElementDataType { ONNX_TENSOR_ELEMENT_DATA_TYPE_UNDEFINED, ONNX_TENSOR_ELEMENT_DATA_TYPE_FLOAT, // maps to c type float ONNX_TENSOR_ELEMENT_DATA_TYPE_UINT8, // maps to c type uint8_t ONNX_TENSOR_ELEMENT_DATA_TYPE_INT8, .原创 2021-03-09 14:53:52 · 5643 阅读 · 2 评论 -
DGL 常见错误: Check failed: (out->dtype).code == kDLFloat
这是由于dgl支持的特征值 是float32或float64, 如果传递int进去,就会出错,方法是确认dgl的顶点和边的特征值 是float32/或float64 即可。import dglimport torch as thfrom dglfn import dgl_fnimport dgl.function as fn u= th.tensor([0,1,2,3,4,3])v=th.tensor([2,0,1,5,3,2])g=dgl.graph((u,v))#print(原创 2021-03-09 08:14:54 · 1075 阅读 · 0 评论 -
图神经网络框架DGL中的 消息函数、聚合函数及更新函数 的理解与说明
在DGL框架中,当我们明显了边、顶点、图以及边和顶点的属性后,接下来需要了解的概念就是 三座大山了:消息函数 聚合函数 更新函数消息函数默认的消息函数是ϕ,它接受的参数是edges ,类型是dgl.EdgeBatch. edges有src,dst和data三个属性,分别是源顶点、目标顶点和边,可以用这三个属性访问各自的特征。表示: node + node -> edge内置消息函数:一元: copy 函数二元: add, sub, mul, div, dot 函...原创 2021-03-08 07:36:00 · 5955 阅读 · 1 评论 -
可视化 DGL 图神经网络, 显示节点值和边的值
dgl的网络转为networkx后,边的标签数据格式不对,需要重新处理下import dglimport torch as thimport networkx as nximport matplotlib.pyplot as pltu= th.tensor([0,1,2])v=th.tensor([2,0,1])g=dgl.graph((u,v))print(g.edges())g.ndata["desc"]=th.tensor([1,2,3])g.edata["weigh.原创 2021-03-06 19:52:49 · 5221 阅读 · 4 评论 -
PGL 图神经网络中实现图的可视化
import dglimport networkx as nximport matplotlib.pyplot as pltnx.draw(g.cpu().to_networkx(), with_labels=True) # 将图转为networks 结构 , 用Matplotlib绘制图形gplt.show()plt.savefig("./test.jpg") #保存到服务器上,打开看。远程时比较有用。如果是本地运行,请注释掉本句。...原创 2021-02-14 10:27:20 · 528 阅读 · 0 评论 -
图神经网络DGL 框架实测记录
import torchimport dgldevice=torch.device("cuda" if torch.cuda.is_available() else "cpu")u,v = torch.tensor([0,0,0,1]).to(device), torch.tensor([1,2,3,3,]).to(device)g =dgl.graph((u,v))# https://blog.csdn.net/Iam_Human/article/details/108398115#.原创 2021-02-14 09:36:47 · 444 阅读 · 2 评论