メインコンテンツ

TransposedConvolution3DLayer

3 次元転置畳み込み層

説明

3 次元転置畳み込み層では 3 次元の特徴マップがアップサンプリングされます。

この層は、間違って "逆畳み込み" 層または "deconv" 層と呼ばれることがあります。この層は畳み込みの転置であり、逆畳み込みは実行しません。

作成

transposedConv3dLayer を使用して 3 次元転置畳み込み層を作成します。

プロパティ

すべて展開する

転置畳み込み

フィルターの高さ、幅、および深さ。3 つの正の整数のベクトル [h w d] として指定します。ここで、h は高さ、w は幅、d は深さです。FilterSize は、入力でニューロンが結合する局所領域のサイズを定義します。

層を作成する場合、FilterSize をスカラーとして指定して、高さ、幅、および深さに同じ値を使用できます。

例: [5 5 5] は高さ、幅、および深さが 5 であるフィルターを指定します。

このプロパティは、オブジェクト作成後、読み取り専用になります。TransposedConvolution3DLayer オブジェクトを作成する場合、このプロパティを設定するには、対応する位置入力の引数を使用します。

フィルターの数。正の整数として指定します。この数字は、層の出力のチャネル (特徴マップ) の数を決定します。

データ型: double

入力を 3 次元で走査するステップ サイズ。3 つの正の整数のベクトル [a b c] として指定します。ここで、a は垂直方向のステップ サイズ、b は水平方向のステップ サイズ、c は深さに沿ったステップ サイズです。層を作成する場合、Stride をスカラーとして指定して、3 つのすべての方向のステップ サイズに同じ値を使用できます。

例: [2 3 1] は、垂直方向のステップ サイズを 2、水平方向のステップ サイズを 3、深さに沿ったステップ サイズを 1 に指定します。

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

トリミング サイズを決定するメソッド。'manual' または 'same' として指定します。

ソフトウェアは、層の作成時に指定した 'Cropping' の値に基づいて CroppingMode の値を自動的に設定します。

  • Cropping オプションを数値に設定した場合、層の CroppingMode プロパティが自動的に 'manual' に設定されます。

  • 'Cropping' オプションを 'same' に設定すると、ソフトウェアは層の CroppingMode プロパティを自動的に 'same' に設定し、出力サイズが inputSize .* Stride と等しくなるようにトリミングを設定します。ここで、inputSize は層入力の高さ、幅、および深さです。

トリミング サイズを指定するには、transposedConv3dLayer'Cropping' オプションを使用します。

出力サイズの削減、非負の整数の行列 [t l f; b r bk] として指定します。tlfbrbk は、それぞれ入力の上端、左端、前端、下端、右端、後端からトリミングする量です。

トリミング サイズを手動で指定するには、transposedConv2dLayer'Cropping' オプションを使用します。

例: [0 1 0 1 0 1]

このプロパティは、オブジェクト作成後、読み取り専用になります。TransposedConvolution3DLayer オブジェクトを作成する場合、このプロパティを設定するには、対応する名前と値の引数を使用します。

入力チャネル数。次のいずれかの値として指定します。

  • "auto" — 学習時に入力チャネルの数を自動的に決定します。

  • 正の整数 — 指定された数の入力チャネルの層を構成します。NumChannels と層入力データのチャネル数は一致しなければなりません。たとえば、入力が RGB イメージの場合、NumChannels は 3 でなければなりません。入力が 16 個のフィルターをもつ畳み込み層の出力である場合、NumChannels は 16 でなければなりません。

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

データ型: double | char

パラメーターと初期化

重みを初期化する関数。次のいずれかに指定します。

  • "glorot" — Glorot 初期化子[1] (Xavier 初期化子とも呼ばれる) を使用して重みを初期化します。Glorot 初期化子は、平均 0、分散 2/(numIn + numOut) の正規分布から個別にサンプリングを行います。ここで、numIn = FilterSize(1)*FilterSize(2)*FilterSize(3)*NumChannels および numOut = FilterSize(1)*FilterSize(2)*FilterSize(3)*NumFilters です。

  • "he" — He 初期化子[2]を使用して重みを初期化します。He 初期化子は、平均 0、分散 2/numIn の正規分布からサンプリングを行います。ここで、numIn = FilterSize(1)*FilterSize(2)*FilterSize(3)*NumChannels です。

  • "narrow-normal" – 平均 0、標準偏差 0.01 の正規分布から個別にサンプリングを行って、重みを初期化します。

  • "zeros" — 0 で重みを初期化します。

  • "ones" — 1 で重みを初期化します。

  • 関数ハンドル — カスタム関数で重みを初期化します。関数ハンドルを指定する場合、関数の構文は weights = func(sz) という形式でなければなりません。ここで、sz は重みのサイズです。例については、カスタム重み初期化関数の指定を参照してください。

この層では、Weights プロパティが空の場合にのみ重みが初期化されます。

データ型: char | string | function_handle

