English Introduction
NAS-Bench-Graph
本开源库提供了NAS-Bench-Graph的官方代码和所有评估好的架构效果。
NAS-Bench-Graph是首个为图神经架构搜索设计的基准,填补了图数据上神经架构表格式基准的空白。NAS-Bench-Graph由清华大学多媒体与网络实验室设计与开发,完成人包括博士生秦一鉴、博士后张子威、博士生张泽阳,指导教师为朱文武教授和王鑫助理教授。
安装
NAS-Bench-Graph可以直接通过PyPI安装:pip install nas_bench_graph
基准的使用
首先,需要通过名称指定读取某个数据集的基准。NAS-Bench-Graph中支持的九个数据集分别是:cora、citeseer、pubmed、cs、physics、photo、computers、arxiv 和 proteins。例如,对于cora数据集,示例代码如下:
from nas_bench_graph import lightread
bench = lightread('cora')
数据存储为Pyhon中的字典,即dict
类型。
读取数据后,需要通过架构的宏观搜索空间选项和对应的操作指定架构。NAS-Bench-Graph的宏观搜索空间采用一个有向无环图 (DAG),并约束DAG中的每个中间计算节点只含有一个输入。
因此,宏观搜索空间可以由一个整数的列表来指定,代表每个计算节点输入的编号(其中,0表示原始输入,1表示第一个计算节点,以此类推)。
然后,每个节点的操作可以由另一个相同长度的字符串列表指定。例如,对于下图中的示例架构,可以采用如下的代码指定:
from nas_bench_graph import Arch
arch = Arch([0, 1, 2, 1], ['gcn', 'gin', 'fc', 'cheb'])
# 0表示初始计算节点的输入节点是0,即原始数据
# 1表示下一个计算节点的输入节点是1号计算节点
# 2表示下一个计算节点的输入节点是2号计算节点
# 1表示下一个计算节点的输入节点是1号计算节点
请注意,我们假设所有的叶节点(即没有后代的节点)都连接到输出中,因此不需要指定输出节点。
此外,考虑到图的同构性,列表中的顺序可以随意指定,例如,下面的代码代表与上面相同的架构:
arch = Arch([0, 1, 1, 2], ['gcn', 'cheb', 'gin', 'fc'])
基准中,模型所有记录的数据都可以通过查表获得。在本开源库中,我们仅提供了验证集和测试集的效果、延迟和模型参数量,如下所示:
info = bench[arch.valid_hash()]
info['valid_perf'] # 验证集效果
info['perf'] # 测试集效果
info['latency'] # 延迟
info['para'] # 模型参数量
如需基准的完整数据,请从以下链接下载:https://figshare.com/articles/dataset/NAS-bench-Graph/20070371。
完整数据包含每个训练轮(epoch)上训练/验证/测试集的效果。由于NAS-Bench-Graph在每个数据集使用了三个随机种子进行重复试验,因此每个数据集包含3个文件,例如:
from nas_bench_graph import read
bench = read('cora0.bench')
另两个随机种子对应cora1.bench和cora2.bench。
所有训练轮中的完整指标可以按如下方式获得:
info = bench[arch.valid_hash()]
epoch = 50
info['dur'][epoch][0] # 训练集效果
info['dur'][epoch][1] # 验证集效果
info['dur'][epoch][2] # 测试集效果
info['dur'][epoch][3] # 训练集损失函数
info['dur'][epoch][4] # 验证集损失函数
info['dur'][epoch][5] # 测试集损失函数
info['dur'][epoch][6] # 最佳模型效果
NNI和智图(AutoGL)库
NAS-Bench-Graph可以与其他图神经架构搜索库一起使用,例如NNI(Neural Network Intelligence)或智图(AutoGL)。
对于智图库 中的使用,请参阅智图库的教程文档。 (需要版本至少为v0.4)
对于NNI 中的使用,请参阅代码示例runnni.py
。
引用
如果您在论文或项目中使用了NAS-Bench-Graph,请按照下列方式进行引用:
@inproceedings{qin2022nas,
title = {NAS-Bench-Graph: Benchmarking Graph Neural Architecture Search},
author = {Qin, Yijian and Zhang, Ziwei and Wang, Xin and Zhang, Zeyang and Zhu, Wenwu},
booktitle = {Thirty-sixth Conference on Neural Information Processing Systems Datasets and Benchmarks Track}
year = {2022}
}
English Introduction
NAS-Bench-Graph
本开源库提供了NAS-Bench-Graph的官方代码和所有评估好的架构效果。
NAS-Bench-Graph是首个为图神经架构搜索设计的基准,填补了图数据上神经架构表格式基准的空白。NAS-Bench-Graph由清华大学多媒体与网络实验室设计与开发,完成人包括博士生秦一鉴、博士后张子威、博士生张泽阳,指导教师为朱文武教授和王鑫助理教授。
安装
NAS-Bench-Graph可以直接通过PyPI安装:
pip install nas_bench_graph
基准的使用
首先,需要通过名称指定读取某个数据集的基准。NAS-Bench-Graph中支持的九个数据集分别是:cora、citeseer、pubmed、cs、physics、photo、computers、arxiv 和 proteins。例如,对于cora数据集,示例代码如下:
数据存储为Pyhon中的字典,即
dict
类型。读取数据后,需要通过架构的宏观搜索空间选项和对应的操作指定架构。NAS-Bench-Graph的宏观搜索空间采用一个有向无环图 (DAG),并约束DAG中的每个中间计算节点只含有一个输入。 因此,宏观搜索空间可以由一个整数的列表来指定,代表每个计算节点输入的编号(其中,0表示原始输入,1表示第一个计算节点,以此类推)。 然后,每个节点的操作可以由另一个相同长度的字符串列表指定。例如,对于下图中的示例架构,可以采用如下的代码指定:
请注意,我们假设所有的叶节点(即没有后代的节点)都连接到输出中,因此不需要指定输出节点。
此外,考虑到图的同构性,列表中的顺序可以随意指定,例如,下面的代码代表与上面相同的架构:
基准中,模型所有记录的数据都可以通过查表获得。在本开源库中,我们仅提供了验证集和测试集的效果、延迟和模型参数量,如下所示:
如需基准的完整数据,请从以下链接下载:https://figshare.com/articles/dataset/NAS-bench-Graph/20070371。 完整数据包含每个训练轮(epoch)上训练/验证/测试集的效果。由于NAS-Bench-Graph在每个数据集使用了三个随机种子进行重复试验,因此每个数据集包含3个文件,例如:
另两个随机种子对应cora1.bench和cora2.bench。
所有训练轮中的完整指标可以按如下方式获得:
NNI和智图(AutoGL)库
NAS-Bench-Graph可以与其他图神经架构搜索库一起使用,例如NNI(Neural Network Intelligence)或智图(AutoGL)。
对于智图库 中的使用,请参阅智图库的教程文档。 (需要版本至少为v0.4)
对于NNI 中的使用,请参阅代码示例
runnni.py
。引用
如果您在论文或项目中使用了NAS-Bench-Graph,请按照下列方式进行引用: