一行代码命令可以做什么?
“一行命令可以实现‘一条龙’运行实验。”

访问 http://github.com/THUDM/cogdl 一键体验!

近年来,结构化数据的表示学习备受业界关注与热捧,图神经网络成为处理相关工作的有力工具,基于随机游走、矩阵分解的方法在搜索推荐、分子和药物生成等领域有着十分重要的应用。

但是,由于许多项目的代码并未开源或者开源代码的风格多种多样,研究者和使用者在使用这些方法的过程中会遇到各种各样的问题,比如实验复现以及如何在自己的数据集上运行模型等。

具体而言(以学术研究为例),研究者和使用者在从事研究过程中需要将自己提出的模型与其他模型进行对比,来验证所提出模型的有效性。但在对比过程中,他们需要选定若干个下游任务,在每个任务下,通过公平的评估方式来对比不同模型的性能,由于不同模型在提出时可能会使用不完全一致的下游任务或者评估方式,他们需要花费大量精力修改基线模型来进行适配。

那么,如何快速、便捷地复现出基线模型(baseline)的结果,并将这些模型应用到自定义的数据集上?

为此,清华大学知识工程实验室(KEG)联合北京智源人工智能研究院(BAAI)开发了一种基于图深度学习的开源工具包——CogDL(底层架构为 PyTorch,编程语言为 Python)。

据 CogDL 开发者介绍,该工具包通过整合多种不同的下游任务,同时搭配合适的评估方式,使得研究者和使用者可以方便、快速地运行出各种基线模型的结果,进而将更多精力投入研发新模型的工作之中。

对图领域中每种任务,我们提供了一套完整的“数据处理-模型搭建-模型训练-模型评估”的方案,易于研发人员做相关的实验。比如对于图上半监督节点分类任务,我们整合了常用的数据集 Cora、Citeseer、Pubmed,提供了经典的/前沿的各种模型(包括GCN、GAT、GCNII 等),提供了相应的训练脚本,并且整理出了一个相应的排行榜作为参考。” CogDL 开发者说。

CogDL 最特别的一点在于它以任务(task)为导向来集成所有算法,将每一个算法分配在一个或多个任务下,从而构建了 “数据处理-模型搭建-模型训练和验证” 一条龙的实现。

  1. # GCN 和 GAT 在 Cora 和 Citeseer 上的实验
  2. python scripts/train.py --task node_classification --dataset cora citeseer --model gcn gat

此外,CogDL 也支持研究者和使用者自定义模型和数据集,并嵌入在 CogDL 的整体框架下,从而帮助他们提高开发效率,同时也包含了当前许多数据集上 SOTA 算法的实现,并且仍然在不断更新。

CogDL:面向任务,扩展算法

图表示学习算法可以分为两类:一类是基于图神经网络的算法,另一类是基于 Skip-gram 或矩阵分解的算法。前者包括 GCN、GAT、GraphSAGE 和 DiffPool 等,以及适用于异构图的 RGCN、GATNE 等;后者则包括 Deepwalk、Node2Vec、HOPE 和 NetMF 等,以及用于图分类的 DGK、graph2vec 等算法。

大体上,CogDL 将已有图表示学习算法划分为以下 6 项任务:

  • 有监督节点分类任务(node classification):包括 GCN、GAT、GraphSAGE、MixHop 和 GRAND 等;
  • 无监督节点分类任务(unsupervised node classification):包括 DGI、GraphSAGE(无监督实现),以及 Deepwalk、Node2vec、ProNE 等;
  • 有监督图分类任务(graph classification):包括 GIN、DiffPool、SortPool 等;
  • 无监督图分类任务(unsupervised graph classification):包括 InfoGraph、DGK、Graph2Vec 等;
  • 链接预测任务(link prediction):包括 RGCN、CompGCN、GATNE 等;
  • 异构节点分类(multiplex node classification):包括 GTN、HAN、Metapath2vec 等。

CogDL 还包括图上的预训练模型 GCC,GCC 主要利用图的结构信息来预训练图神经网络,从而使得该网络可以迁移到其他数据集上,来取得较好的节点分类和图分类的效果。

能用来做什么?

那么,研究者和使用者可以利用 CogDL 做些什么?主要有三点:跟进 SOTA、复现实验,以及自定义模型和数据。跟进 SOTA。CogDL 跟进最新发布的算法,包含不同任务下 SOTA 的实现,同时建立了不同任务下所有模型的 leaderboard(排行榜),研究人员和开发人员可以通过 leaderboard 比较不同算法的效果。

