Main Content

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

sequenceFoldingLayer

シーケンス折りたたみ層

説明

シーケンス折りたたみ層は、イメージ シーケンスのバッチをイメージのバッチに変換します。シーケンス折りたたみ層を使用して、畳み込み演算をイメージ シーケンスのタイム ステップごとに個別に実行します。

シーケンス折りたたみ層を使用するには、miniBatchSize の出力を対応するシーケンス展開層の miniBatchSize の入力に接続しなければなりません。例については、ビデオ分類用のネットワークの作成を参照してください。

作成

説明

layer = sequenceFoldingLayer は、シーケンス折りたたみ層を作成します。

layer = sequenceFoldingLayer('Name',Name) は、シーケンス折りたたみ層を作成し、名前と値のペアを使用して、オプションの Name プロパティを設定します。たとえば、sequenceFoldingLayer('Name','fold1') は、'fold1' という名前のシーケンス折りたたみ層を作成します。プロパティ名を一重引用符で囲みます。

プロパティ

すべて展開する

層の名前。文字ベクトルまたは string スカラーとして指定します。Layer 配列入力の場合、関数 trainnettrainNetworkassembleNetworklayerGraph、および dlnetwork は、名前が "" の層に自動的に名前を割り当てます。

SequenceFoldingLayer オブジェクトは、このプロパティを文字ベクトルとして格納します。

データ型: char | string

この プロパティ は読み取り専用です。

層への入力の数。1 として返されます。この層は単一の入力のみを受け入れます。

データ型: double

この プロパティ は読み取り専用です。

入力名。{'in'} として返されます。この層は単一の入力のみを受け入れます。

データ型: cell

層の出力の数。

この層は 2 つの出力をもちます。

  • 'out' – 整形された入力に対応する出力特徴マップ。

  • 'miniBatchSize' – 層に渡されたミニバッチのサイズ。この出力を対応するシーケンス展開層の 'miniBatchSize' の入力に接続しなければなりません。

データ型: double

層の出力名。

この層は 2 つの出力をもちます。

  • 'out' – 整形された入力に対応する出力特徴マップ。

  • 'miniBatchSize' – 層に渡されたミニバッチのサイズ。この出力を対応するシーケンス展開層の 'miniBatchSize' の入力に接続しなければなりません。

データ型: cell

すべて折りたたむ

'fold1' という名前のシーケンス折りたたみ層を作成します。

layer = sequenceFoldingLayer('Name','fold1')
layer = 
  SequenceFoldingLayer with properties:

           Name: 'fold1'
     NumOutputs: 2
    OutputNames: {'out'  'miniBatchSize'}

ビデオや医用画像データなどのイメージのシーケンスを含むデータ用の深層学習ネットワークを作成します。

  • イメージのシーケンスをネットワークに入力するには、シーケンス入力層を使用します。

  • 畳み込み演算を各タイム ステップに個別に適用するには、まずシーケンス折りたたみ層を使用してイメージのシーケンスをイメージの配列に変換します。

  • これらの演算の実行後にシーケンス構造を復元するには、シーケンス展開層を使用してこのイメージの配列をイメージ シーケンスに変換し直します。

  • イメージを特徴ベクトルに変換するには、フラット化層を使用します。

その後、ベクトル シーケンスを 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)

Figure contains an axes object. The axes object contains an object of type graphplot.

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。

バージョン履歴

R2019a で導入