DGL
文章平均质量分 78
cqu_shuai
实事求是,不自以为是
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
跟着官方文档学DGL框架第十七天——大型图上的离线推断
参考链接https://docs.dgl.ai/en/latest/guide/minibatch-inference.html#guide-minibatch-inference概述在已训练的模型上进行推断时,如果是超大图上,在CPU上进行推断会存在效率问题,在GPU上又受限于显存,所以依然需要“mini-batch+邻居采样”的方式。推断 v.s. 训练训练过程需要从第一层开始对节点表示逐层计算。具体来说,对于一个指定的层,需要以小批次的方式计算这个GNN层所有节点的输出表示。训练过程有原创 2021-01-22 20:06:11 · 468 阅读 · 0 评论 -
跟着官方文档学DGL框架第十六天——定制适用于mini-batch的GNN模块
参考链接https://docs.dgl.ai/en/latest/guide/minibatch-nn.html#guide-minibatch-custom-gnn-module概述只要会写针对完整图的GNN模块,对其做适当调整即可适用于mini-batch训练。修改同构图的GNN模块切片取输入特征的前几行,得到输出节点的特征。切片行数可以通过 g.number_of_dst_nodes 获得。对输入节点特征,将 g.ndata 替换为 g.srcdata;对于输出节点特征,将原创 2021-01-22 16:56:18 · 1045 阅读 · 0 评论 -
跟着官方文档学DGL框架第十五天——自定义邻居采样器
参考资料https://docs.dgl.ai/en/latest/guide/minibatch-custom-sampler.html#guide-minibatch-customizing-neighborhood-sampler邻居采样工作原理我们在更新一个节点的表示时,只需要该结点以及其邻居在上一层中的表示。所以需要找出节点消息传递的依赖。消息传递的依赖假设要计算下图所示的节点8在第二层的节点表示。src = torch.LongTensor( [0, 0, 0, 1,原创 2021-01-21 16:38:42 · 3422 阅读 · 0 评论 -
跟着官方文档学DGL框架第十四天——大型图上的随机训练之链接预测
参考资料https://docs.dgl.ai/en/latest/guide/minibatch-link.html#guide-minibatch-link-classification-samplerhttp://www.voidcn.com/article/p-fsdktdik-bry.html概述关于链接预测的概念和优化方法在“跟着官方文档学DGL框架第十天”上已经提到过。我们的目标还是得到节点表示,所以在随机训练时与节点分类和边分类的随机训练差不多,只是多了负采样过程。值得庆幸的是,原创 2021-01-21 11:50:54 · 2126 阅读 · 2 评论 -
跟着官方文档学DGL框架第十三天——大型图上的随机训练之边分类
参考资料https://docs.dgl.ai/en/latest/guide/minibatch-edge.html#guide-minibatch-edge-classification-samplerhttps://docs.dgl.ai/en/latest/api/python/dgl.dataloading.html#dgl.dataloading.pytorch.EdgeDataLoader概述边分类的随机训练与节点分类的随机训练没有太大区别,因为边分类的任务第一步也需要获得节点的表原创 2021-01-17 21:11:32 · 2756 阅读 · 4 评论 -
跟着官方文档学DGL框架第十二天——大型图上的随机训练之节点分类
参考资料https://docs.dgl.ai/en/latest/guide/minibatch.htmlhttps://docs.dgl.ai/en/latest/guide/minibatch-node.html#guide-minibatch-node-classification-sampler概述之前学习的训练图神经网络的方法,都是在整个图上进行的。对于大型图,图的节点或边是百万级、亿级的。假设一个LLL层的GCN,隐藏状态(hidden state)的维度为HHH,图的节点数量为N原创 2021-01-05 13:04:20 · 2197 阅读 · 4 评论 -
跟着官方文档学DGL框架第十一天——训练图神经网络之整图分类(Graph Classification)
参考链接https://docs.dgl.ai/en/latest/guide/training-graph.html#guide-training-graph-classificationhttps://docs.dgl.ai/en/latest/generated/dgl.readout_nodes.html#dgl.readout_nodeshttps://docs.dgl.ai/en/latest/generated/dgl.readout_edges.html#dgl.readout_ed原创 2020-12-29 20:30:48 · 5438 阅读 · 33 评论 -
跟着官方文档学DGL框架第十天——训练图神经网络之链接预测
参考链接https://docs.dgl.ai/en/latest/guide/training-link.html#guide-training-link-prediction概述什么是链接预测链接预测就是预测图中给定节点间是否存在边,常用于推荐系统。形式化地,给定节点uuu和vvv,链接预测的任务就是得到它们间存在链接的概率yu,v=ϕ(u,v)y_{u,v}=\phi \left ( u,v\right )yu,v=ϕ(u,v)。具体到GNN上,我们通过L层的GNN得到节点uuu和vv原创 2020-12-29 00:39:12 · 7790 阅读 · 19 评论 -
跟着官方文档学DGL框架第九天——训练图神经网络之边分类/回归
参考链接https://docs.dgl.ai/en/latest/guide/training-edge.html#guide-training-edge-classification回归问题与分类问题只是损失函数上的不同,模型和流程都是一样的。而获得边的预测值或者类别,可以通过融合端点的表示和边自身的表示来获得(在本节中没用上边的特征)。同构图上的边回归任务处理数据使用“跟着官方文档学DGL框架第一天”中相同的构建方式,手工构建一个双向图。注:现在DGL推荐使用“dgl.graph()”的原创 2020-12-26 14:35:59 · 4449 阅读 · 5 评论 -
跟着官方文档学DGL框架第八天——训练图神经网络之节点分类
参考链接https://docs.dgl.ai/guide/training-node.html#guide-training-node-classificationhttps://docs.dgl.ai/guide/training.html同构图上的节点分类处理数据节点分类任务是针对单图的,你可以使用DGL内置的数据集或继承DGLDataset构建的数据集,如“Citeseer”:import dgldataset = dgl.data.CiteseerGraphDataset()原创 2020-12-24 23:14:05 · 3796 阅读 · 10 评论 -
跟着官方文档学DGL框架第七天——下载和处理数据集
参考链接https://docs.dgl.ai/guide/data.html#guide-data-pipelinehttps://docs.dgl.ai/en/0.5.x/_modules/dgl/data/qm7b.html#QM7bDatasetDGLDatasetDGL在 dgl.data 里实现了很多常用的图数据集。它们遵循了由 dgl.data.DGLDataset 类定义的标准的数据处理管道。DGL推荐用户将图数据处理为 dgl.data.DGLDataset 的子类。该类为导入原创 2020-12-23 00:45:17 · 7180 阅读 · 2 评论 -
跟着官方文档学DGL框架第六天——异构图卷积模块(HeteroGraphConv)
参考链接https://docs.dgl.ai/guide/nn-heterograph.html#guide-nn-heterographhttps://docs.dgl.ai/api/python/nn.pytorch.html#dgl.nn.pytorch.HeteroGraphConv在异构图中,我们分别对每种关系进行处理(不同的DGL NN模块),让源节点的消息沿着不同的关系传递到目标节点,然后对于同一目标节点,聚合不同关系传来的信息来更新特征。公式如下hdst(l+1)=AGGr∈R原创 2020-12-21 22:14:41 · 6213 阅读 · 14 评论 -
跟着官方文档学DGL框架第五天——自定义GNN模块(GraphSAGE实现)
参考链接https://docs.dgl.ai/guide/nn.html#guide-nn如果DGL没有你想要的GNN模块,可以根据自己的需求定义(感觉应该放在后面讲,容易劝退像我这种小白)。本节以GraphSAGE为例。与pytorch类似,构造函数完成以下几个任务:设置选项注册可学习的参数或者子模块初始化参数演示代码如下:import torch.nn as nnfrom dgl.utils import expand_as_pairclass SAGEConv(nn.原创 2020-12-21 00:28:29 · 3909 阅读 · 0 评论 -
跟着官方文档学DGL框架第四天——消息传递机制
主要参考:https://docs.dgl.ai/guide/message.html整体结构消息传递机制主要分为三个部分1.消息产生2.消息聚合3.更新特征消息产生公式如下:me(t+1)=ϕ(xv(t),xu(t),we(t)),(u,v,e∈ε)m_{e}^{\left ( t+1\right )}=\phi \left ( x_{v}^{\left ( t\right )},x_{u}^{\left ( t\right )},w_{e}^{\left ( t\right )}\rig原创 2020-09-11 23:48:32 · 2726 阅读 · 6 评论 -
跟着官方文档学DGL框架第三天——关于图的二三事
主要参考:https://docs.dgl.ai/guide/graph-graphs-nodes-edges.html创建DGLGraph图之前讲了用dgl.DGLGraph()创建图的几种方式。这里提到用dgl.graph()也可以创建DGLGraph图。与dgl.DGLGraph((u,v))类似,dgl.graph((u,v))中,u和v分别为头节点列表和尾节点列表,列表对应位置的元素确定一条边。# edges 0->1, 0->2, 0->3, 1->3u, v原创 2020-09-10 12:13:28 · 4783 阅读 · 4 评论 -
跟着官方文档学DGL框架第二天——DGLGraph和节点/边特征
主要参考:https://docs.dgl.ai/tutorials/basics/2_basics.html如何用DGLGraph创建图如果创建一个图,有以下几种方式:1)dgl.DGLGraph(g_nx)可以先用networkx创建一个图,然后转为DGLGraph格式的;DGLGraph的图也可以转为networkx格式。演示代码如下:import networkx as nximport dglg_nx = nx.petersen_graph()g_dgl = dgl.DGLGra原创 2020-09-06 20:05:41 · 4498 阅读 · 0 评论 -
跟着官方文档学DGL框架第一天——DGL概览
主要参考:https://docs.dgl.ai/tutorials/basics/1_first.htmlDGL是什么DGL是一种用于简化图神经网络实现的包,感觉官方文档写得很亲民,打算好好拜读一下。教程问题描述文档先给出一个“Zachary空手道俱乐部问题”的小例子,以便熟悉DGL的基本操作。“Zachary空手道俱乐部是一个社交网络,包含34个成员及他们在俱乐部外的关系链接。俱乐部之后被分为两个分别由教练(节点0)和会长(节点33)领导的社区。”社交网络展示如下图:任务是为每位成员分类,即原创 2020-09-04 23:56:56 · 11913 阅读 · 10 评论
分享