Path: blob/master/site/ja/datasets/overview.ipynb
38627 views
TensorFlow Datasets
TFDS は、TensorFlow、Jax、およびその他の機械学習フレームワークですぐに使用できる一連のデータセットを提供しています。
データの確定的なダウンロードと準備、および tf.data.Dataset(または np.array)の構築を行います。
注意: TFDS(このライブラリ)と tf.data(有効なデータパイプラインを構築する TensorFlow API)を混同しないようにしてください。TFDS は tf.data を囲む高レベルのラッパーです。この API をよく知らない方は、まず tf.data の公式ガイドを読むことをお勧めします。
Copyright 2018 The TensorFlow Datasets Authors, Licensed under the Apache License, Version 2.0
インストール
TFDS は 2 つのパッケージで存在します。
pip install tensorflow-datasets: 安定バージョン。数か月おきにリリースされます。pip install tfds-nightly: 毎日リリースされ、データセットの最終バージョンが含まれます。
この Colabでは、tfds-nightly を使用します。
利用可能なデータセットを特定する
すべてのデータセットビルダーは、tfds.core.DatasetBuilder のサブクラスです。利用可能なビルダーのリストを取得するには、tfds.list_builders() を使用するか、カタログをご覧ください。
データセットを読み込む
tfds.load
データセットを最も簡単に読み込むには、tfds.load を使用します。次の内容が行われます。
データをダウンロードし、
tfrecordファイルとして保存します。tfrecordを読み込んで、tf.data.Datasetを作成します。
次ような一般的な属性があります。
split=: 分割して読み取ります('train'、['train', 'test']、'train[80%:]'、など)。split API ガイドをご覧ください。shuffle_files=: エポック間でファイルをシャッフルするかどうかを制御します(TFDS は大規模なデータセットを複数の小さなファイルに保存します)。data_dir=: データセットが保存される場所(デフォルトは~/tensorflow_datasets/)with_info=True: データセットのメタデータを含むtfds.core.DatasetInfoを返します。download=False: ダウンロードを無効にします。
tfds.builder
tfds.load は、tfds.core.DatasetBuilder の新ラッパーです。tfds.core.DatasetBuilder API を使用して同じ出力を取得することができます。
データセットをイテレートする
dict 型
デフォルトでは、tf.data.Dataset オブジェクトには、tf.Tensor の dict が含まれます。
dict のキー名と構造を知るには、カタログのデータセットドキュメントを確認します。例: mnist ドキュメント。
タプル (as_supervised=True)
as_supervised=True を使用すると、スーパーバイズされたデータセットの代わりにタプル型 (features, label) を取得することができます。
NumPy 配列 (tfds.as_numpy)
tfds.as_numpy を使用して、次のように変換します。
tf.Tensor->np.arraytf.data.Dataset->Iterator[Tree[np.array]](Treeは任意のネストされたDict、Tuple)
バッチ化された tf.Tensor(batch_size=-1)
batch_size=-1 を使用すると、単一のバッチで全データセットを読み込むことができます。
これは as_supervised=True と tfds.as_numpy に組み合わせることで、データを (np.array, np.array) として取得できます。
データセットがメモリに収まる可能性があり、すべてのサンプルの形状が同じであることに注意してください。
データセットのベンチマークを作成する
データセットのベンチマーク作成は、単純な tfds.benchmark 呼び出しを任意のイテラブル(tf.data.Dataset、tfds.as_numpy など)に対して行います。
batch_size=kwarg でバッチサイズごとに結果を必ず正規化してください。まとめると、最初のウォームアップバッチは、
tf.data.Datasetの追加のセットアップ時間(バッファの初期化など)をキャプチャするために、ほかのバッチとは分離されます。2 つ目のイテレーションが、TFDS auto-caching にいよってはるかに高速に行われるのがわかります。
tfds.benchmarkは以降の分析で検査できるtfds.core.BenchmarkResultを返します。
エンドツーエンドパイプラインを構築する
先に進むには、次の項目をご覧ください。
エンドツーエンド Keras の例。完全なトレーニングパイプラインを確認してください(バッチ処理、シャッフルなど)。
パフォーマンスガイド。パイプラインの速度を改善します(ヒント: データセットのベンチマークに
tfds.benchmark(ds)を使用します)。
視覚化する
tfds.as_dataframe
tf.data.Dataset オブジェクトは、pandas.DataFrame に変換可能で、その tfds.as_dataframe を Colab で視覚化できます。
画像、オーディオ、テキスト、動画などを視覚化するには、
tfds.as_dataframeの 2 つ目の引数としてtfds.core.DatasetInfoを追加します。最初の
xサンプルのみを表示するには、ds.take(x)を使用します。pandas.DataFrameはメモリ内の全データセットを読み込むため、表示するには非常にコストがかかる可能性があります。
tfds.show_examples
tfds.show_examples は matplotlib.figure.Figure を返します(現在は画像データセットのみがサポートされています)。
データセットのメタデータにアクセスする
すべてのビルダーには、データセットのメタデータを含む tfds.core.DatasetInfo オブジェクトが含まれます。
次の方法でアクセスできます。
tfds.loadAPI:
tfds.core.DatasetBuilderAPI:
データセット情報には、データセットに関する追加情報(バージョン、引用、ホームページ、説明など)が含まれます。
特徴量メタデータ(ラベル名、画像形状など)
次のようにして tfds.features.FeatureDict にアクセスします。
クラス数、ラベル名:
形状、dtype:
分割メタデータ(分割名、サンプル数など)
次のようにして tfds.core.SplitDict にアクセスします。
利用可能な分割:
個々の分割に関する情報の取得:
subsplit API でも動作します。
トラブルシューティング
手動ダウンロード(ダウンロードに失敗した場合)
何らかの理由(オフラインなど)でダウンロードに失敗した場合は、手動でデータをダウンロードして manual_dir(デフォルトは ~/tensorflow_datasets/download/manual/)にダウンロードすることができます。
ダウンロードする URL を見つけるには、次を確認してください。
新しいデータセットの場合(フォルダとして実装されている場合):
tensorflow_datasets/<type>/<dataset_name>/checksums.tsv。例:tensorflow_datasets/datasets/bool_q/checksums.tsvデータセットのソースの場所はカタログをご覧ください。
古いデータセットの場合:
tensorflow_datasets/url_checksums/<dataset_name>.txt
NonMatchingChecksumError を修正する
TFDS では、ダウンロード URL のチェックサムを検証することで、決定性を確保しています。NonMatchingChecksumError が発生する場合は、以下のことが考えられます。
ウェブサイトがダウンしている(
503 ステータスコードなど)。URL を確認してください。Google Drive の URL の場合は、Drive の同じ URL に多くの人がアクセスしている場合にダウンロードを拒否することがあるため、後でもう一度試してみてください。バグをご覧ください。
元のデータセットファイルが更新されている。この場合、TFDS データセットビルダーを更新する必要があります。新しい Github issue か PR を発行してください。
tfds build --register_checksumsで新しいチェックサムを登録します。最終的に、データセットの生成コードを更新します。
データセットの
VERSIONを更新します。データセットの
RELEASE_NOTESを更新します。チェックサムの変更理由、Example の変更有無など。データセットが構築可能であることを確認します。
PR を送信します。
注意: ~/tensorflow_datasets/download/ でダウンロードされたファイルを検査することも可能です。
TensorFlow.org で表示
Google Colab で実行
GitHub でソースを表示
ノートブックをダウンロード