YAML 规范

本文档描述了用于OnDiskDatasetmetadata.yaml文件的YAML规范。metadata.yaml文件用于指定数据集信息,包括图结构、特征数据和任务。

dataset_name: <string>
graph:
  nodes:
    - type: <string>
      num: <int>
    - type: <string>
      num: <int>
  edges:
    - type: <string>
      format: <string>
      path: <string>
    - type: <string>
      format: <string>
      path: <string>
feature_data:
  - domain: node
    type: <string>
    name: <string>
    format: <string>
    in_memory: <bool>
    path: <string>
  - domain: node
    type: <string>
    name: <string>
    format: <string>
    in_memory: <bool>
    path: <string>
  - domain: edge
    type: <string>
    name: <string>
    format: <string>
    in_memory: <bool>
    path: <string>
  - domain: edge
    type: <string>
    name: <string>
    format: <string>
    in_memory: <bool>
    path: <string>
tasks:
  - name: <string>
    num_classes: <int>
    train_set:
      - type: <string>
        data:
          - name: <string>
            format: <string>
            in_memory: <bool>
            path: <string>
          - name: <string>
            format: <string>
            in_memory: <bool>
            path: <string>
    validation_set:
      - type: <string>
        data:
          - name: <string>
            format: <string>
            in_memory: <bool>
            path: <string>
          - name: <string>
            format: <string>
            in_memory: <bool>
            path: <string>
    test_set:
      - type: <string>
        data:
          - name: <string>
            format: <string>
            in_memory: <bool>
            path: <string>
          - name: <string>
            format: <string>
            in_memory: <bool>
            path: <string>

dataset_name

dataset_name 字段用于指定数据集的名称。它是用户定义的。

graph

graph 字段用于指定图结构。它有两个字段: nodesedges

  • nodes: list

    nodes 字段用于指定每种节点类型的节点数量。 它是一个 node 对象的列表。每个 node 对象有两个字段:typenum

    • type: string, 可选

      type 字段用于指定节点类型。对于同构图,它是 null。对于异构图,它是节点类型。

    • num: int

      num 字段用于指定节点类型的节点数量。 对于同构图和异构图都是必需的。

  • edges: list

    edges 字段用于指定边。它是一个 edge 对象的列表。每个 edge 对象有三个字段:typeformatpath。 - type: string, 可选

    type 字段用于指定边的类型。对于同构图,它是 null。对于异构图,它是边的类型。

    • format: string

      format 字段用于指定边缘数据的格式。它可以是 csvnumpy。如果是 csv,则不需要 indexheader 字段。如果是 numpy,则数组需要是 (2, num_edges) 的形状。对于大型图,推荐使用 numpy 格式。

    • path: string

      path 字段用于指定边缘数据的路径。它是相对于 metadata.yaml 文件目录的。

feature_data

feature_data 字段用于指定特征数据。它是一个包含 feature 对象的列表。每个 feature 对象有五个标准字段:domaintypenameformatpath。任何其他字段都将传递给 Feature.metadata 对象。

  • domain: string

    domain 字段用于指定特征数据的域。它可以是 nodeedge

  • type: string, optional

    type 字段用于指定特征数据的类型。对于同构图,它是 null。对于异构图,它是节点或边的类型。

  • name: string

    name 字段用于指定特征数据的名称。它是用户定义的。

  • format: string

    format 字段用于指定特征数据的格式。它可以是 numpytorch

  • in_memory: bool, 可选

    in_memory 字段用于指定是否将特征数据加载到内存中。它可以是 truefalse。默认值为 true

  • path: string

    path 字段用于指定特征数据的路径。它是相对于 metadata.yaml 文件目录的。

tasks

tasks 字段用于指定任务。它是一个 task 对象的列表。每个 task 对象至少有三个字段:train_setvalidation_settest_set。你可以自由添加其他字段,例如 num_classes,所有这些字段都将传递给 Task.metadata 对象。

  • name: string, 可选

    name 字段用于指定任务的名称。它是用户定义的。

  • num_classes: int, 可选

    num_classes 字段用于指定任务的类别数量。

  • train_set: list

    train_set 字段用于指定训练集。它是一个 set 对象的列表。每个 set 对象有两个字段:typedata

  • type: string, optional

    type 字段用于指定集合的节点/边类型。对于同质图,它是 null。对于异质图,它是节点或边的类型。

  • data: list

    data 字段用于加载 train_set。它是一个 data 对象的列表。每个 data 对象有四个字段:nameformatin_memorypath

    • name: string

      name 字段用于指定数据的名称。它是必需的,并用于指定 MiniBatch 的数据字段以进行采样。它可以是 seedslabelsindexes。如果使用其他名称,它将被添加到 MiniBatch 的数据字段中。

    • format: string

      format 字段用于指定数据的格式。它可以是 numpytorch

    • in_memory: bool, optional

      in_memory 字段用于指定数据是否加载到内存中。它可以是 truefalse。默认值为 true

    • path: string

      path 字段用于指定数据的路径。它是相对于 metadata.yaml 文件所在目录的。

  • validation_set: list

  • test_set: list

    validation_settest_set 字段分别用于指定验证集和测试集。它们与 train_set 字段类似。