Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
tensorflow
GitHub Repository: tensorflow/docs-l10n
Path: blob/master/site/zh-cn/datasets/add_dataset_collection.md
25115 views

添加新的数据集集合

按照本指南创建新的数据集集合(可在 TFDS 或您自己的仓库中创建)。

概述

要将新的数据集集合 my_collection 添加到 TFDS,用户需要生成一个包含以下文件的 my_collection 文件夹:

my_collection/ __init__.py my_collection.py # Dataset collection definition my_collection_test.py # (Optional) test description.md # (Optional) collection description (if not included in my_collection.py) citations.md # (Optional) collection citations (if not included in my_collection.py)

按照惯例,应将新的数据集集合添加到 TFDS 仓库的 tensorflow_datasets/dataset_collections/ 文件夹中。

编写数据集集合

所有数据集集合都是 tfds.core.dataset_collection_builder.DatasetCollection 的实现子类。

下面是一个数据集集合构建工具的最小示例,在文件 my_collection.py 中定义:

import collections from typing import Mapping from tensorflow_datasets.core import dataset_collection_builder from tensorflow_datasets.core import naming class MyCollection(dataset_collection_builder.DatasetCollection): """Dataset collection builder my_dataset_collection.""" @property def info(self) -> dataset_collection_builder.DatasetCollectionInfo: return dataset_collection_builder.DatasetCollectionInfo.from_cls( dataset_collection_class=self.__class__, description="my_dataset_collection description.", release_notes={ "1.0.0": "Initial release", }, ) @property def datasets( self, ) -> Mapping[str, Mapping[str, naming.DatasetReference]]: return collections.OrderedDict({ "1.0.0": naming.references_for({ "dataset_1": "natural_questions/default:0.0.2", "dataset_2": "media_sum:1.0.0", }), "1.1.0": naming.references_for({ "dataset_1": "natural_questions/longt5:0.1.0", "dataset_2": "media_sum:1.0.0", "dataset_3": "squad:3.0.0" }) })

接下来的部分介绍了要覆盖的 2 个抽象方法。

info:数据集集合元数据

info 方法返回包含集合元数据的 dataset_collection_builder.DatasetCollectionInfo

数据集集合信息包含四个字段:

  • name:数据集集合的名称。

  • description:数据集集合的 markdown 格式描述。可以通过两种方式定义数据集集合的描述:(1) 直接在集合的 my_collection.py 文件中作为(多行)字符串 – 与已对 TFDS 数据集执行的操作类似;(2) 在一个description.md 文件中,此文件必须置于数据集集合文件夹中。

  • release_notes:从数据集集合的版本到相应版本说明的映射。

  • citation:数据集集合的可选 BibTeX 引文(列表)。可以通过两种方式定义数据集集合的引文:(1) 直接在集合的 my_collection.py 文件中作为(多行)字符串 – 与已对 TFDS 数据集执行的操作类似;(2) 在一个citations.bib 文件中,此文件必须置于数据集集合文件夹中。

datasets:定义集合中的数据集

datasets 方法返回集合中的 TFDS 数据集。

它被定义为一个版本字典,描述了数据集集合的演变。

对于每个版本,包含的 TFDS 数据集都会存储为从数据集名称到 naming.DatasetReference 的字典。例如:

class MyCollection(dataset_collection_builder.DatasetCollection): ... @property def datasets(self): return { "1.0.0": { "yes_no": naming.DatasetReference( dataset_name="yes_no", version="1.0.0"), "sst2": naming.DatasetReference( dataset_name="glue", config="sst2", version="2.0.0"), "assin2": naming.DatasetReference( dataset_name="assin2", version="1.0.0"), }, ... }

naming.references_for 方法提供了一种更简便的方式来表达与上面相同的内容:

class MyCollection(dataset_collection_builder.DatasetCollection): ... @property def datasets(self): return { "1.0.0": naming.references_for({ "yes_no": "yes_no:1.0.0", "sst2": "glue/sst:2.0.0", "assin2": "assin2:1.0.0", }), ... }

对数据集集合执行单元测试

DatasetCollectionTestBase 是数据集集合的基础测试类。它提供了许多简单的检查来保证数据集集合已正确注册,并且它的数据集存在于 TFDS 中。

唯一要设置的类特性是 DATASET_COLLECTION_CLASS,它指定要测试的数据集集合的类对象。

此外,用户可以设置以下类特性:

  • VERSION:用于运行测试的数据集集合的版本(默认为最新版本)。

  • DATASETS_TO_TEST:包含测试在 TFDS 中的存在性的数据集的列表(默认为集合中的所有数据集)。

  • CHECK_DATASETS_VERSION:是否检查数据集集合中版本化数据集的存在性,或者它们的默认版本(默认为 true)。

对数据集集合最简单的有效测试如下:

from tensorflow_datasets.testing.dataset_collection_builder_testing import DatasetCollectionTestBase from . import my_collection class TestMyCollection(DatasetCollectionTestBase): DATASET_COLLECTION_CLASS = my_collection.MyCollection

运行以下命令以测试数据集集合。

python my_dataset_test.py

反馈

我们一直在努力改进数据集创建工作流,但只有在我们意识到这些问题的情况下才能这样做。您在创建数据集集合时遇到了哪些问题或错误?是否有部分令人困惑,或者第一次没有运行?

请在 GitHub 上分享您的反馈。