复现实验。论文模型的可复现性是非常重要的。CogDL 通过实现不同论文的模型也是对模型可复现性的一个检验。自定义模型和数据。“数据-模型-训练”三部分在 CogDL 中是独立的,研究者和使用者可以自定义其中任何一部分,并复用其他部分,从而提高开发效率。

怎么用?

有两种方法:命令行直接运行,通过 API 调用

命令行直接运行。通过命令行可以直接指定 "task"、"model"、"dataset" 以及对应的超参数,并且支持同时指定多个模型和多个数据集,更方便。代码如下:

  1. # 监督GraphSAGE
  2. python scripts/train.py --task node_classification --dataset pubmed --model graphsage -seed 0 1 2 3 4 5
  3. # 无监督GraphSAGE
  4. python scripts/train.py --task unsupervised_node_classification --dataset pubmed --model unsup_graphsage
  5. # DeepWalk + Node2Vec算法 + BlogCatalog + Wikipedia数据集
  6. python script/train.py --task unsupervised_node_classificatoin --dataset blogcatalog wikipedia --model deepwalk node2vec

通过 API 调用。在代码中调用 CogDL 的数据、模型、任务构建 API,方便使用自定义数据集和模型,更灵活。代码如下:

  1. # 获取模型/数据/训练的参数
  2. args = get_default_args()
  3. args.task = 'node_classification'
  4. args.dataset = 'cora'
  5. args.model = 'gcn'
  6. # 建立数据集
  7. dataset = build_dataset(args)
  8. args.num_features = dataset.num_features
  9. args.num_classes = dataset.num_classes
  10. args.num_layers = 2
  11. # 建立模型
  12. model = build_model(args)
  13. # 训练+验证
  14. task = build_task(args, dataset=dataset, model=model)
  15. ret = task.train()

CogDL 支持自定义数据集和模型,并且提供了自动调参的例子。

据 CogDL 研究者介绍,从 2019 年启动以来,该项目经过了多次密集的研发,到目前已经整合了图领域的重要任务及其相关的经典和前沿的模型。

CogDL 开发者表示,“起初,我们只是整合了实验室内部从事相关领域研究的同学所使用的相关代码,为了方便实验室其余的同学运行相关的实验。后来,我们决定将代码开源出来,让更多的研究和开发人员能够借助我们的代码从事相关工作。”

如今,CogDL 已经上线了 CogDL v0.1.1。
“我们增加了一些最前沿的图神经网络模型,包括图自监督模型、图预训练模型。用户可以利用图上预训练好的模型做不同的下游任务。在下游任务方面,我们增加了知识图谱的链接预测任务,方便从事知识图谱领域的用户进行相关实验。” CogDL 开发者说。

具体而言,在监督节点分类任务上,增加了 GRAND 和 DisenGCN,GRAND 在 Cora、PubMed、Citeseer 上取得了 SOTA 或者接近 SOTA 的效果;无监督节点分类任务上,增加了 DGI、MVGRL、GraphSAGE(无监督实现);在链接预测任务上,增加了知识图谱上的链接预测 GNN 模型 RGCN 和 CompGCN;以及增加了图上的预训练模型 GCC。

另外,CogDL 也提供了使用 optuna 进行超参数搜索的 example,通过指定 "模型,数据集,参数" 即可自动实现超参数的搜索。

接下来,CogDL 研究者希望在现有基础上,继续补充其余的图领域的下游任务,添加更多的数据集,更新每个任务的排行榜;同时增加最前沿的关于预训练的图神经网络模型,支持用户直接使用预训练好的模型来进行相关应用;以及完善 CogDL 的教程和文档,让刚接触图领域的初学者能够快速上手。

谈及最终的愿景,CogDL 研究者表示,一方面希望从事图数据领域的研究人员可以方便地利用 CogDL 来做实验,另一方面希望面向实际应用的开发人员可以利用 CogDL 来快速地搭建相关下游应用,最终打造一个完善的图领域的研发生态

CogDL 项目传送门https://github.com/THUDM/cogdl
CogDL 0.1.1 release 详细信息https://github.com/THUDM/cogdl/releases/tag/0.1.1

