Microsoft Cognitive Toolkit(CNTK)におけるデータの準備と読み込みの過程で中心的な役割を果たすのが、**データローダー(MinibatchSource, CTFDeserializerなど)**です。これらはモデルの学習に必要なデータを効率よく供給するために使用されます。以下、それぞれの役割と使い方について詳しく説明します。
1. MinibatchSourceとは
MinibatchSourceは、CNTKにおけるデータの読み込みインターフェースであり、学習中にミニバッチ単位でデータを供給します。特徴は以下の通りです:
特徴
-
データを反復可能にし、シャッフルも可能
-
複数のデシリアライザ(例:
CTFDeserializer)を統合可能 -
学習用と評価用で共通のインターフェースを持つ
使用例(Python)
2. CTFDeserializerとは
CTFDeserializerは、CNTK専用のテキスト形式である**CNTK Text Format(CTF)**のデータを読み込むためのクラスです。
CTF形式の例
特徴
-
CTF形式は軽量で人間にも読みやすい
-
各行は1つのサンプルを表す
-
|featuresや|labelsなど、フィールド名でストリームを識別
使用方法(MinibatchSourceに渡して使用)
3. StreamDefとStreamDefsの役割
-
StreamDef:1つのデータストリーム(例:featuresやlabels)の定義を記述 -
StreamDefs:複数のStreamDefをまとめたコンテナ
これらによって、データファイル中のどのフィールドがどの形状で読み込まれるかを明示できます。
4. ミニバッチの取得
データをモデルに供給するには、以下のようにしてミニバッチを取得します:
まとめ
| コンポーネント | 役割 |
|---|---|
| MinibatchSource | ミニバッチ単位でデータを供給するインターフェース |
| CTFDeserializer | CTF形式のデータを読み取るデシリアライザ |
| StreamDef(s) | データの各ストリーム(特徴・ラベルなど)の構造を定義 |
CNTKではこのような設計により、高速かつ柔軟なデータ供給が可能になっています。
生成日:2025/05/23