Dataset Abstraction / データセットの抽象化

Chainer は訓練用と評価用のデータセットの共通インタフェースをサポートしています。このデータセットのサポートは、データセット, イテレータ、バッチ変換関数の3つのコンポーネントから構成されています。

 

データセット は学習データ群です。このインタフェースは、ユーザが使用したいと考えるイテレータの組み合わせによって決定されます。Chainerのビルトインのイテレータは、このデータ・セットに __getitem____len__メソッドをサポートするよう要求しています。 特に、 __getitem__ メソッドはIntegerとスライスの両方のインデクシングをサポートしなければなりません。 ユーザがインデクシングのために get_example() メソッドのみを実装しなければいけないような場合、DatasetMixinを継承することで、簡単にスライスインデクシングをサポートすることができます。いくつかのイテレータでは、学習データの型にも制限があります。基本的に、データセットはステートレスなオブジェクトと考えられているので、訓練処理中のチェックポイントで保存する必要はありません。

 

イテレータ はデータセットと各Iterationを反復処理し、学習データのミニバッチをリストとして生成します。イテレータはPythonの標準イテレータプロトコルを含む Iterator インタフェースをサポートしなければなりません。イテレータは次にどこを読みに行くのか管理します。つまり、イテレータはステートフルです。

 

バッチ変換関数はミニバッチをニューラルネットへフィードするための配列へ変換します。 また、それぞれの配列を適切なデバイスへ送る責任があります。Chainerは現在、 concat_examples() をバッチ変換関数の唯一の例として提供しています。 これらのコンポーネントは全てカスタマイズ可能で、データセット型と、それらを操作する方法を限定することで最小限のインターフェースを持つようにデザインされています。とはいえ、Chainer自身によって提供されている実装は、大抵の使用方法をカバーしています。 Chainerは 軽量かつ管理が簡易なシステムであり、具体的なデータセットのサンプルを含んでいます。全てのデータセットはデータセットのルートディレクトリに保存されるようになっていて、環境変数 CHAINER_DATASET_ROOT によって定義され、set_dataset_root()関数によって、設定が可能です。

Dataset representation

データセットの実装については Dataset examples(英語オリジナル) をご覧ください。

chainer.dataset.DatasetMixin データセット・インデクシングのためのデフォルト実装

Iterator interface

データセット・イテレータの実装について Iterator examples をご覧ください。

chainer.dataset.Iterator データセット・イテレータの基底クラス

Batch conversion function

chainer.dataset.concat_examples データのリストを配列に結合する関数
chainer.dataset.to_device 与えられたデバイスへ配列を送信する関数

Dataset management

chainer.dataset.get_dataset_root データセットをダウンロードしキャッシュするルートディレクトリへのパスを取得する関数
chainer.dataset.set_dataset_root データセットをダウンロードしキャッシュするルートディレクトリを設定する関数
chainer.dataset.cached_download ファイルをダウンロードし、キャッシュする関数
chainer.dataset.cache_or_load_file ファイルが存在していない場合、ファイルをキャッシュする、もしくはロードする関数