13章TensorFlowによるデータのロードと前処理
今まではメモリに収まりきるデータセットだけを使ってきたが、深層学習システムはRAMには収まりきらない大規模なデータセットで訓練されることがよくある。大規模なデータセットの効率的なインジェスト、前処理は、ほかの深層学習ライブラリでは容易に実装できないが、TensorFlowはデータAPI(Data API)でこれらを簡単に実行できるようにしている。データセットオブジェクトを作り、どこからデータを入手してどのように変換するかを指示すればよい。マルチスレッド管理、キューイング、バッチへの分割、プリフェッチといった実装の細部はすべてTensorFlowが面倒を見てくれる。しかも、tf.kerasはデータAPIをシームレスに使える。
データAPIは、出荷時の状態で、テキストファイル(CSVファイルなど)、レコードが固定サイズのバイナリファイル、TensorFlowのTFRecord形式(可変サイズレコードをサポートする)のバイナリファイルを読むことができる。TFRecordは柔軟で効率のよいバイナリ形式で、通常はプロトコルバッファ(オープンソースのバイナリフォーマット)を格納する。データAPIは、SQLデータベースからの読み出しもサポートしている。さらに、GoogleのBigQueryサービスを含む多くのタイプのデータソースからデータを読み出すためのオープンソースのエクステンションが多数開発されている。
難しいのは、大規模なデータセットの効率的な読み出しだけではない。そのデータは、さらに前処理(通常は正規化)しなければならない。しかも、データは扱いやすい数値フィールドだけで構成されているとは限らない。テキスト特徴量、カテゴリ特徴量なども含まれている場合がある。これらのデータは、ワンホットエンコーディング、バッグオブワーズエンコーディング、 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access