{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "oIMvgrGMe7ZF" }, "source": [ "##### Copyright 2022 The TensorFlow Authors." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "cellView": "form", "id": "n25wrPRbfCGc" }, "outputs": [], "source": [ "#@title Licensed under the Apache License, Version 2.0 (the \"License\");\n", "# you may not use this file except in compliance with the License.\n", "# You may obtain a copy of the License at\n", "#\n", "# https://www.apache.org/licenses/LICENSE-2.0\n", "#\n", "# Unless required by applicable law or agreed to in writing, software\n", "# distributed under the License is distributed on an \"AS IS\" BASIS,\n", "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n", "# See the License for the specific language governing permissions and\n", "# limitations under the License." ] }, { "cell_type": "markdown", "metadata": { "id": "ZyGUj_q7IdfQ" }, "source": [ "# データセットコレクション" ] }, { "cell_type": "markdown", "metadata": { "id": "LpO0um1nez_q" }, "source": [ "\n", " \n", " \n", " \n", " \n", "
TensorFlow.org で表示Google Colab で実行GitHub で表示ノートブックをダウンロード
" ] }, { "cell_type": "markdown", "metadata": { "id": "p8AFT7CpSzBG" }, "source": [ "## 概要\n", "\n", "データセットコレクションは、任意の数の既存の TFDS データセットをグループ化し、それらに単純な演算を実行するための単純な方法を提供します。\n", "\n", "たとえば、同じタスクに関連する様々なデータセットをグループ化したり、一定の数の様々なタスクでモデルを簡単に[ベンチマーク](https://ruder.io/nlp-benchmarking/)したりするのに役立ちます。" ] }, { "cell_type": "markdown", "metadata": { "id": "WZjxBV9E79Fl" }, "source": [ "## セットアップ\n", "\n", "まず、いくつかのパッケージをインストールします。" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "1AnxnW65I_FC" }, "outputs": [], "source": [ "# Use tfds-nightly to ensure access to the latest features.\n", "!pip install -q tfds-nightly tensorflow\n", "!pip install -U conllu" ] }, { "cell_type": "markdown", "metadata": { "id": "81CCGS5R8GeV" }, "source": [ "TensorFlow と Tensorflow Datasets パッケージを開発環境にインポートします。" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "-hxMPT0wIu3f" }, "outputs": [], "source": [ "import pprint\n", "\n", "import tensorflow as tf\n", "import tensorflow_datasets as tfds" ] }, { "cell_type": "markdown", "metadata": { "id": "at0bMS_jIdjt" }, "source": [ "データセットコレクションは、任意の数の既存の TensorFlow Datasets(TFDS)データセットをグループ化し、それらに単純な演算を実行するための単純な方法を提供します。\n", "\n", "たとえば、同じタスクに関連する様々なデータセットをグループ化したり、一定の数の様々なタスクでモデルを簡単に[ベンチマーク](https://ruder.io/nlp-benchmarking/)したりするのに役立ちます。" ] }, { "cell_type": "markdown", "metadata": { "id": "aLvkZBKwIdmL" }, "source": [ "## 利用可能なデータセットコレクションを見つける\n", "\n", "すべてのデータセットコレクションは、`tfds.core.dataset_collection_builder.DatasetCollection` のサブクラスです。\n", "\n", "利用可能なビルダーのリストを取得するには、`tfds.list_dataset_collections()` を使用します。\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "R14uGGzKItDz" }, "outputs": [], "source": [ "tfds.list_dataset_collections()" ] }, { "cell_type": "markdown", "metadata": { "id": "Jpcq2AMvI5K1" }, "source": [ "## データセットコレクションを読み込んで検査する\n", "\n", "データセットコレクションを読み込む最も簡単な方法は、[`tfds.dataset_collection`](https://www.tensorflow.org/datasets/api_docs/python/tfds/dataset_collection) コマンドを使用して `DatasetCollectionLoader` オブジェクトをインスタンス化することです。\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "leIwyl9aI3WA" }, "outputs": [], "source": [ "collection_loader = tfds.dataset_collection('xtreme')" ] }, { "cell_type": "markdown", "metadata": { "id": "KgjomybjY7qI" }, "source": [ "TFDS データセットと同じ構文に従って、データセットコレクションの特定のバージョンを読み込むことができます。" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "pyILkuYJY6ts" }, "outputs": [], "source": [ "collection_loader = tfds.dataset_collection('xtreme:1.0.0')" ] }, { "cell_type": "markdown", "metadata": { "id": "uKOJ6CNQKG9S" }, "source": [ "データセットコレクションローダーは、コレクションに関する情報を表示できます。" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "kwk4PVDoKEAC" }, "outputs": [], "source": [ "collection_loader.print_info()" ] }, { "cell_type": "markdown", "metadata": { "id": "2FlLLbwuLLTu" }, "source": [ "データセットコレクションローダーは、コレクションに含まれるデータセットに関する情報も表示できます。" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "IxNJEie6K55T" }, "outputs": [], "source": [ "collection_loader.print_datasets()" ] }, { "cell_type": "markdown", "metadata": { "id": "oGxorc3kLwRj" }, "source": [ "### データセットコレクションからデータセットを読み込む\n", "\n", "コレクションから 1 つのデータセットを読み込む最も簡単な方法は、`DatasetCollectionLoader` オブジェクトの `load_dataset` メソッドを使用することです。これは、[`tfds.load`](https://www.tensorflow.org/datasets/api_docs/python/tfds/load) を呼び出して、必要なデータセットを読み込みます。\n", "\n", "この呼び出しは、分割名とそれに対応する `tf.data.Dataset` のディクショナリを返します。" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "UP1nRj4ILwb6" }, "outputs": [], "source": [ "splits = collection_loader.load_dataset(\"ner\")\n", "\n", "pprint.pprint(splits)" ] }, { "cell_type": "markdown", "metadata": { "id": "2spLEgN1Lwmm" }, "source": [ "`load_dataset` は、以下のオプションのパラメータを受け入れます。\n", "\n", "- `split`: 読み込む分割。単一の分割(`split=\"test\"`)または分割のリスト(`split=[\"train\", \"test\"]`)を受け付けます。指定されていない場合は、特定のデータセットのすべての分割を読み込みます。\n", "- `loader_kwargs`: `tfds.load` 関数に渡されるキーワード引数。様々な読み込みオプションの総合的な概要については、[`tfds.load`](https://www.tensorflow.org/datasets/api_docs/python/tfds/load) ドキュメントをご覧ください。" ] }, { "cell_type": "markdown", "metadata": { "id": "aClLU4eAh2oC" }, "source": [ "### データセットコレクションから複数のデータセットを読み込む\n", "\n", "コレクションから複数のデータセットを読み込む最も簡単な方法は、`DatasetCollectionLoader` オブジェクトの `load_datasets` メソッドを使用することです。これは、[`tfds.load`](https://www.tensorflow.org/datasets/api_docs/python/tfds/load) を呼び出して、必要なデータセットを読み込みます。\n", "\n", "このメソッドはデータセット名のディクショナリを返し、以下の例のように、それぞれが分割名とそれに対応する `tf.data.Dataset` のディクショナリに関連付けられています。" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "sEG5744Oh2vQ" }, "outputs": [], "source": [ "datasets = collection_loader.load_datasets(['xnli', 'bucc'])\n", "\n", "pprint.pprint(datasets)" ] }, { "cell_type": "markdown", "metadata": { "id": "WF0kNqwsiN1Y" }, "source": [ "`load_all_datasets` メソッドは、特定のコレクションの利用可能な*すべて*のデータセットを読み込みます。" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "QX-M3xcjiM35" }, "outputs": [], "source": [ "all_datasets = collection_loader.load_all_datasets()\n", "\n", "pprint.pprint(all_datasets)" ] }, { "cell_type": "markdown", "metadata": { "id": "GXxVztK5kAHh" }, "source": [ "`load_datasets` メソッドは、以下のオプションのパラメータを受け入れます。\n", "\n", "- `split`: 読み込む分割。単一の分割(`split=\"test\"`)または分割のリスト(`split=[\"train\", \"test\"]`)を受け付けます。指定されていない場合は、特定のデータセットのすべての分割を読み込みます。\n", "- `loader_kwargs`: `tfds.load` 関数に渡されるキーワード引数。様々な読み込みオプションの総合的な概要については、[`tfds.load`](https://www.tensorflow.org/datasets/api_docs/python/tfds/load) ドキュメントをご覧ください。" ] }, { "cell_type": "markdown", "metadata": { "id": "d4JoreSHfcKZ" }, "source": [ "### `loader_kwargs` を指定する\n", "\n", "`loader_kwargs` は、[`tfds.load`](https://www.tensorflow.org/datasets/api_docs/python/tfds/load) 関数に渡されるオプションのキーワード引数です。以下の 3 つの方法で指定できます。\n", "\n", "1. `DatasetCollectionLoader` クラスの初期化時:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "TjgZSIlvfcSP" }, "outputs": [], "source": [ "collection_loader = tfds.dataset_collection('xtreme', loader_kwargs=dict(split='train', batch_size=10, try_gcs=False))" ] }, { "cell_type": "markdown", "metadata": { "id": "uJcEZl97Xj6Y" }, "source": [ "1. `DatasetCollectioLoader` の `set_loader_kwargs` メソッドを使用する:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "zrysflp-k1d3" }, "outputs": [], "source": [ "collection_loader.set_loader_kwargs(dict(split='train', batch_size=10, try_gcs=False))" ] }, { "cell_type": "markdown", "metadata": { "id": "Ra-ZonhfXkLD" }, "source": [ "1. `load_dataset`、`load_datasets`、および `load_all_datasets` メソッドのオプションのパラメータとして:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "rHSu-8GnlGTk" }, "outputs": [], "source": [ "dataset = collection_loader.load_dataset('ner', loader_kwargs=dict(split='train', batch_size=10, try_gcs=False))" ] }, { "cell_type": "markdown", "metadata": { "id": "BJDGoeAqmJAQ" }, "source": [ "### フィードバック\n", "\n", "データセット作成ワークフローは継続的な改善が進められていますが、問題を認識していなければ、改善することはできません。データセットの作成中にどのような問題またはエラーが発生しましたか?混乱したり、初めて使用したときに機能しなかった部分はありませんでしたか?フィードバックを [GitHub](https://github.com/tensorflow/datasets/issues) にお送りください。" ] } ], "metadata": { "colab": { "collapsed_sections": [], "name": "dataset_collections.ipynb", "toc_visible": true }, "kernelspec": { "display_name": "Python 3", "name": "python3" } }, "nbformat": 4, "nbformat_minor": 0 }