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

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

访问 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

51f4b9b323ddb974f35a2886a50f799e.png

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

CogDL:面向任务,扩展算法

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

4104666602a7421ae9873363dbb62614.png

大体上,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 比较不同算法的效果。

18d2d31fe98381ca2363ac731d980ac6.png

复现实验。论文模型的可复现性是非常重要的。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 支持自定义数据集和模型,并且提供了自动调参的例子。

70f161b905a0033045d3418736afa204.png

据 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/267179.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[转]GCC 命令行详解 -L 指定库的路径 -l 指定需连接的库名

1。gcc包含的c/c编译器gcc,cc,c,g,gcc和cc是一样的,c和g是一样的,(没有看太明白前面这半句是什么意思:))一般c程序就用gcc编译,c程序就用g编译2。gcc的基本用法gcc test.c这样将编译出一个名为a.out的程序gcc test.c -o test这样将编译出一个…

用计算机算判定系数,使用系数

使用系数是设备的使用时间与允许使用时间的比值。通常以一年累积的时间为计算范围。使用系数x年使用小时基数年使用小时数。例如,一台电机每天工作八小时,一年50周,那么一年电机工作的时候是2000小时。如果电机是连续工作制,一年有…

python2 openpyxl 复制excel内容到新的excel文件中 告警问题

该方法。由上海悠悠提供。可关注上海-悠悠的博客园def CopyExcel(Excelpath1,Excelpath2):#新建excelwb2openpyxl.Workbook()wb2.save(Excelpath2)print(新建成功)#读取数据wb1 openpyxl.load_workbook(Excelpath1)wb2 openpyxl.load_workbook(Excelpath2)sheets1 wb1.get_s…

工业机器人 扬州 江都_扬州市14家企业获批2019年江苏省示范智能车间

近日,我省正式发布2019年江苏省示范智能车间名单,所谓智能车间,是指将机器人、智能设备、信息技术三者在制造过程中全流程融合,实现自动决策、精确执行命令、精益管理。2019年,扬州市潍柴扬柴、新联汽车、江淮汽车等14…

超级强大的心理定律~~!你可以变成你想要的样子!~

这是转载的一篇文章。1、当你对某件事情抱着百分之一万的相信,它最后就会变成事实。 2、期望定律 期望定律告诉我们,当我们怀着对某件事情非常强烈期望的时候,我们所期望的事物就会出现。 3、情绪定律 情绪定律告诉我们,人百分之百…

学材分析计算机一体化,计算机一体化教学的体会

计算机一体化教学的体会摘要目前计算机教学没有摆脱传统的课程教学模式,虽然在教学中存在实训教学的环节,但仍偏重于理论化知识的完整灌输,导致理论与实践没有融为一体。一体化教学模式打破了传统的理论与实践教学的界限,是解决专…

pcb设计单点接地示意图_答案:关于PCB 的EMC设计知识考卷

(评分标准:本试卷作为培训效果评价依据,试卷满分为100分) ____________________________________________________________________________________________________________ 一、 判断题(每题2分) 1.塑料外壳产品的EMC性能只取决于PCB设计,与电缆的位置和PCB之间的…

Http、TCP/IP协议与Socket之间的区别

https://blog.csdn.net/done58/article/details/50996680转载于:https://www.cnblogs.com/654321cc/p/8968479.html

蚂蚁上树

蚂蚁上树原料:猪瘦肉100克、粉丝100克调料:酱油15克,盐1克,料酒10克,味精1克,葱、姜各5克,湿淀粉25克。制法:(1)将猪肉切成绿豆大小的粒。粉丝用热水泡好。葱、姜切末。(2)炒锅中放油…

深大计算机科学与技术在广东省,广东考生请注意:深圳大学2021年计划本省总招生人数比例超过75%!...

