Main Content

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

imageInputLayer

説明

イメージ入力層は、ニューラル ネットワークに 2 次元イメージを入力し、データ正規化を適用します。

3 次元イメージ入力の場合、image3dInputLayer を使用します。

作成

説明

layer = imageInputLayer(inputSize) はイメージ入力層を返し、InputSize プロパティを指定します。

layer = imageInputLayer(inputSize,Name,Value) は、1 つ以上の名前と値のペアの引数を使用して、オプションの NormalizationNormalizationDimensionMeanStandardDeviationMinMaxSplitComplexInputs、および Name プロパティを設定します。プロパティ名を引用符で囲みます。

プロパティ

すべて展開する

イメージ入力

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

入力データのサイズ。整数の行ベクトル [h w c] として指定します。ここで、hw、および c はそれぞれ高さ、幅、およびチャネル数に対応します。

  • グレースケール イメージの場合、c1 に等しいベクトルを指定します。

  • RGB イメージの場合、c3 に等しいベクトルを指定します。

  • マルチスペクトル イメージまたはハイパースペクトル イメージの場合、c がチャネル数に等しいベクトルを指定します。

3 次元イメージ入力またはボリューム入力の場合、image3dInputLayer を使用します。

例: [224 224 3]

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

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

  • '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' – チャネル単位の正規化。

  • 'element' – 要素単位の正規化。

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

データ型: char | string

ゼロ中心正規化および z スコア正規化の平均。h x w x c の配列、チャネルごとの平均から成る 1 x 1 x c の配列、数値スカラー、または [] として指定します。ここで、h、w、および c はそれぞれ平均の高さ、幅、およびチャネル数に対応します。

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

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

z スコア正規化の標準偏差。h x w x c の配列、チャネルごとの平均から成る 1 x 1 x c の配列、数値スカラー、または [] として指定します。ここで、h、w、および c はそれぞれ標準偏差の高さ、幅、およびチャネル数に対応します。

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

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

再スケーリングの最小値。h x w x c の配列、チャネルごとの最小値から成る 1 x 1 x c の配列、数値スカラー、または [] として指定します。ここで、h、w、および c はそれぞれ最小値の高さ、幅、およびチャネル数に対応します。

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

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

再スケーリングの最大値。h x w x c の配列、チャネルごとの最大値から成る 1 x 1 x c の配列、数値スカラー、または [] として指定します。ここで、h、w、および c はそれぞれ最大値の高さ、幅、およびチャネル数に対応します。

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 でなければなりません。

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

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

メモ

DataAugmentation プロパティは推奨されません。トリミング、反転、およびその他の幾何変換によってイメージを前処理するには、代わりに augmentedImageDatastore を使用します。

学習時に使用するデータ拡張変換。次のいずれかに指定します。

  • 'none' — データ拡張を行いません。

  • 'randcrop' — 学習イメージからランダムにトリミングします。ランダムなトリミングのサイズは、入力のサイズと同じです。

  • 'randfliplr' — 50% の確率で入力イメージを水平方向にランダムに反転させます。

  • 'randcrop' および 'randfliplr' の cell 配列。cell 配列で指定された順序で拡張が適用されます。

イメージ データの拡張は、過適合を防ぐもう 1 つの方法です[1][2]

データ型: string | char | cell

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

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

データ型: char | string

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

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

データ型: double

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

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

データ型: cell

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

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

データ型: double

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

出力名。{'out'} として返されます。この層には単一の出力のみがあります。

データ型: cell

すべて折りたたむ

'input' という名前で 28 x 28 のカラー イメージのイメージ入力層を作成します。既定では、すべての入力イメージから学習セットの平均イメージを減算することで、層でデータ正規化が実行されます。

inputlayer = imageInputLayer([28 28 3],'Name','input')
inputlayer = 
  ImageInputLayer with properties:

                      Name: 'input'
                 InputSize: [28 28 3]
        SplitComplexInputs: 0

   Hyperparameters
          DataAugmentation: 'none'
             Normalization: 'zerocenter'
    NormalizationDimension: 'auto'
                      Mean: []

Layer 配列にイメージ入力層を含めます。

layers = [ ...
    imageInputLayer([28 28 1])
    convolution2dLayer(5,20)
    reluLayer
    maxPooling2dLayer(2,'Stride',2)
    fullyConnectedLayer(10)
    softmaxLayer
    classificationLayer]
layers = 
  7x1 Layer array with layers:

     1   ''   Image Input             28x28x1 images with 'zerocenter' normalization
     2   ''   2-D Convolution         20 5x5 convolutions with stride [1  1] and padding [0  0  0  0]
     3   ''   ReLU                    ReLU
     4   ''   2-D Max Pooling         2x2 max pooling with stride [2  2] and padding [0  0  0  0]
     5   ''   Fully Connected         10 fully connected layer
     6   ''   Softmax                 softmax
     7   ''   Classification Output   crossentropyex

アルゴリズム

すべて展開する

参照

[1] Krizhevsky, Alex, Ilya Sutskever, and Geoffrey E. Hinton. "ImageNet Classification with Deep Convolutional Neural Networks." Communications of the ACM 60, no. 6 (May 24, 2017): 84–90. https://doi.org/10.1145/3065386

[2] Cireşan, D., U. Meier, J. Schmidhuber. "Multi-column Deep Neural Networks for Image Classification". IEEE Conference on Computer Vision and Pattern Recognition, 2012.

拡張機能

バージョン履歴

R2016a で導入

すべて展開する