Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

sequenceUnfoldingLayer

説明

シーケンス展開層は、シーケンスの折りたたみ後に入力データのシーケンス構造を復元します。

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

作成

説明

layer = sequenceUnfoldingLayer は、シーケンス展開層を作成します。

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

プロパティ

すべて展開する

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

データ型: char | string

層の入力の数。

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

  • 'in' – 入力特徴マップ。

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

データ型: double

層の入力名。

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

  • 'in' – 入力特徴マップ。

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

データ型: cell

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

層の出力の数。この層には単一の出力のみがあります。

データ型: double

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

層の出力名。この層には単一の出力のみがあります。

データ型: cell

すべて折りたたむ

'unfold1' という名前のシーケンス展開層を作成します。

layer = sequenceUnfoldingLayer('Name','unfold1')
layer = 
  SequenceUnfoldingLayer with properties:

          Name: 'unfold1'
     NumInputs: 2
    InputNames: {'in'  '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.

拡張機能

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

バージョン履歴

R2019a で導入