您现在的位置:首页 >> 污染防治

非常图神经网络PyTorch Geometric 与 Deep Graph Library

时间:2023-03-10 12:17:40

tric是基于Pytorh的(突显许多运用于妥善处理稀疏行列式的Pytorh扩展),而DGL可以应用于Pytorh或TensorFlow作为其后上端。

DGL 被运用于电子技术开发 SE3-Transformer,它是一种一维和旋转不变代数学方法,该代数学方法对酵素内部结构预测好出绩代数学方法 - AlphaFold有很大负面影响。Baker 学术研究中心所受 DeepMind 临时工启发,将DGL运用于自由软件RosettaFold的酵素内部结构预测。

PyTorch Geometric是一个极为盛行的努,它在GitHub 上有 13,000 多颗星,为所有有 PyTorch 实战经验的人缺少了不方便熟识的 API。我们将简述每个API,并对Zitnik 和 Leskovec 2017 年博士论文中的酵素与酵素相互作用 (protein-protein interaction, PPI) 原始数据集中的的等效 GNN 体系内部结构进行时基准测试。

PPI 原始数据集呈现了一个多类路由表并不一定战斗任务,每个路由表亦然一个由 50 个类似性组出的酵素,并用 121 个非排他标识进行时上标。

如果你应用于尺度求学代数学方法有数一段时长,可能会也见证了 Python 努的密不可分。在百度2015 年公开发表自由软件努TensorFlow后,TensorFlow得到了广泛采用。当年,尺度求学努的格局是由 Theano、AutoGrad、Caffe、Lasagne、Keras、Chainer 等基本组出的多元事务。

在此期间,尺度求学的努都是自力技术开发的。如果想要 GPU的 大力支持,就必须明了 CUDA。PyTorch 于 2016 年面世,虽然上个世纪,但不可否认将视为了尺度求学的正因如此努,同时TensorFlow 重新占领了 Keras,依旧所受到生产流程的喜爱。

到 TensorFlow 公开发表 2.0 版时,显然就出了 PyTorch 和 TensorFlow “两个努”之间的小游戏。它们之间的关联性越来越小,TensorFlow 不够加像 PyTorch 一样不够加动态,PyTorch 通过短时长内转译和Torchscript不够加不够更快。

显然是因为两大类努逐渐相异,学术概念设计 Autograd 后续的 JAX 为不具能力、功能性和可组合性为一身的尺度求学找到了一个全站的有别于,DeepMind 等主要学术研究中心也正保持对 JAX 的关注。

Jraph 是DeepMind 对基于示意图尺度求学的基于 JAX 的电子技术细节,尽管该方案与TensorFlow概念设计Graph Nets有诸多类似性类似之处(在合著本文时,Graph Nets概念设计一年多没有人不够新了)。

在下一节中的,我们将明了如何配备和分设 DGL 和 PyTorch Geometric,以及如何应用于每个努相结合不具 6 个隐藏层的示意图DFT网络平台。还将在 PPI 原始数据集上的路由表并不一定建立一个体能训练反转,并讨论每个人应用于的示意二维图原始数据内部结构 API 的关联性。再一,我们在单个 NVIDIA GPU 上监督 10,000 个 epoch 体能训练并比较每个 GPU 的更快。

三、PyTorch Geometric

PyTorch Geometric (PyG) 是一个恰当的努,很像常规的 PyTorch。原始数据集和原始数据调用可用不具完全一致的 API,因此无需针对相异战斗任务手动相应代数学方法体系内部结构。

1.配备

则有,我们基于 pip、PyTorch 1.10、Python 3.6 和 CUDA 10.2 的管理系统分设配备了 PyTorch Geometric。

2.代数学方法和转译器

我们将应用于基准测试努的体系内部结构,该体系内部结构是基于 Kipf 和 Welling 在其 2016 年博士论文中的所述的示意图DFT层(PyTorch Geometric 中的的 GCNConv 和 DGL 中的的 GraphConv)。

PyTorch Geometric 的示意二维图层应用于的 API 与 PyTorch 的比较类似,但将应用于 PyTorch Geometric Batch 类的 edge_index 中的的示意二维图边作为匹配。努中的的厂内将一个或多个示意图的聚集所述为一个有内部结构上过道的大示意图。

对于示意图DFT,这些厂内应用于行列式减法和组合的邻接行列式来构建权重共享,但 Batch 单纯还在一个称之为厂内的原始数据类别中的跟踪路由表与示意图的比对关连。

我们将应用于的示意图DFT代数学方法如下示意图标明:

运用于对 DGL 和 PyTorch Geometric 进行时基准测试的示意图DFT网络平台示意图

在转译器中的,我们的代数学方法是通过继承 PyTorch 的 torch.nn.Module 代数学方法类相结合的。

则有,这个代数学方法没有人将四维动量作为匹配,而是采用一个名为“batch”的原始数据类别,有时在典型的外形上说好中的称之为“data”。该厂内还包括并不一定路由表与示意图的十分相同关连以及这些路由表如何联接的额外数据库。

除了这种关联性之外,该代数学方法读起来很像常规DFT网络平台,应用于 GCNConv 或完全相同基于示意图的层则不是常规DFT。

PyTorch 用户也比较熟识体能训练反转,但它是将整个厂内传达给代数学方法,而不是基本上的匹配四维动量。但在进入体能训练反转以前,我们所需下载酵素与酵素相互作用 (PPI) 原始数据集并分设体能训练和测试原始数据调用可用。

今天我们到时并不一定体能训练反转了,此外还跟踪每个epoch的时长和所受损失。

