このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
flattenLayer
フラット化層
説明
フラット化層は、入力の空間次元を折りたたんでチャネルの次元にします。
たとえば、層への入力が H×W×C×N×S の配列 (イメージのシーケンス) である場合、フラット化された出力は (H*W*C)×N×S の配列になります。
作成
プロパティ
Name
— 層の名前
""
(既定値) | 文字ベクトル | string スカラー
層の名前。文字ベクトルまたは string スカラーとして指定します。Layer
配列入力の場合、関数 trainnet
、trainNetwork
、assembleNetwork
、layerGraph
、および dlnetwork
は、名前が ""
の層に自動的に名前を割り当てます。
FlattenLayer
オブジェクトは、このプロパティを文字ベクトルとして格納します。
データ型: char
| string
NumInputs
— 入力の数
1
(既定値)
この プロパティ は読み取り専用です。
層への入力の数。1
として返されます。この層は単一の入力のみを受け入れます。
データ型: double
InputNames
— 入力名
{'in'}
(既定値)
この プロパティ は読み取り専用です。
入力名。{'in'}
として返されます。この層は単一の入力のみを受け入れます。
データ型: cell
NumOutputs
— 出力の数
1
(既定値)
この プロパティ は読み取り専用です。
層からの出力の数。1
として返されます。この層には単一の出力のみがあります。
データ型: double
OutputNames
— 出力名
{'out'}
(既定値)
この プロパティ は読み取り専用です。
出力名。{'out'}
として返されます。この層には単一の出力のみがあります。
データ型: cell
オブジェクト関数
例
フラット化層の作成
'flatten1'
という名前のフラット化層を作成します。
layer = flattenLayer('Name','flatten1')
layer = FlattenLayer with properties: Name: 'flatten1'
ビデオ分類用のネットワークの作成
ビデオや医用画像データなどのイメージのシーケンスを含むデータ用の深層学習ネットワークを作成します。
イメージのシーケンスをネットワークに入力するには、シーケンス入力層を使用します。
畳み込み演算を各タイム ステップに個別に適用するには、まずシーケンス折りたたみ層を使用してイメージのシーケンスをイメージの配列に変換します。
これらの演算の実行後にシーケンス構造を復元するには、シーケンス展開層を使用してこのイメージの配列をイメージ シーケンスに変換し直します。
イメージを特徴ベクトルに変換するには、フラット化層を使用します。
その後、ベクトル シーケンスを 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"
— 指定なし
たとえば、4 次元配列として表された 2 次元イメージ データがあり、最初の 2 つの次元がイメージの空間次元に対応し、3 番目の次元がイメージのチャネルに対応し、4 番目の次元がバッチ次元に対応している場合、このイメージ データは "SSCB"
(spatial、spatial、channel、batch) という書式で表されます。
functionLayer
オブジェクトを使用するか、関数 forward
と関数 predict
を dlnetwork
オブジェクトと共に使用して、カスタム層の開発などの自動微分ワークフローで、これらの dlarray
オブジェクトを操作できます。
次の表は、FlattenLayer
オブジェクトでサポートされている入力形式、および対応する出力形式を示しています。ソフトウェアが nnet.layer.Formattable
クラスを継承していないカスタム層、または Formattable
プロパティが 0
(false) に設定された FunctionLayer
オブジェクトに層の出力を渡す場合、その層は書式化されていない dlarray
オブジェクトを受け取り、この表に示された形式に従って次元が並べられます。ここには一部の形式のみを示します。層では、追加の "S"
(空間) 次元または "U"
(未指定) 次元をもつ形式など、追加の形式がサポートされている場合があります。
入力形式 | 出力形式 |
---|---|
|
|
| |
| |
| |
|
|
| |
| |
| |
|
|
| |
| |
|
dlnetwork
オブジェクトでは、FlattenLayer
オブジェクトもこれらの入力形式と出力形式の組み合わせをサポートします。
入力形式 | 出力形式 |
---|---|
|
|
| |
| |
|
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。
バージョン履歴
R2019a で導入
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)