このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
sequenceInputLayer
シーケンス入力層
説明
シーケンス入力層は、シーケンス データをニューラル ネットワークに入力し、データ正規化を適用します。
作成
プロパティ
シーケンス入力
InputSize
— 入力のサイズ
正の整数 | 正の整数のベクトル
入力のサイズ。正の整数または正の整数のベクトルとして指定します。
ベクトル シーケンス入力の場合、
InputSize
は特徴の数に対応するスカラーです。1 次元イメージ シーケンス入力の場合、
InputSize
は 2 要素から成るベクトル[h c]
です。ここで、h
はイメージの高さ、c
はイメージのチャネル数です。2 次元イメージ シーケンス入力の場合、
InputSize
は 3 要素から成るベクトル[h w c]
です。ここで、h
はイメージの高さ、w
はイメージの幅、c
はイメージのチャネル数です。3 次元イメージ シーケンス入力の場合、
InputSize
は 4 要素から成るベクトル[h w d c]
です。ここで、h
はイメージの高さ、w
はイメージの幅、d
はイメージの深さ、c
はイメージのチャネル数です。
入力データの最小シーケンス長を指定するには、MinLength
プロパティを使用します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
MinLength
— 入力データの最小シーケンス長
1
(既定値) | 正の整数
入力データの最小シーケンス長。正の整数として指定します。ネットワークで学習または予測を行うときに、入力データのタイム ステップが MinLength
未満の場合、ソフトウェアはエラーをスローします。
時間次元のデータをダウンサンプリングするネットワークを作成するときは、ネットワークが学習データと予測用のデータをサポートするように注意しなければなりません。一部の深層学習層では、入力のシーケンス長が最小である必要があります。たとえば、1 次元畳み込み層では、入力に少なくともフィルター サイズと同じ数のタイム ステップが必要です。
シーケンス データの時系列がネットワークを介して伝播することで、シーケンスの長さが変化する可能性があります。たとえば、1 次元畳み込みなどのダウンサンプリング演算では、入力よりも少ないタイム ステップでデータを出力できます。これは、データのシーケンス長が層に必要な最小長よりも短いため、ダウンサンプリング演算によってネットワーク内の後の層がエラーをスローする可能性があることを意味します。
ネットワークの学習や組み立てを行うとき、ソフトウェアは長さ 1 のシーケンスがネットワークを介して伝播できることを自動的にチェックします。一部のネットワークは、長さ 1 のシーケンスをサポートしていない可能性がありますが、シーケンス長がそれより大きいシーケンスを正常に伝播できます。ネットワークが学習データと予想される予測データの伝播をサポートしていることを確認するには、MinLength
プロパティを、データの最小長と予測データの予想最小長の値以下に設定します。
ヒント
畳み込み層とプーリング層がデータのサイズを変更しないようにするには、層の Padding
オプションを "same"
または "causal"
に設定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Normalization
— データ正規化
'none'
(既定値) | 'zerocenter'
| 'zscore'
| 'rescale-symmetric'
| 'rescale-zero-one'
| 関数ハンドル
データが入力層を通じて順伝播されるたびに適用するデータ正規化。次のいずれかに指定します。
'zerocenter'
—Mean
によって指定された平均を減算します。'zscore'
—Mean
によって指定された平均を減算し、StandardDeviation
で除算します。'rescale-symmetric'
—Min
およびMax
によってそれぞれ指定された最小値と最大値を使用して、範囲 [-1, 1] に入力を再スケーリングします。'rescale-zero-one'
—Min
およびMax
によってそれぞれ指定された最小値と最大値を使用して、範囲 [0, 1] に入力を再スケーリングします。'none'
— 入力データを正規化しません。関数ハンドル — 指定した関数を使用してデータを正規化します。関数は、
Y = func(X)
という形式でなければなりません。ここで、X
は入力データ、出力Y
は正規化データです。
ヒント
既定では、ソフトウェアは、関数 trainnet
および trainNetwork
の使用時に正規化統計量を自動的に計算します。学習時に時間を節約するため、正規化に必要な統計量を指定し、trainingOptions
で ResetInputNormalization
オプションを 0
(false
) に設定します。
パディング値などのすべての入力要素に正規化が適用されます。
データ型: char
| string
| function_handle
NormalizationDimension
— 正規化の次元
'auto'
(既定値) | 'channel'
| 'element'
| 'all'
正規化の次元。次のいずれかに指定します。
'auto'
– 学習オプションがfalse
の場合、いずれかの正規化統計量 (Mean
、StandardDeviation
、Min
、またはMax
) を指定し、統計量に一致する次元に対して正規化を行います。そうでない場合、学習時に統計量を再計算し、チャネル単位の正規化を適用します。'channel'
– チャネル単位の正規化。'element'
– 要素単位の正規化。'all'
– スカラーの統計量を使用してすべての値を正規化します。
データ型: char
| string
Mean
— ゼロ中心正規化および z スコア正規化の平均
[]
(既定値) | 数値配列 | 数値スカラー
ゼロ中心正規化および z スコア正規化の平均。数値配列または空として指定します。
ベクトル シーケンス入力の場合、
Mean
はチャネルごとの平均から成るInputSize
行 1 列のベクトル、数値スカラー、または[]
でなければなりません。2 次元イメージ シーケンス入力の場合、
Mean
はInputSize
と同じサイズの数値配列、チャネルごとの平均から成る 1 x 1 xInputSize(3)
の配列、数値スカラー、または[]
でなければなりません。3 次元イメージ シーケンス入力の場合、
Mean
はInputSize
と同じサイズの数値配列、チャネルごとの平均から成る 1 x 1 x 1 xInputSize(4)
の配列、数値スカラー、または[]
でなければなりません。
Mean
プロパティを指定する場合、Normalization
は 'zerocenter'
または 'zscore'
でなければなりません。Mean
が []
の場合、関数 trainnet
および trainNetwork
は平均を計算し、パディング値を無視します。カスタム学習ループを使用して dlnetwork
オブジェクトに学習させる場合、または関数 assembleNetwork
を使用して学習を行わずにネットワークを組み立てる場合は、Mean
プロパティを数値スカラーまたは数値配列に設定しなければなりません。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
StandardDeviation
— 標準偏差
[]
(既定値) | 数値配列 | 数値スカラー
z スコア正規化に使用される標準偏差。数値配列、数値スカラー、または空として指定します。
ベクトル シーケンス入力の場合、
StandardDeviation
はチャネルごとの標準偏差から成るInputSize
行 1 列のベクトル、数値スカラー、または[]
でなければなりません。2 次元イメージ シーケンス入力の場合、
StandardDeviation
はInputSize
と同じサイズの数値配列、チャネルごとの標準偏差から成る 1 x 1 xInputSize(3)
の配列、数値スカラー、または[]
でなければなりません。3 次元イメージ シーケンス入力の場合、
StandardDeviation
はInputSize
と同じサイズの数値配列、チャネルごとの標準偏差から成る 1 x 1 x 1 xInputSize(4)
の配列、または数値スカラーでなければなりません。
StandardDeviation
プロパティを指定する場合、Normalization
は 'zscore'
でなければなりません。StandardDeviation
が []
の場合、関数 trainnet
および trainNetwork
は平均を計算し、パディング値を無視します。カスタム学習ループを使用して dlnetwork
オブジェクトに学習させる場合、または関数 assembleNetwork
を使用して学習を行わずにネットワークを組み立てる場合は、StandardDeviation
プロパティを数値スカラーまたは数値配列に設定しなければなりません。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Min
— 再スケーリングの最小値
[]
(既定値) | 数値配列 | 数値スカラー
再スケーリングの最小値。数値配列または空として指定します。
Min
プロパティを指定する場合、Normalization
は 'rescale-symmetric'
または 'rescale-zero-one'
でなければなりません。Min
が []
の場合、関数 trainnet
および trainNetwork
は最小値を計算し、パディング値を無視します。カスタム学習ループを使用して dlnetwork
オブジェクトに学習させる場合、または関数 assembleNetwork
を使用して学習を行わずにネットワークを組み立てる場合は、Min
プロパティを数値スカラーまたは数値配列に設定しなければなりません。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Max
— 再スケーリングの最大値
[]
(既定値) | 数値配列 | 数値スカラー
再スケーリングの最大値。数値配列または空として指定します。
ベクトル シーケンス入力の場合、
Max
はチャネルごとの平均から成るInputSize
行 1 列のベクトル、または数値スカラーでなければなりません。2 次元イメージ シーケンス入力の場合、
Max
はInputSize
と同じサイズの数値配列、チャネルごとの最大値から成る 1 x 1 xInputSize(3)
の配列、数値スカラー、または[]
でなければなりません。3 次元イメージ シーケンス入力の場合、
Max
はInputSize
と同じサイズの数値配列、チャネルごとの最大値から成る 1 x 1 x 1 xInputSize(4)
の配列、数値スカラー、または[]
でなければなりません。
Max
プロパティを指定する場合、Normalization
は 'rescale-symmetric'
または 'rescale-zero-one'
でなければなりません。Max
が []
の場合、関数 trainnet
および trainNetwork
は最大値を計算し、パディング値を無視します。カスタム学習ループを使用して dlnetwork
オブジェクトに学習させる場合、または関数 assembleNetwork
を使用して学習を行わずにネットワークを組み立てる場合は、Max
プロパティを数値スカラーまたは数値配列に設定しなければなりません。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
SplitComplexInputs
— 入力データを実数部と虚数部に分割するためのフラグ
0
(false
) (既定値) | 1
(true
)
この プロパティ は読み取り専用です。
入力データを実数部と虚数部に分割するためのフラグ。次のいずれかの値として指定します。
0
(false
) – 入力データを分割しません。1
(true
) – 入力データを実数部と虚数部に分割します。
SplitComplexInputs
が 1
の場合、層の出力に含まれるチャネル数は、入力データに含まれるチャネル数の 2 倍になります。たとえば、入力データが numChannels
個のチャネルをもつ複素数値の場合、層の出力には 2*numChannels
個のチャネルが含まれます。このとき、1
~ numChannels
番目のチャネルには入力データの実数部が格納され、numChannels+1
~ 2*numChannels
番目のチャネルには入力データの虚数部が格納されます。入力データが実数の場合、numChannels+1
~ 2*numChannels
番目のチャネルはすべて 0 になります。
複素数値のデータをニューラル ネットワークに入力するには、入力層の SplitComplexInputs
オプションが 1
でなければなりません。
複素数値のデータをもつネットワークに学習させる方法を説明する例については、複素数値データを使用したネットワークの学習を参照してください。
層
Name
— 層の名前
""
(既定値) | 文字ベクトル | string スカラー
層の名前。文字ベクトルまたは string スカラーとして指定します。Layer
配列入力の場合、関数 trainnet
、trainNetwork
、assembleNetwork
、layerGraph
、および dlnetwork
は、名前が ""
の層に自動的に名前を割り当てます。
SequenceInputLayer
オブジェクトは、このプロパティを文字ベクトルとして格納します。
データ型: char
| string
NumInputs
— 入力の数
0 (既定値)
この プロパティ は読み取り専用です。
層の入力の数。この層には入力がありません。
データ型: double
InputNames
— 入力名
{}
(既定値)
この プロパティ は読み取り専用です。
層の入力名。この層には入力がありません。
データ型: cell
NumOutputs
— 出力の数
1
(既定値)
この プロパティ は読み取り専用です。
層からの出力の数。1
として返されます。この層には単一の出力のみがあります。
データ型: double
OutputNames
— 出力名
{'out'}
(既定値)
この プロパティ は読み取り専用です。
出力名。{'out'}
として返されます。この層には単一の出力のみがあります。
データ型: cell
例
シーケンス入力層の作成
名前が 'seq1'
、入力サイズが 12 のシーケンス入力層を作成します。
layer = sequenceInputLayer(12,'Name','seq1')
layer = SequenceInputLayer with properties: Name: 'seq1' InputSize: 12 MinLength: 1 SplitComplexInputs: 0 Hyperparameters Normalization: 'none' NormalizationDimension: 'auto'
シーケンス入力層を Layer
配列に含めます。
inputSize = 12; numHiddenUnits = 100; numClasses = 9; layers = [ ... sequenceInputLayer(inputSize) lstmLayer(numHiddenUnits,'OutputMode','last') fullyConnectedLayer(numClasses) softmaxLayer classificationLayer]
layers = 5x1 Layer array with layers: 1 '' Sequence Input Sequence input with 12 dimensions 2 '' LSTM LSTM with 100 hidden units 3 '' Fully Connected 9 fully connected layer 4 '' Softmax softmax 5 '' Classification Output crossentropyex
イメージ シーケンスのシーケンス入力層の作成
名前が 'seq1'
の 224 行 224 列の RGB イメージのシーケンスに対して、シーケンス入力層を作成します。
layer = sequenceInputLayer([224 224 3], 'Name', 'seq1')
layer = SequenceInputLayer with properties: Name: 'seq1' InputSize: [224 224 3] MinLength: 1 SplitComplexInputs: 0 Hyperparameters Normalization: 'none' NormalizationDimension: 'auto'
シーケンス分類についてのネットワークの学習
sequence-to-label 分類について深層学習 LSTM ネットワークに学習をさせます。
サンプル データを WaveformData.mat
から読み込みます。データは、numObservations
行 1 列のシーケンスの cell 配列です。ここで、numObservations
はシーケンスの数です。各シーケンスは numChannels
行 -numTimeSteps
列の数値配列です。ここで、numChannels
はシーケンスのチャネル数、numTimeSteps
はシーケンスのタイム ステップ数です。
load WaveformData
シーケンスの一部をプロットで可視化します。
numChannels = size(data{1},1); idx = [3 4 5 12]; figure tiledlayout(2,2) for i = 1:4 nexttile stackedplot(data{idx(i)}',DisplayLabels="Channel "+string(1:numChannels)) xlabel("Time Step") title("Class: " + string(labels(idx(i)))) end
テスト用のデータを確保します。データの 90% から成る学習セットとデータの残りの 10% から成るテスト セットにデータを分割します。データを分割するには、この例にサポート ファイルとして添付されている関数 trainingPartitions
を使用します。このファイルにアクセスするには、例をライブ スクリプトとして開きます。
numObservations = numel(data); [idxTrain,idxTest] = trainingPartitions(numObservations, [0.9 0.1]); XTrain = data(idxTrain); TTrain = labels(idxTrain); XTest = data(idxTest); TTest = labels(idxTest);
LSTM ネットワーク アーキテクチャを定義します。入力サイズを入力データのチャネルの数として指定します。120 個の隠れユニットを含み、シーケンスの最後の要素を出力するように LSTM 層を指定します。最後に、クラス数と一致する出力サイズをもつ全結合層を含め、その後にソフトマックス層と分類層を含めます。
numHiddenUnits = 120; numClasses = numel(categories(TTrain)); layers = [ ... sequenceInputLayer(numChannels) lstmLayer(numHiddenUnits,OutputMode="last") fullyConnectedLayer(numClasses) softmaxLayer classificationLayer]
layers = 5×1 Layer array with layers: 1 '' Sequence Input Sequence input with 3 dimensions 2 '' LSTM LSTM with 120 hidden units 3 '' Fully Connected 4 fully connected layer 4 '' Softmax softmax 5 '' Classification Output crossentropyex
学習オプションを指定します。学習率 0.01、勾配しきい値 1 で Adam ソルバーを使用して学習させます。エポックの最大数を 150 に設定し、すべてのエポックでデータをシャッフルします。既定では、ソフトウェアは GPU が利用できる場合に GPU で学習を行います。GPU を使用するには、Parallel Computing Toolbox とサポートされている GPU デバイスが必要です。サポートされているデバイスについては、GPU 計算の要件 (Parallel Computing Toolbox)を参照してください。
options = trainingOptions("adam", ... MaxEpochs=150, ... InitialLearnRate=0.01,... Shuffle="every-epoch", ... GradientThreshold=1, ... Verbose=false, ... Plots="training-progress");
学習オプションを指定して LSTM ネットワークに学習させます。
net = trainNetwork(XTrain,TTrain,layers,options);
テスト データを分類します。学習に使用されるサイズと同じミニバッチ サイズを指定します。
YTest = classify(net,XTest);
予測の分類精度を計算します。
acc = mean(YTest == TTest)
acc = 0.8400
分類結果を混同チャートで表示します。
figure confusionchart(TTest,YTest)
分類用の LSTM ネットワーク
sequence-to-label 分類用の LSTM ネットワークを作成するには、シーケンス入力層、LSTM 層、全結合層、ソフトマックス層、および分類出力層を含む層配列を作成します。
シーケンス入力層のサイズを入力データの特徴の数に設定します。全結合層のサイズをクラスの数に設定します。シーケンス長を指定する必要はありません。
LSTM 層では、隠れユニットの数と出力モード 'last'
を指定します。
numFeatures = 12; numHiddenUnits = 100; numClasses = 9; layers = [ ... sequenceInputLayer(numFeatures) lstmLayer(numHiddenUnits,'OutputMode','last') fullyConnectedLayer(numClasses) softmaxLayer classificationLayer];
sequence-to-label 分類について LSTM ネットワークに学習をさせ、新しいデータを分類する方法の例については、深層学習を使用したシーケンスの分類を参照してください。
sequence-to-sequence 分類用の LSTM ネットワークを作成するには、sequence-to-label 分類の場合と同じアーキテクチャを使用しますが、LSTM 層の出力モードを 'sequence'
に設定します。
numFeatures = 12; numHiddenUnits = 100; numClasses = 9; layers = [ ... sequenceInputLayer(numFeatures) lstmLayer(numHiddenUnits,'OutputMode','sequence') fullyConnectedLayer(numClasses) softmaxLayer classificationLayer];
回帰用の LSTM ネットワーク
sequence-to-one 回帰用の LSTM ネットワークを作成するには、シーケンス入力層、LSTM 層、全結合層、および回帰出力層を含む層配列を作成します。
シーケンス入力層のサイズを入力データの特徴の数に設定します。全結合層のサイズを応答の数に設定します。シーケンス長を指定する必要はありません。
LSTM 層では、隠れユニットの数と出力モード 'last'
を指定します。
numFeatures = 12; numHiddenUnits = 125; numResponses = 1; layers = [ ... sequenceInputLayer(numFeatures) lstmLayer(numHiddenUnits,'OutputMode','last') fullyConnectedLayer(numResponses) regressionLayer];
sequence-to-sequence 回帰用の LSTM ネットワークを作成するには、sequence-to-one 回帰の場合と同じアーキテクチャを使用しますが、LSTM 層の出力モードを 'sequence'
に設定します。
numFeatures = 12; numHiddenUnits = 125; numResponses = 1; layers = [ ... sequenceInputLayer(numFeatures) lstmLayer(numHiddenUnits,'OutputMode','sequence') fullyConnectedLayer(numResponses) regressionLayer];
sequence-to-sequence 回帰について LSTM ネットワークに学習をさせて、新しいデータを予測する方法の例については、深層学習を使用した sequence-to-sequence 回帰を参照してください。
深い LSTM ネットワーク
出力モードが 'sequence'
の追加の LSTM 層を LSTM 層の前に挿入すると、LSTM ネットワークを深くできます。過適合を防止するために、LSTM 層の後にドロップアウト層を挿入できます。
sequence-to-label 分類ネットワークでは、最後の LSTM 層の出力モードは 'last'
でなければなりません。
numFeatures = 12; numHiddenUnits1 = 125; numHiddenUnits2 = 100; numClasses = 9; layers = [ ... sequenceInputLayer(numFeatures) lstmLayer(numHiddenUnits1,'OutputMode','sequence') dropoutLayer(0.2) lstmLayer(numHiddenUnits2,'OutputMode','last') dropoutLayer(0.2) fullyConnectedLayer(numClasses) softmaxLayer classificationLayer];
sequence-to-sequence 分類ネットワークでは、最後の LSTM 層の出力モードは 'sequence'
でなければなりません。
numFeatures = 12; numHiddenUnits1 = 125; numHiddenUnits2 = 100; numClasses = 9; layers = [ ... sequenceInputLayer(numFeatures) lstmLayer(numHiddenUnits1,'OutputMode','sequence') dropoutLayer(0.2) lstmLayer(numHiddenUnits2,'OutputMode','sequence') dropoutLayer(0.2) fullyConnectedLayer(numClasses) softmaxLayer classificationLayer];
ビデオ分類用のネットワークの作成
ビデオや医用画像データなどのイメージのシーケンスを含むデータ用の深層学習ネットワークを作成します。
イメージのシーケンスをネットワークに入力するには、シーケンス入力層を使用します。
畳み込み演算を各タイム ステップに個別に適用するには、まずシーケンス折りたたみ層を使用してイメージのシーケンスをイメージの配列に変換します。
これらの演算の実行後にシーケンス構造を復元するには、シーケンス展開層を使用してこのイメージの配列をイメージ シーケンスに変換し直します。
イメージを特徴ベクトルに変換するには、フラット化層を使用します。
その後、ベクトル シーケンスを LSTM 層と BiLSTM 層に入力できます。
ネットワーク アーキテクチャの定義
28 x 28 のグレースケール イメージのシーケンスを 10 個のクラスに分類する分類用の LSTM ネットワークを作成します。
次のネットワーク アーキテクチャを定義します。
入力サイズ
[28 28 1]
のシーケンス入力層。20 個の 5 行 5 列のフィルターを持つ、畳み込み層、バッチ正規化層、および ReLU 層のブロック。
最後のタイム ステップのみを出力する、200 個の隠れユニットを持つ LSTM 層。
サイズが 10 (クラス数) の全結合層と、その後に配置するソフトマックス層と分類層。
畳み込み演算をタイム ステップごとに個別に実行するには、畳み込み層の前にシーケンス折りたたみ層を含めます。LSTM 層はベクトル シーケンス入力を想定しています。シーケンス構造を復元し、畳み込み層の出力を特徴ベクトルのシーケンスに形状変更するには、畳み込み層と LSTM 層の間にシーケンス展開層とフラット化層を挿入します。
inputSize = [28 28 1]; filterSize = 5; numFilters = 20; numHiddenUnits = 200; numClasses = 10; layers = [ ... sequenceInputLayer(inputSize,'Name','input') sequenceFoldingLayer('Name','fold') convolution2dLayer(filterSize,numFilters,'Name','conv') batchNormalizationLayer('Name','bn') reluLayer('Name','relu') sequenceUnfoldingLayer('Name','unfold') flattenLayer('Name','flatten') lstmLayer(numHiddenUnits,'OutputMode','last','Name','lstm') fullyConnectedLayer(numClasses, 'Name','fc') softmaxLayer('Name','softmax') classificationLayer('Name','classification')];
層を層グラフに変換し、シーケンス折りたたみ層の miniBatchSize
出力をシーケンス展開層の対応する入力に結合します。
lgraph = layerGraph(layers); lgraph = connectLayers(lgraph,'fold/miniBatchSize','unfold/miniBatchSize');
関数 plot
を使用して最終的なネットワーク アーキテクチャを表示します。
figure plot(lgraph)
アルゴリズム
層の出力形式
層配列内または層グラフ内の層は、書式化された dlarray
オブジェクトとして後続の層にデータを渡します。dlarray
オブジェクトの形式は文字列で、各文字はデータ内の対応する次元を表します。この形式には次の文字が 1 つ以上含まれています。
"S"
— 空間"C"
— チャネル"B"
— バッチ"T"
— 時間"U"
— 指定なし
たとえば、ベクトル シーケンス データを、最初の次元がチャネル次元に対応し、2 番目の次元がバッチ次元に対応し、3 番目の次元が時間次元に対応する 3 次元の配列として表すことができます。この表現は、"CBT"
(channel、batch、time) の形式になります。
ネットワークの入力層は、ネットワークで必要とされるデータのレイアウトを指定します。データのレイアウトが異なる場合、InputDataFormats
学習オプションを使用してレイアウトを指定します。
次の表に、シーケンス入力層をもつニューラル ネットワークが必要とするデータ レイアウトを示します。
データ | レイアウト |
---|---|
ベクトル シーケンス |
|
1 次元イメージ シーケンス | h×c×t の配列。ここで、h および c はそれぞれイメージの高さおよびチャネル数に対応します。t はシーケンス長です。 |
2 次元イメージ シーケンス | h×w×c×t の配列。ここで、h、w、および c は、それぞれイメージの高さ、幅、およびチャネル数に対応します。t はシーケンス長です。 |
3 次元イメージ シーケンス | h×w×d×c×t。ここで、h、w、d、および c は、それぞれ 3 次元イメージの高さ、幅、深さ、およびチャネル数に対応します。t はシーケンス長です。 |
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
ベクトル シーケンス入力の場合、特徴の数はコード生成時に定数でなければなりません。
コード生成では、入力データに 0 個または 2 個の空間次元が含まれていなければなりません。
コード生成では、関数ハンドルを使用して指定される
'Normalization'
はサポートされません。コード生成では、複素数の入力がサポートされておらず、
'SplitComplexInputs'
オプションもサポートされていません。
GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。
使用上の注意および制限:
GPU Coder™ を使用して CUDA® または C++ コードを生成するには、最初に深層ニューラル ネットワークを構築して学習させなければなりません。ネットワークの学習と評価が完了したら、コード ジェネレーターを構成してコードを生成し、NVIDIA® または ARM® GPU プロセッサを使用するプラットフォームに畳み込みニューラル ネットワークを展開できます。詳細については、GPU Coder を使用した深層学習 (GPU Coder)を参照してください。
この層向けに、NVIDIA CUDA 深層ニューラル ネットワーク ライブラリ (cuDNN) または NVIDIA TensorRT™ 高性能推論ライブラリを利用するコードを生成できます。
cuDNN ライブラリはベクトルおよび 2 次元イメージ シーケンスをサポートします。TensorRT ライブラリはベクトル入力シーケンスのみをサポートします。
ベクトル シーケンス入力の場合、特徴の数はコード生成時に定数でなければなりません。
イメージ シーケンス入力の場合、高さ、幅、およびチャネル数は、コード生成時に定数でなければなりません。
コード生成では、関数ハンドルを使用して指定される
'Normalization'
はサポートされません。コード生成では、複素数の入力がサポートされておらず、
'SplitComplexInputs'
オプションもサポートされていません。
バージョン履歴
R2017b で導入R2020a: trainNetwork
は正規化の統計値の計算時にパディング値を無視
R2020a 以降、trainNetwork
は正規化の統計値の計算時にパディング値を無視します。これは、sequenceInputLayer
の Normalization
オプションを使用すると学習結果がデータの操作の影響を受けなくなることを意味します。たとえば、'zerocenter'
正規化を実行すると、学習結果はデータの平均の影響を受けなくなります。
パディングされたシーケンスで学習させた場合、計算された正規化係数は以前のバージョンと異なる場合があるため、異なる結果が生成される可能性があります。
R2019b: sequenceInputLayer
は既定でゼロ中心正規化にチャネル単位の正規化を使用
R2019b 以降では、sequenceInputLayer
は既定でゼロ中心正規化にチャネル単位の正規化を使用します。以前のバージョンでは、この層は要素単位の正規化を使用します。この動作を再現するには、この層の NormalizationDimension
オプションを 'element'
に設定します。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)