インテル® DAAL 2017 デベロッパー・ガイド
数値テーブルは、インメモリー数値データ処理の基本的なコンポーネントです。インテル® DAAL は、以下のような、密および疎データ用の非同次および同次数値テーブルをサポートしています。
特徴がすべて同じ基本データ型の場合、同次数値テーブル (つまり、HomogenNumericTable クラスのオブジェクト) と行列 (つまり、Matrix、PackedTriangularMatrix、PackedSymmetricMatrix クラスのオブジェクト) を使用します。特徴の値は、(観測 1、観測 2、... のように) 行優先順で隣接するブロックとしてメモリーでレイアウトされます。インテル® DAAL では、行列は行列代数演算に最も適した同次数値テーブルです。
メモリー・フットプリントが縮小された三角行列と対称行列では、特別なクラス (PackedTriangularMatrix および PackedSymmetricMatrix) が利用可能です。三角行列と対称行列の表現間を選択するには、DataLayout 列挙子を使用します。
非同次数値テーブルを使用すると、データ型が異なるデータ構造を扱うことができます。インテル® DAAL は、2 つの方法 (AOS および SOA) で非同次数値テーブルを表せます。
AOS 数値テーブルは、隣接するメモリーブロックにレイアウトされる観測点 (特徴ベクトル) へのアクセスを提供します。
サンプル
インテル® DAAL ディレクトリーの次のサンプルを参照してください。
C++: ./examples/cpp/source/datasource/datastructures_aos.cpp
Java*: ./examples/java/source/com/intel/daal/examples/datasource/DataStructuresAOS.java
Python*: ./examples/python/source/datasource/datastructures_aos.py
SOA 数値テーブルは、各特徴の観測点がメモリーで隣接してレイアウトされるデータセットへのアクセスを提供します。
サンプル
インテル® DAAL ディレクトリーの次のサンプルを参照してください。
C++: ./examples/cpp/source/datasource/datastructures_soa.cpp
Java*: ./examples/java/source/com/intel/daal/examples/datasource/DataStructuresSOA.java
Python*: ./examples/python/source/datasource/datastructures_soa.py
同次および非同次数値テーブルの最適なデータレイアウトは特定のアルゴリズムに高度に依存します。アルゴリズム固有のガイダンスは、各アルゴリズムの「パフォーマンスに関する考察」セクションを参照してください。
インテル® DAAL は、疎データ (つまり、大量のゼロ要素を含むデータ) をエンコードする特別バージョンの同次数値テーブル用の CSRNumericTable クラスを提供します。ライブラリーは、CSR (Compressed Sparse Row) 形式をエンコーディングに使用します。
3 つの配列は、以下のように疎行列 M を記述しています。
CSRNumericTable のコンストラクターで CSRIndexing 型の indexing パラメーターにより、1 ベースの (oneBased) CSR エンコーディングを指定できます。
サンプル
インテル® DAAL ディレクトリーの次のサンプルを参照してください。
C++: ./examples/cpp/source/datasource/datastructures_csr.cpp
Java*: ./examples/java/source/com/intel/daal/examples/datasource/DataStructuresCSR.java
Python*: ./examples/python/source/datasource/datastructures_csr.py
インテル® DAAL は、1 セットの特徴ベクトルと対応するラベルのような、いくつかの論理的コンポーネントを含むデータセットへのアクセスを提供するテーブル向けに MergedNumericTable クラスを提供します。このタイプのテーブルにより、1 つのデータソースからそれらのデータ・コンポーネントを読むことができます。この特別なタイプの数値テーブルは、CSRNumericTable を除く任意のタイプの数値テーブルを保持できます。マージされた数値テーブルでは、配列は列で結合されるため、列の数が異なることがあります。入力行列の行の数が異なる場合、マージされたテーブルの行の数はmin (r1, r2, ..., rm) と等しくなります。ここで、ri は i 番目の行列の行の数 (i = 1, 2, 3, ..., m) です。
サンプル
インテル® DAAL ディレクトリーの次のサンプルを参照してください。
C++: ./examples/cpp/source/datasource/datastructures_merged.cpp
Java*: ./examples/java/source/com/intel/daal/examples/datasource/DataStructuresMerged.java