深圳大学,简称“深大”由于位于我国改革开放的经济前沿发展阵地——广东省深圳市,自1983年建校以来,学校发展迅猛,根据去年的招生录取分数来看,仅低于广东四所211高校(中山大学、华南理工大学、暨南大学、华南师范大学…

协方差公式性质证明过程_论文推荐 | 刘志平:等价条件平差模型的方差-协方差分量最小二乘估计方法...

《测绘学报》构建与学术的桥梁 拉近与权威的距离等价条件平差模型的方差-协方差分量最小二乘估计方法刘志平1, 朱丹彤1, 余航1, 张克非1,21. 中国矿业大学环境与测绘学院, 江苏 徐州 221116; 2. 皇家墨尔本理工大学空间科学研究中心, 澳大利亚 维多利亚州 墨尔本 3001收稿日期&…

图片在线转换base64

DEMO预览 图片在线转换base64 图片在线转换base64—-实现方法 采用 FileReader 对象的 readAsDataURL 方法进行图片的转换! JS实现 获取上传按钮,文字按钮,显示base64的结果,预览按钮,预览图片显示;判断当前…

Eclipse使用Team explorer everywhere进行代码管理

Visual Studio Team Explorer Everywhere 2010主要包含两大组件,参考图: ●Team Explorer Everywhere:它是Eclipse的Plug-in组件,让Eclipse能够使用TFS的版本管控、工作项目(Work Item)、Team Build、以及报表等功能,…

全国专科计算机科学与技术专业排名,全国专科大学机电专业排名

就上大学网为您推荐类似问题答案问题1:求机电一体化全国专业排名?我只知道西安航空技术高等专科学校的机电一体化专业排第一!不论从教育还有设施都很强!问题2:2015年全国医科大学排名,以及专业排名&#xf…

jsp中$使用不了

导入了jstl <% taglib prefix"c" uri"http://java.sun.com/jsp/jstl/core" %>为啥仍然在页面上 使用${name2} 获取 <c:set var"name2" value"dddd"></c:set> 中设置的值 死活不出来呢&#xff1f; 一直都在页面上…

mysql服务不能启动的几大原因

mysql服务不能启动的几大原因 1.存放数据库的路径的属主以及属组不是mysql 此时把/mydata/data目录的属主以及属组改为mysql即可&#xff1a;# chown –R mysql.mysql /mydata/data是不是可以启动mysql服务了呢&#xff01;2.有关mysql的进程没有结束掉导致mysql服务不能正常启…

计算机课堂教学改革培训心得体会,教学改革培训心得体会(精选3篇)

本页是范文参考网最新发布的《教学改革培训心得体会(精选3篇)》的详细范文参考文章&#xff0c;感觉写的不错&#xff0c;希望对您有帮助&#xff0c;重新编辑了一下发到范文参考网。教学改革培训心得体会(精选3篇)当在某些事情上我们有很深的体会时&#xff0c;可以记录在心得…

计算机无法安装系统,一招就能搞定“这台电脑无法安装 Windows 11”的解决方法...

微软已经正式发布了 Windows 11。虽然公开发布为今年晚些时候&#xff0c;但微软的 PC Health Check (中文名电脑健康状况检查)应用程序允许 Windows 10 用户检查他们的计算机是否满足安装 Windows 11 的最低系统要求。不幸的是&#xff0c;许多用户运行 PC Health Check 应用程…

7开启uasp协议_【环海解读】新版通关无纸化协议签约amp;报关代理委托发起和确认操作流程...

最近&#xff0c;小编经常收到咨询&#xff0c;作为进出口货物收发货人&#xff0c;如何使用新版通关无纸化协议签约系统和报关代理委托系统呢&#xff1f;客官莫急&#xff0c;今日就为大家提供一份科普篇&#xff0c;让您顺利完成报关前准备工作。下面小编将对登录及操作步骤…

python之random模块

#随机模块 import random retrandom.random()#0-1的随机的浮点数 ret1 random.randint(1,6) # 1-6的整数,1和3能取 #print ret1 ret2 random.randrange(1,6)# 1-6的整数,1能取,3不能取 #print ret2 ret3 random.choice([11,22]) #print ret3 ret4 random.sample([11,22,33,…