13章TensorFlowによるデータのロードと前処理

今まではメモリに収まりきるデータセットだけを使ってきたが、深層学習システムはRAMには収まりきらない大規模なデータセットで訓練されることがよくある。大規模なデータセットの効率的なインジェスト、前処理は、ほかの深層学習ライブラリでは容易に実装できないが、TensorFlowはデータAPI(Data API)でこれらを簡単に実行できるようにしている。データセットオブジェクトを作り、どこからデータを入手してどのように変換するかを指示すればよい。マルチスレッド管理、キューイング、バッチへの分割、プリフェッチといった実装の細部はすべてTensorFlowが面倒を見てくれる。しかも、tf.kerasはデータAPIをシームレスに使える。

データAPIは、出荷時の状態で、テキストファイル(CSVファイルなど)、レコードが固定サイズのバイナリファイル、TensorFlowのTFRecord形式(可変サイズレコードをサポートする)のバイナリファイルを読むことができる。TFRecordは柔軟で効率のよいバイナリ形式で、通常はプロトコルバッファ(オープンソースのバイナリフォーマット)を格納する。データAPIは、SQLデータベースからの読み出しもサポートしている。さらに、GoogleのBigQueryサービスを含む多くのタイプのデータソースからデータを読み出すためのオープンソースのエクステンションが多数開発されている。

難しいのは、大規模なデータセットの効率的な読み出しだけではない。そのデータは、さらに前処理(通常は正規化)しなければならない。しかも、データは扱いやすい数値フィールドだけで構成されているとは限らない。テキスト特徴量、カテゴリ特徴量なども含まれている場合がある。これらのデータは、ワンホットエンコーディング、バッグオブワーズエンコーディング、 ...

Get scikit-learn、Keras、TensorFlowによる実践機械学習 第2版 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.