如此, 该转译器已到时在 PPI 原始数据集上对 PyTorch Geometric 进行时基准测试。有了这些,在 Deep Graph Library 中的相结合等效代数学方法就会容易得多,这与我们下一节中的讨论的转译器就会有一些关联性。

四、尺度示意图努Deep Graph Library, DGL

Deep Graph Library 是一个灵活的努,可以利用 PyTorch 或 TensorFlow 作为后上端。我们将应用于 PyTorch 进行时此展示,但如果你会用 TensorFlow 并渴望将其运用于示意二维图的尺度求学,你可以通过将“TensorFlow”导出到名为 DGLBACKEND 的环境原始数据类别来构建。

至少,可以将转译器相应为来自 tf.keras.Model 而不是 torch.nn.Module 的子类,并应用于来自 keras 中的API 的fit 方式为。

1.配备

比方说,在应用于 CUDA 10.2 的管理系统上进行时配备,但如果你已升级到 CUDA 11 或仍停留在 CUDA 10.1 上,你可以从DGL 博客所正因如此正确的 pip install 命令。

2.代数学方法和转译器

在 DGL 中的,Kipf 和 Welling 示意图DFT层称之为“GraphConv”,而不是 PyTorch Geometric 中的应用于的“GCNConv”。除此之外,该代数学方法看起来不尽相同。

则有,我们不是传达批妥善处理作为匹配,而是传达 g(DGL 示意图单纯)和路由表类似性。

在分设体能训练反转时,也大致相同,但要特别注意传达给代数学方法的章节。

在这种只能,路由表类似性于 'batch.ndata["feat"]' 中的找到,但我们推断出运用于路由表类似性的特定双键因原始数据集而异。'feat' 可能会是最典型的,但你也就会推断出 'node_attr' 和其他章节,不完全一致的 API 可能会却是值得注意。

这可能会是一个痛点,因为我们为此展示尝试了相异的可用原始数据集,并且重写转译器位以为了让相异的原始数据集可能会就会减慢电子技术开发更快。我们大自然不够喜欢PyTorch Geometric 中的应用于的“批妥善处理”(Batch) 单纯的完全差异性。

理论上的,完全一致的内部结构上外形上在实际广泛应用中的十分就会造出弊上端,因为实际上你都不就会应用于可用原始数据集。

3.结果

PPI 原始数据集上 DGL 和 PyTorch 几何示意图DFT网络平台的体能训练椭圆

我们在 PPI 原始数据集上应用于 PyTorch Geometric 和 DGL 进行了 10,000 个 epoch 的体能训练,在单个 NVIDIA GTX 1060 GPU 上运行。

PyG 用了 2,984.34 秒进行体能训练,而 DGL 五小不到一半,为 1,148.05 秒。

两次运行都以类似的性能结束,PyG 的测试精准度为 73.35%,DGL 的测试精准度为 77.38%,我们期望通过随机堆栈的方式为让每次运行发生一些偶然上述情况。

在 10,000 个 epochs 之后,所受损失仍在减少,因此你可以预计此代数学方法体系内部结构最终就会收敛到略为很低的精准度(尽管我们没有人跟踪此实验的验证所受损失)。

五、哪个 GNN 努最适当自己

相异努体能训练时长的比较大关联性让人们不更快。鉴于 DGL 和 PyG 都是基于 PyTorch 相结合的,或者应用于 PyTorch 作为数值后上端,预计它们都就会在10% 或 20%内进行。

因为批妥善处理 API 比 DGL 中的的等效 API 不够加恰当和完全一致,我们可能会推断出应用于 PyTorch Geometric 分设体能训练反转比应用于 DGL 不够舒服一些。在确定 PPI 原始数据集以前,我们尝试了几个相异的原始数据集,显然每个原始数据集都应用于相异的双键来使DGL 解析路由表类似性。

话虽如此,在应用于DGL中的遇上的一些小麻烦可能会与努的熟识层面有关,只不过我们应用于 PyG 的时长比 DGL 要长。

相异体系内部结构和层类别的性能可能会值得学术研究,但全靠必需正确的努很难将性能大大提很低 2 倍。

尽管电子技术脚本语言的时长比代数学方法数值时长不够加稀缺,但在此例的分设中的 DGL 的更快更快了据统计 2.6 倍,凭这个压倒性就值得体能训练,并切换代数学方法努。同时,在DGL 生态管理系统中的遇上小弊上端,也就会随着熟识层面的提很低而克服。

虽然从 GitHub 星数和分支数就能看出来(13,700/2,400 DGL vs 8,800/2,000 PyTorch),DGL显然不如 PyTorch Geometric那么盛行,但大量社区大力支持和丰富的数据库可以保障DGL努的周易性,同时也可以帮助克服出现的弊上端。

无论预选哪个,任何可以在网络平台生存原始数据的环境下,通过求学示意图中的UTF-的内部结构数据库都能缺少诸多求学章节,而嵌入式和软件对稀疏行列式更更快数值的大力支持与简化也就会让GNN 努的投资不够加不够有意思。

标题元数据:

编者简述

崔皓,51CTO社区编者,资深体系内部结构师,拥有18年的软件电子技术开发和体系内部结构实战经验,10年分布式体系内部结构实战经验。现任德州仪器电子技术专家。乐于分享,合著了很多所受欢迎电子技术文章,朗读量超过60万。《分布式体系内部结构方法与出发点》所作。

郑州白癜风专科医院
吃什么药物缓解肌肉拉伤疼
深圳看牛皮癣哪家医院好
太极药业
郑州看白癜风哪间医院好
标签:网络神经
相关阅读