启动图一键生成工具_一键即运行!清华团队推出图深度学习工具包CogDL v0.1相关推荐

  1. 反弹Shell命令一键生成工具

     工具下载方式:反弹Shell命令一键生成工具https://mp.weixin.qq.com/s/ckUvd6Ayw27TLJ5GH1bZ6A

  2. 视频批量去水印工具_一键去除视频水印

    软件截图: 操作说明: 1.安装水印云去水印软件并在电脑上运行. 2.点击添加需要处理的图片或视频文件. 3.点击水印去除功能拖动鼠标选择范围. 4.最后点击处理按钮开始去除文件水印. 网址https ...

  3. html自动生成工具_关于STM32代码自动生成的工具的进度....

    前情提要:STM32代码自动生成工具_本想...但是...可是...所以 首先说一下那几天大家的反应,有的持观望态度,毕竟STM32CUBE很香:有的很激动,期待我快点出东西:还有的很淡定,知道我在挖 ...

  4. JavaSE学习之路:Idea小技巧一键生成标准JavaBean(一键生成构造方法和Setter和Getter方法)

    Idea小技巧一键生成标准JavaBean(一键生成构造方法和Setter和Getter方法) 方法1:快捷键 快捷键:alt+insert或alt+fn+insert 1.生成有参和无参构造函数 p ...

  5. u盘win7纯净版_系统之家win7纯净版一键清除软件_一键清除系统lj.bat

    系统之家win7纯净版一键清除软件_一键清除系统 一键清理垃圾bat是一个专门用来清理系统垃圾的批解决文件,它的使用办法非常简单,点击以后就能自动为网友清理系统中的各种垃圾文件,包括临时文件和日志缓存 ...

  6. excel制作折线图太麻烦?试试这些折线图在线生成工具

    折线图是以折线的上升或下降来表示统计数量的增减变化的统计图,叫作折线统计图.用折线的起伏表示数据的增减变化情况,不仅可以表示数量的多少,而且可以反映数据的增减变化情况.并且折线图也是目前最方便的一种统 ...

  7. pycharm remote 远程项目 同步 本地_利器:PyCharm本地连接服务器搭建深度学习实验环境的三重境界...

    作为实验室社畜,常需要在本地使用Pycharm写代码,然后将代码同步到服务器上,使用远程登录服务器并运行代码做实验. 这其中有很多事情如果没有好的工具,做起来会非常麻烦. 比如如何快速同步本地与服务器 ...

  8. 小程序/公众号商城一键生成工具之weiit-saas

    开源项目[weiit-saas]介绍 weiit-saas是一款Java开源项目,属于weiit团队自研产品,意在通过技术封装,让企业无需代码开发,帮助企业一键生成小程序.公众号,让企业拥有独立品牌的 ...

  9. 预警数据一键升级工具_重磅 | 教务管理全新升级,“章鱼校长”助力机构实现轻松管理...

    暑假开班,教务繁忙 今天小云为您送上一个重磅消息 教务管理系统「章鱼校长」全面上线啦!!! 可能会有校长问,为什么叫"章鱼校长"? 当培训机构校长太难了 要会招生.报名.排班.考勤 ...

最新文章

  1. ASP.NET常见错误,原因及解决方法(2003版)_不断更新.....
  2. JavaScript前端框架的思考
  3. asp.net Repeater取得CheckBox选中的某行某个值的c#写法
  4. 使用SAP云平台 + JNDI访问Internet Service
  5. 半夜三点,去医院看病。。。
  6. YbtOJ#20064-[NOIP2020模拟赛B组Day4]预算缩减【树形dp】
  7. Spring远程支持和开发RMI服务
  8. 计算机网络原理期末复习提纲,《计算机网络原理》考试复习提纲.doc
  9. js 判断剪切板内容是否为text_Python+selenium自动化之EC模块之text_to_be_present_in_element...
  10. Scala和Java二种方式实战Spark Streaming开发
  11. 如何将你的 MySQL 查询速度提升 300 倍
  12. firefox 模拟手机
  13. vgh电压高了有什么_能源网建设的风电高电压穿越测试有何作用
  14. 机器学习笔记(参考吴恩达机器学习视频笔记)16_决策树
  15. 企业全链路数字化营销一站式解决方案
  16. html怎么把音乐播放器放到中间,怎么把音乐播放器放到自己的博客首页面上去?...
  17. 已知非线性规划问题,写出K-T条件
  18. c语言:四位数为AABB些型,并且是另一个书的平方,求这昂的四位数
  19. 《如何阅读一本书》章节要点整理
  20. MATLAB 使用GUI设计简单的计算器

热门文章

  1. Docker image Introduce
  2. intellij idea 热部署 spring jvm 版
  3. 简单说说通讯设备的热设计
  4. Ubuntu16.04上安装kitti2bag
  5. ROS获取KinectV2相机的彩色图和深度图并制作bundlefusion需要的数据集
  6. 镜头MTF传递函数解读
  7. 在win10 或者win7系统下装双系统ubuntu16.04教程
  8. db2 版本发布历史_数据库各厂商的发展历史(2. DB2 of IBM)
  9. 双网卡oracle rac,Linux+Oracle 10g RAC双网卡绑定和解除绑定的实现(2)
  10. mysql装完后navicat无法连接_重装mysql后导致Navicat连接失败