Main Content

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

featureInputLayer

特徴入力層

R2020b 以降

説明

特徴入力層は、特徴データをニューラル ネットワークに入力し、データ正規化を適用します。特徴 (空間次元または時間次元のないデータ) を表す数値スカラーのデータ セットがある場合は、この層を使用します。

イメージ入力の場合、imageInputLayer を使用します。

作成

説明

layer = featureInputLayer(numFeatures) は、特徴入力層を返し、InputSize プロパティを指定された特徴数に設定します。

layer = featureInputLayer(numFeatures,Name,Value) は、名前と値のペアの引数を使用して、オプションのプロパティを設定します。複数の名前と値のペアの引数を指定できます。各プロパティ名を一重引用符で囲みます。

プロパティ

すべて展開する

特徴入力

データに含まれる各観測値の特徴数。正の整数として指定します。

イメージ入力の場合、imageInputLayer を使用します。

例: 10

データが入力層を通じて順伝播されるたびに適用するデータ正規化。次のいずれかに指定します。

  • '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 の使用時に正規化統計量を自動的に計算します。学習時に時間を節約するため、正規化に必要な統計量を指定し、trainingOptionsResetInputNormalization オプションを 0 (false) に設定します。

正規化の次元。次のいずれかに指定します。

  • 'auto' – 学習オプションが false の場合、いずれかの正規化統計量 (MeanStandardDeviationMin、または Max) を指定し、統計量に一致する次元に対して正規化を行います。そうでない場合、学習時に統計量を再計算し、チャネル単位の正規化を適用します。

  • 'channel' – チャネル単位の正規化。

  • 'all' – スカラーの統計量を使用してすべての値を正規化します。

ゼロ中心正規化および z スコア正規化の平均。特徴ごとの平均から成る 1 行 numFeatures 列のベクトル、数値スカラー、または [] として指定します。

Mean プロパティを指定する場合、Normalization'zerocenter' または 'zscore' でなければなりません。Mean[] の場合、関数 trainnet および trainNetwork は平均を計算します。カスタム学習ループを使用して dlnetwork オブジェクトに学習させる場合、または関数 assembleNetwork を使用して学習を行わずにネットワークを組み立てる場合は、Mean プロパティを数値スカラーまたは数値配列に設定しなければなりません。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

z スコア正規化の標準偏差。特徴ごとの平均から成る 1 行 numFeatures 列のベクトル、数値スカラー、または [] として指定します。

StandardDeviation プロパティを指定する場合、Normalization'zscore' でなければなりません。StandardDeviation[] の場合、関数 trainnet および trainNetwork は標準偏差を計算します。カスタム学習ループを使用して dlnetwork オブジェクトに学習させる場合、または関数 assembleNetwork を使用して学習を行わずにネットワークを組み立てる場合は、StandardDeviation プロパティを数値スカラーまたは数値配列に設定しなければなりません。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

再スケーリングの最小値。特徴ごとの最小値から成る 1 行 numFeatures 列のベクトル、数値スカラー、または [] として指定します。

Min プロパティを指定する場合、Normalization'rescale-symmetric' または 'rescale-zero-one' でなければなりません。Min[] の場合、関数 trainnet および trainNetwork は最小値を計算します。カスタム学習ループを使用して dlnetwork オブジェクトに学習させる場合、または関数 assembleNetwork を使用して学習を行わずにネットワークを組み立てる場合は、Min プロパティを数値スカラーまたは数値配列に設定しなければなりません。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

再スケーリングの最大値。特徴ごとの最大値から成る 1 行 numFeatures 列のベクトル、数値スカラー、または [] として指定します。

Max プロパティを指定する場合、Normalization'rescale-symmetric' または 'rescale-zero-one' でなければなりません。Max[] の場合、関数 trainnet および trainNetwork は最大値を計算します。カスタム学習ループを使用して dlnetwork オブジェクトに学習させる場合、または関数 assembleNetwork を使用して学習を行わずにネットワークを組み立てる場合は、Max プロパティを数値スカラーまたは数値配列に設定しなければなりません。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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

入力データを実数部と虚数部に分割するためのフラグ。次のいずれかの値として指定します。

  • 0 (false) – 入力データを分割しません。

  • 1 (true) – 入力データを実数部と虚数部に分割します。

SplitComplexInputs1 の場合、層の出力に含まれるチャネル数は、入力データに含まれるチャネル数の 2 倍になります。たとえば、入力データが numChannels 個のチャネルをもつ複素数値の場合、層の出力には 2*numChannels 個のチャネルが含まれます。このとき、1numChannels 番目のチャネルには入力データの実数部が格納され、numChannels+12*numChannels 番目のチャネルには入力データの虚数部が格納されます。入力データが実数の場合、numChannels+12*numChannels 番目のチャネルはすべて 0 になります。

複素数値のデータをニューラル ネットワークに入力するには、入力層の SplitComplexInputs オプションが 1 でなければなりません。

複素数値のデータをもつネットワークに学習させる方法を説明する例については、複素数値データを使用したネットワークの学習を参照してください。

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

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

データ型: char | string

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

層の入力の数。この層には入力がありません。

データ型: double

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

層の入力名。この層には入力がありません。

データ型: cell

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

層からの出力の数。1 として返されます。この層には単一の出力のみがあります。

データ型: double

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

出力名。{'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)

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

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.

アルゴリズム

すべて展開する

拡張機能

バージョン履歴

R2020b で導入