データセットコレクション

TensorFlow.org で表示 Google Colab で実行 GitHub で表示 ノートブックをダウンロード

概要

データセットコレクションは、任意の数の既存の TFDS データセットをグループ化し、それらに単純な演算を実行するための単純な方法を提供します。

たとえば、同じタスクに関連する様々なデータセットをグループ化したり、一定の数の様々なタスクでモデルを簡単にベンチマークしたりするのに役立ちます。

セットアップ

まず、いくつかのパッケージをインストールします。

# Use tfds-nightly to ensure access to the latest features.
pip install -q tfds-nightly tensorflow
pip install -U conllu

TensorFlow と Tensorflow Datasets パッケージを開発環境にインポートします。

import pprint

import tensorflow as tf
import tensorflow_datasets as tfds

データセットコレクションは、任意の数の既存の TensorFlow Datasets(TFDS)データセットをグループ化し、それらに単純な演算を実行するための単純な方法を提供します。

たとえば、同じタスクに関連する様々なデータセットをグループ化したり、一定の数の様々なタスクでモデルを簡単にベンチマークしたりするのに役立ちます。

利用可能なデータセットコレクションを見つける

すべてのデータセットコレクションは、tfds.core.dataset_collection_builder.DatasetCollection のサブクラスです。

利用可能なビルダーのリストを取得するには、tfds.list_dataset_collections() を使用します。

tfds.list_dataset_collections()

データセットコレクションを読み込んで検査する

データセットコレクションを読み込む最も簡単な方法は、tfds.dataset_collection コマンドを使用して DatasetCollectionLoader オブジェクトをインスタンス化することです。

collection_loader = tfds.dataset_collection('xtreme')

TFDS データセットと同じ構文に従って、データセットコレクションの特定のバージョンを読み込むことができます。

collection_loader = tfds.dataset_collection('xtreme:1.0.0')

データセットコレクションローダーは、コレクションに関する情報を表示できます。

collection_loader.print_info()

データセットコレクションローダーは、コレクションに含まれるデータセットに関する情報も表示できます。

collection_loader.print_datasets()

データセットコレクションからデータセットを読み込む

コレクションから 1 つのデータセットを読み込む最も簡単な方法は、DatasetCollectionLoader オブジェクトの load_dataset メソッドを使用することです。これは、tfds.load を呼び出して、必要なデータセットを読み込みます。

この呼び出しは、分割名とそれに対応する tf.data.Dataset のディクショナリを返します。

splits = collection_loader.load_dataset("ner")

pprint.pprint(splits)

load_dataset は、以下のオプションのパラメータを受け入れます。

  • split: 読み込む分割。単一の分割(split="test")または分割のリスト(split=["train", "test"])を受け付けます。指定されていない場合は、特定のデータセットのすべての分割を読み込みます。
  • loader_kwargs: tfds.load 関数に渡されるキーワード引数。様々な読み込みオプションの総合的な概要については、tfds.load ドキュメントをご覧ください。

データセットコレクションから複数のデータセットを読み込む

コレクションから複数のデータセットを読み込む最も簡単な方法は、DatasetCollectionLoader オブジェクトの load_datasets メソッドを使用することです。これは、tfds.load を呼び出して、必要なデータセットを読み込みます。

このメソッドはデータセット名のディクショナリを返し、以下の例のように、それぞれが分割名とそれに対応する tf.data.Dataset のディクショナリに関連付けられています。

datasets = collection_loader.load_datasets(['xnli', 'bucc'])

pprint.pprint(datasets)

load_all_datasets メソッドは、特定のコレクションの利用可能なすべてのデータセットを読み込みます。

all_datasets = collection_loader.load_all_datasets()

pprint.pprint(all_datasets)

load_datasets メソッドは、以下のオプションのパラメータを受け入れます。

  • split: 読み込む分割。単一の分割(split="test")または分割のリスト(split=["train", "test"])を受け付けます。指定されていない場合は、特定のデータセットのすべての分割を読み込みます。
  • loader_kwargs: tfds.load 関数に渡されるキーワード引数。様々な読み込みオプションの総合的な概要については、tfds.load ドキュメントをご覧ください。

loader_kwargs を指定する

loader_kwargs は、tfds.load 関数に渡されるオプションのキーワード引数です。以下の 3 つの方法で指定できます。

  1. DatasetCollectionLoader クラスの初期化時:
collection_loader = tfds.dataset_collection('xtreme', loader_kwargs=dict(split='train', batch_size=10, try_gcs=False))
  1. DatasetCollectioLoaderset_loader_kwargs メソッドを使用する:
collection_loader.set_loader_kwargs(dict(split='train', batch_size=10, try_gcs=False))
  1. load_datasetload_datasets、および load_all_datasets メソッドのオプションのパラメータとして:
dataset = collection_loader.load_dataset('ner', loader_kwargs=dict(split='train', batch_size=10, try_gcs=False))

フィードバック

データセット作成ワークフローは継続的な改善が進められていますが、問題を認識していなければ、改善することはできません。データセットの作成中にどのような問題またはエラーが発生しましたか?混乱したり、初めて使用したときに機能しなかった部分はありませんでしたか?フィードバックを GitHub にお送りください。