バイアスを初期化する関数。次のいずれかの値として指定します。

  • "zeros" — 0 でバイアスを初期化します。

  • "ones" — 1 でバイアスを初期化します。

  • "narrow-normal" — 平均 0、標準偏差 0.01 の正規分布から個別にサンプリングを行って、バイアスを初期化します。

  • 関数ハンドル — カスタム関数でバイアスを初期化します。関数ハンドルを指定する場合、関数は bias = func(sz) という形式でなければなりません。ここで、sz はバイアスのサイズです。

この層では、Bias プロパティが空の場合にのみバイアスが初期化されます。

TransposedConvolution3DLayer オブジェクトは、このプロパティを文字ベクトルまたは関数ハンドルとして格納します。

データ型: char | string | function_handle

転置畳み込み層の重み。数値配列として指定します。

層の重みは学習可能なパラメーターです。層の Weights プロパティを使用して、重みの初期値を直接指定できます。ネットワークに学習させるときに、層の Weights プロパティが空でない場合、trainnet 関数は Weights プロパティを初期値として使用します。Weights プロパティが空の場合、ソフトウェアは層の WeightsInitializer プロパティによって指定された初期化子を使用します。

学習時に、WeightsFilterSize(1)×FilterSize(2)×FilterSize(3)×NumFilters×NumChannels の配列になります。

データ型: single | double

転置畳み込み層のバイアス。数値配列として指定します。

層のバイアスは学習可能なパラメーターです。ニューラル ネットワークに学習させるときに、Bias が空でない場合、trainnet 関数は Bias プロパティを初期値として使用します。Bias が空の場合、ソフトウェアは BiasInitializer プロパティによって指定された初期化子を使用します。

学習時に、Bias は 1×1×1×NumFilters の配列になります。

データ型: single | double

学習率および正則化

重みの学習率係数。非負のスカラーとして指定します。

この係数にグローバル学習率が乗算されて、この層の重みの学習率が決定されます。たとえば、WeightLearnRateFactor2 の場合、この層の重みの学習率は現在のグローバル学習率の 2 倍になります。関数 trainingOptions で指定した設定に基づいて、グローバル学習率が決定されます。

データ型: double

バイアスの学習率係数。非負のスカラーとして指定します。

この係数にグローバル学習率が乗算されて、この層のバイアスの学習率が決定されます。たとえば、BiasLearnRateFactor2 の場合、層のバイアスの学習率は現在のグローバル学習率の 2 倍になります。関数 trainingOptions で指定した設定に基づいて、グローバル学習率が決定されます。

TransposedConvolution3DLayer オブジェクトは、このプロパティを double 型として格納します。

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

重みの L2 正則化係数。非負のスカラーとして指定します。

この係数にグローバル L2 正則化係数が乗算されて、この層の重みの L2 正則化が決定されます。たとえば、WeightL2Factor2 の場合、この層の重みの L2 正則化はグローバル L2 正則化係数の 2 倍になります。グローバル L2 正則化係数は、関数 trainingOptions を使用して指定できます。

データ型: double

バイアスの L2 正則化係数。非負のスカラーとして指定します。

この係数にグローバル L2 正則化係数が乗算されて、この層のバイアスの L2 正則化が決定されます。たとえば、BiasL2Factor2 の場合、この層のバイアスの L2 正則化はグローバル L2 正則化係数の 2 倍になります。関数 trainingOptions で指定した設定に基づいて、グローバル L2 正則化係数が決定されます。

TransposedConvolution3DLayer オブジェクトは、このプロパティを double 型として格納します。

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

層の名前。文字ベクトルとして指定します。Layer 配列入力の場合、trainnet 関数および dlnetwork 関数は、名前のない層に自動的に名前を割り当てます。

データ型: char

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

層への入力の数。1 として格納されます。この層は単一の入力のみを受け入れます。

データ型: double

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

入力名。{'in'} として格納されます。この層は単一の入力のみを受け入れます。

データ型: cell

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

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

データ型: double

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

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

データ型: cell

すべて折りたたむ

高さ、幅、および深さがそれぞれ 11 であるフィルターを 32 個もつ 3 次元転置畳み込み層を作成します。水平方向と垂直方向に 4 のストライドを使用し、奥行き方向に 2 のストライドを使用します。

layer = transposedConv3dLayer(11,32,'Stride',[4 4 2])
layer = 
  TransposedConvolution3DLayer with properties:

            Name: ''

   Hyperparameters
      FilterSize: [11 11 11]
     NumChannels: 'auto'
      NumFilters: 32
          Stride: [4 4 2]
    CroppingMode: 'manual'
    CroppingSize: [2×3 double]

   Learnable Parameters
         Weights: []
            Bias: []

  Show all properties

アルゴリズム

すべて展開する

参照

[1] Glorot, Xavier, and Yoshua Bengio. "Understanding the Difficulty of Training Deep Feedforward Neural Networks." In Proceedings of the Thirteenth International Conference on Artificial Intelligence and Statistics, 249–356. Sardinia, Italy: AISTATS, 2010. https://proceedings.mlr.press/v9/glorot10a/glorot10a.pdf

[2] He, Kaiming, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. "Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification." In 2015 IEEE International Conference on Computer Vision (ICCV), 1026–34. Santiago, Chile: IEEE, 2015. https://doi.org/10.1109/ICCV.2015.123

バージョン履歴

R2019a で導入