新しいデータセット コレクションを追加する

このガイドに従って、新しいデータセット コレクション (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を返します。

データセット コレクション情報には、次の 4 つのフィールドが含まれます。

  • name: データセット コレクションの名前。
  • description: データセット コレクションのマークダウン形式の説明。データセット コレクションの説明を定義するには 2 つの方法があります。(1) コレクションのmy_collection.pyファイル内で直接 (複数行の) 文字列として定義する - TFDS データセットに対して既に行われているのと同様です。 (2) description.mdファイル内。このファイルはデータセット コレクション フォルダーに配置する必要があります。
  • release_notes: データセット コレクションのバージョンから対応するリリース ノートへのマッピング。
  • 引用: データセット コレクションの BibTeX 引用 (複数可) のオプション (リスト)。データセット コレクションの引用を定義するには 2 つの方法があります。(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でフィードバックを共有してください。