メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

深層学習のデータ形式

深層学習のほとんどのネットワークと関数は、入力データの各次元に対して異なる方法で演算を行います。

たとえば、LSTM 演算は入力データの時間次元を反復処理し、バッチ正規化演算は入力データのバッチ次元を正規化します。

データはさまざまなタイプのレイアウトをもつことができます。

  • データはさまざまな数の次元をもつことができます。たとえば、イメージ データとビデオ データをそれぞれ 4 次元配列と 5 次元配列として表現できます。

  • データの次元はさまざまなものを表すことができます。たとえば、イメージ データは、2 つの空間次元、1 つのチャネル次元、および 1 つのバッチ次元をもちます。

  • データの次元はさまざまな順序で指定できます。たとえば、シーケンスのバッチを、チャネル、タイム ステップ、および観測値に対応する次元をもつ 3 次元配列として表すことができます。これらの次元は任意の順序で指定することができます。

ソフトウェアを必ず正しい次元で動作させるには、さまざまな方法でデータ レイアウト情報を与えます。

オプションシナリオ使用方法

特定の順列で次元を指定してデータを与える

入力層があり、データのレイアウトが整っているネットワーク。

データをネットワークまたは関数に直接渡します。

ラベル付きの次元を指定してデータを与える

入力層があり、データのレイアウトが整っていないネットワーク。

fmt 引数を使用して、形式を整えた dlarray オブジェクトを作成します。

複数の深層学習演算を使用する関数として定義された深層学習モデル。

複数の深層学習演算を使用するカスタム層。

nnet.layer.Formattable から継承された層を作成します。

追加のレイアウト情報を指定してデータを与える

レイアウト情報を必要とする深層学習関数で、データのレイアウトを保持する必要がある場合。

適切な入力引数を使用してレイアウト情報を指定します。例: lstm 関数の DataFormat 引数。

関数間で次元が変化するモデル関数。たとえば、ある関数では 3 番目の次元を時間として扱わなければならず、別の関数では 3 番目の次元を空間として扱わなければならない場合。

ラベル付きの次元や追加のレイアウト情報を指定して入力データを与えるには、"データ形式" を使用します。

データ形式は文字列で、各文字は対応するデータ次元のタイプを表します。

各文字は以下のとおりです。

  • "S" — 空間

  • "C" — チャネル

  • "B" — バッチ

  • "T" — 時間

  • "U" — 指定なし

たとえば、シーケンスのバッチを表し、1 番目、2 番目、および 3 番目の次元がそれぞれチャネル、観測値、およびタイム ステップに対応する配列があるとします。データは "CBT" (チャネル、バッチ、時間) の形式で記述できます。

入力層をもつ dlnetwork オブジェクトの場合、または trainnet 関数を使用する場合、データのレイアウトが既にネットワークに必要なレイアウトとなっている場合は、通常、ネットワークが必要とする順序で次元を指定して入力データを与えるのが最も簡単です。この場合、レイアウト情報を指定せずにデータを直接入力することができます。必要な形式は入力層のタイプによって異なります。

形式
特徴入力層"BC"
2 次元イメージ入力層"SSCB"
3 次元イメージ入力層"SSSCB"
シーケンス入力層"TCB" (ベクトル シーケンス)
"SCBT" (1 次元イメージ シーケンス)
"SSCBT" (2 次元イメージ シーケンス)
"SSSCBT" (3 次元イメージ シーケンス)

データのレイアウトが異なる場合は、データの形状を変更して前処理するよりも、形式を整えたデータまたはデータ形式情報を与える方が簡単な場合があります。たとえば、1 番目、2 番目、3 番目の次元がそれぞれチャネル、観測値、およびタイム ステップに対応するシーケンス データがある場合は、ソフトウェアで必要なレイアウトになるようにデータを並べ替えて前処理する代わりに、文字列 "CBT" を指定できます。

形式を整えた入力データを作成するには、dlarray オブジェクトを作成し、fmt 引数を使用して形式を指定します。たとえば、シーケンスのバッチを表し、1 番目、2 番目、および 3 番目の次元がそれぞれチャネル、観測値、およびタイム ステップに対応する配列 X がある場合、次のように指定します。

X = dlarray(X,"CBT");

メモ

形式を整えた dlarray オブジェクトを作成する場合、ソフトウェアは、形式内の次元が以下の順序となるように次元を自動的に並べ替えます。

  • "S"

  • "C"

  • "B"

  • "T"

  • "U"

たとえば、形式を "TCB" (時間、チャネル、バッチ) と指定すると、ソフトウェアは形式が "CBT" (チャネル、バッチ、時間) となるように次元を自動的に並べ替えます。

形式が整えられていないデータとともに追加のレイアウト情報を深層学習演算に与えるには、関数の適切な入力引数を使用して形式を指定します。たとえば、最初の 2 つの次元が空間次元に対応し、3 番目と 4 番目の次元がそれぞれチャネル次元とバッチ次元に対応するイメージのバッチを表す、形式が整えられていない dlarray オブジェクト X に対し、dlconv 演算を適用するには、次のように指定します。

Y = dlconv(X,weights,bias,DataFormat="SSCB");

dlarray オブジェクトのレイアウト情報を表示するには、dims 関数を使用します。層の出力のレイアウト情報を表示するには、analyzeNetwork 関数を使用します。

参考

| | |

トピック