图网络将图作为输入并返回图作为输出。输入图具有边 ( E )、节点 ( V ) 和全局级 ( u ) 属性。输出图具有相同的结构,但更新了属性。图网络是更广泛的“图神经网络”家族的一部分(Scarselli 等人,2009 年)。
要了解有关图网络的更多信息,请参阅我们的 arXiv 论文:Relational inductive biases, deep learning, and graph networks。
[hidecontent type="logged" desc="隐藏内容:登录后可查看"]
可以从 pip 安装 Graph Nets 库。
此安装与 Linux/Mac OS X 以及 Python 2.7 和 3.4+ 兼容。
该库将与 TensorFlow 的 CPU 和 GPU 版本一起使用,但考虑到这一点,它没有将 Tensorflow 列为要求,因此如果您还没有安装 Tensorflow,则需要单独安装。
要安装 Graph Nets 库并将其与 TensorFlow 1 和 Sonnet 1 一起使用,请运行:
(中央处理器)
$ pip install graph_nets "tensorflow>=1.15,<2" "dm-sonnet<2" "tensorflow_probability<0.9"
(显卡)
$ pip install graph_nets "tensorflow_gpu>=1.15,<2" "dm-sonnet<2" "tensorflow_probability<0.9"
要安装 Graph Nets 库并将其与 TensorFlow 2 和 Sonnet 2 一起使用,请运行:
(中央处理器)
$ pip install graph_nets "tensorflow>=2.1.0-rc1" "dm-sonnet>=2.0.0b0" tensorflow_probability
(显卡)
$ pip install graph_nets "tensorflow_gpu>=2.1.0-rc1" "dm-sonnet>=2.0.0b0" tensorflow_probability
最新版本的库需要 TensorFlow >=1.15。为了与早期版本的 TensorFlow 兼容,请安装 Graph Nets 库 v1.0.4。
以下代码构建了一个简单的图形网络模块并将其连接到数据。
import graph_nets as gn
import sonnet as snt
# Provide your own functions to generate graph-structured data.
input_graphs = get_graphs()
# Create the graph network.
graph_net_module = gn.modules.GraphNetwork(
edge_model_fn=lambda: snt.nets.MLP([32, 32]),
node_model_fn=lambda: snt.nets.MLP([32, 32]),
global_model_fn=lambda: snt.nets.MLP([32, 32]))
# Pass the input graphs to the graph network, and return the output graphs.
output_graphs = graph_net_module(input_graphs)
该库包含演示如何创建、操作和训练图网络以推理图结构数据、最短路径查找任务、排序任务和物理预测任务。每个演示都使用相同的图形网络架构,突出了方法的灵活性。
要在不在本地安装任何东西的情况下试用演示,您可以通过云 Colaboratory 后端在浏览器中(甚至在手机上)运行演示。单击下面的演示链接,然后按照笔记本中的说明进行操作。
“最短路径演示”创建随机图,并训练图网络标记任意两个节点之间最短路径上的节点和边。通过一系列消息传递步骤(如每个步骤的图所示),模型改进了对最短路径的预测。
“排序演示”创建随机数列表,并训练图形网络对列表进行排序。在一系列消息传递步骤之后,模型可以准确预测哪些元素(图中的列)紧接着彼此(行)。
“物理演示”创建随机质量弹簧物理系统,并训练图形网络以预测下一个时间步的系统状态。该模型的下一步预测可以作为输入反馈,以创建未来轨迹的推出。下面的每个子图显示了超过 50 个步骤的真实和预测的质量弹簧系统状态。这类似于 Battaglia 等人的模型和实验。(2016) 的“交互网络”。
“图形网络基础知识演示”是一个教程,包含有关如何创建和操作图形、如何将图形输入图形网络以及如何构建自定义图形网络模块的分步示例。
要安装必要的依赖项,请运行:
$ pip install jupyter matplotlib scipy
要尝试演示,请运行:
$ cd <path-to-graph-nets-library>/demos
$ jupyter notebook
然后通过Jupyter notebook界面打开一个demo。
查看这些用于图形神经网络的高质量开源库:
pytorch_geometric:请参阅 MetaLayer 以获取我们的 Graph Nets 接口的模拟。
[/hidecontent]
[/rihide]