このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
featureInputLayer
説明
特徴入力層は、特徴データをニューラル ネットワークに入力し、データ正規化を適用します。特徴 (空間次元または時間次元のないデータ) を表す数値スカラーのデータ セットがある場合は、この層を使用します。
イメージ入力の場合、imageInputLayer
を使用します。
作成
プロパティ
特徴入力
InputSize
— 特徴数
正の整数
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
は正規化データです。
ヒント
既定では、関数 trainNetwork
の使用時に正規化統計量が自動的に計算されます。学習時に時間を節約するため、正規化に必要な統計量を指定し、trainingOptions
で ResetInputNormalization
オプションを 0
(false
) に設定します。
NormalizationDimension
— 正規化の次元
'auto'
(既定値) | 'channel'
| 'all'
正規化の次元。次のいずれかに指定します。
'auto'
– 学習オプションがfalse
の場合、いずれかの正規化統計量 (Mean
、StandardDeviation
、Min
、またはMax
) を指定し、統計量に一致する次元に対して正規化を行います。そうでない場合、学習時に統計量を再計算し、チャネル単位の正規化を適用します。'channel'
– チャネル単位の正規化。'all'
– スカラーの統計量を使用してすべての値を正規化します。
Mean
— ゼロ中心正規化および z スコア正規化の平均
[]
(既定値) | 列ベクトル | 数値スカラー
ゼロ中心正規化および z スコア正規化の平均。特徴ごとの平均から成る 1 行 numFeatures
列のベクトル、数値スカラー、または []
として指定します。
Mean
プロパティを指定する場合、Normalization
は 'zerocenter'
または 'zscore'
でなければなりません。Mean
が []
の場合、関数 trainNetwork
は平均を計算します。カスタム学習ループを使用して dlnetwork
オブジェクトに学習させる場合、または関数 assembleNetwork
を使用して学習を行わずにネットワークを組み立てる場合は、Mean
プロパティを数値スカラーまたは数値配列に設定しなければなりません。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
StandardDeviation
— z スコア正規化の標準偏差
[]
(既定値) | 列ベクトル | 数値スカラー
z スコア正規化の標準偏差。特徴ごとの平均から成る 1 行 numFeatures
列のベクトル、数値スカラー、または []
として指定します。
StandardDeviation
プロパティを指定する場合、Normalization
は 'zscore'
でなければなりません。StandardDeviation
が []
の場合、関数 trainNetwork
は標準偏差を計算します。カスタム学習ループを使用して dlnetwork
オブジェクトに学習させる場合、または関数 assembleNetwork
を使用して学習を行わずにネットワークを組み立てる場合は、StandardDeviation
プロパティを数値スカラーまたは数値配列に設定しなければなりません。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Min
— 再スケーリングの最小値
[]
(既定値) | 列ベクトル | 数値スカラー
再スケーリングの最小値。特徴ごとの最小値から成る 1 行 numFeatures
列のベクトル、数値スカラー、または []
として指定します。
Min
プロパティを指定する場合、Normalization
は 'rescale-symmetric'
または 'rescale-zero-one'
でなければなりません。Min
が []
の場合、関数 trainNetwork
は最小値を計算します。カスタム学習ループを使用して dlnetwork
オブジェクトに学習させる場合、または関数 assembleNetwork
を使用して学習を行わずにネットワークを組み立てる場合は、Min
プロパティを数値スカラーまたは数値配列に設定しなければなりません。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Max
— 再スケーリングの最大値
[]
(既定値) | 列ベクトル | 数値スカラー
再スケーリングの最大値。特徴ごとの最大値から成る 1 行 numFeatures
列のベクトル、数値スカラー、または []
として指定します。
Max
プロパティを指定する場合、Normalization
は 'rescale-symmetric'
または 'rescale-zero-one'
でなければなりません。Max
が []
の場合、関数 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
配列入力の場合、関数 trainNetwork
、assembleNetwork
、layerGraph
、および dlnetwork
は、名前が ''
の層に自動的に名前を割り当てます。
データ型: char
| string
NumInputs
— 入力の数
0 (既定値)
この プロパティ は読み取り専用です。
層の入力の数。この層には入力がありません。
データ型: double
InputNames
— 入力名
{}
(既定値)
この プロパティ は読み取り専用です。
層の入力名。この層には入力がありません。
データ型: cell
NumOutputs
— 出力の数
1
(既定値)
この プロパティ は読み取り専用です。
層の出力の数。この層には単一の出力のみがあります。
データ型: double
OutputNames
— 出力名
{'out'}
(既定値)
この プロパティ は読み取り専用です。
層の出力名。この層には単一の出力のみがあります。
データ型: cell
例
特徴入力層の作成
21 個の特徴をもつ観測値について、名前が 'input'
である特徴入力層を作成します。
layer = featureInputLayer(21,'Name','input')
layer = FeatureInputLayer with properties: Name: 'input' InputSize: 21 SplitComplexInputs: 0 Hyperparameters Normalization: 'none' NormalizationDimension: 'auto'
特徴入力層を Layer
配列に含めます。
numFeatures = 21; numClasses = 3; layers = [ featureInputLayer(numFeatures,'Name','input') fullyConnectedLayer(numClasses, 'Name','fc') softmaxLayer('Name','sm') classificationLayer('Name','classification')]
layers = 4x1 Layer array with layers: 1 'input' Feature Input 21 features 2 'fc' Fully Connected 3 fully connected layer 3 'sm' Softmax softmax 4 'classification' Classification Output crossentropyex
イメージ入力層と特徴入力層の結合
イメージ入力層と特徴入力層の両方を含むネットワークに学習させるには、カスタム学習ループ内で dlnetwork
オブジェクトを使用しなければなりません。
入力イメージのサイズ、各観測値の特徴の数、クラスの数、畳み込み層のフィルターのサイズと数を定義します。
imageInputSize = [28 28 1]; numFeatures = 1; numClasses = 10; filterSize = 5; numFilters = 16;
入力層が 2 つあるネットワークを作成するには、ネットワークを 2 つの部分で定義して、それらを連結層を使用するなどして結合しなければなりません。
ネットワークの最初の部分を定義します。イメージ分類層を定義し、最後の全結合層の前にフラット化層と連結層を含めます。
layers = [ imageInputLayer(imageInputSize,'Normalization','none','Name','images') convolution2dLayer(filterSize,numFilters,'Name','conv') reluLayer('Name','relu') fullyConnectedLayer(50,'Name','fc1') flattenLayer('name','flatten') concatenationLayer(1,2,'Name','concat') fullyConnectedLayer(numClasses,'Name','fc2') softmaxLayer('Name','softmax')];
層を層グラフに変換します。
lgraph = layerGraph(layers);
ネットワークの 2 番目の部分については、特徴入力層を追加し、それを連結層の 2 番目の入力に結合します。
featInput = featureInputLayer(numFeatures,'Name','features'); lgraph = addLayers(lgraph, featInput); lgraph = connectLayers(lgraph, 'features', 'concat/in2');
ネットワークを可視化します。
plot(lgraph)
dlnetwork
オブジェクトを作成します。
dlnet = dlnetwork(lgraph)
dlnet = dlnetwork with properties: Layers: [9x1 nnet.cnn.layer.Layer] Connections: [8x2 table] Learnables: [6x3 table] State: [0x3 table] InputNames: {'images' 'features'} OutputNames: {'softmax'} Initialized: 1 View summary with summary.
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
コード生成では、複素数の入力がサポートされておらず、
'SplitComplexInputs'
オプションもサポートされていません。
GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。
GPU Coder™ を使用して CUDA® または C++ コードを生成するには、最初に深層ニューラル ネットワークを構築して学習させなければなりません。ネットワークの学習と評価が完了したら、コード ジェネレーターを構成してコードを生成し、NVIDIA® または ARM® GPU プロセッサを使用するプラットフォームに畳み込みニューラル ネットワークを展開できます。詳細については、GPU Coder を使用した深層学習 (GPU Coder)を参照してください。
コード生成では、複素数の入力がサポートされておらず、
'SplitComplexInputs'
オプションもサポートされていません。
バージョン履歴
R2020b で導入
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)