メインコンテンツ

transposedConv1dLayer

1 次元転置畳み込み層

R2022a 以降

    説明

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

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

    layer = transposedConv1dLayer(filterSize,numFilters) は、1 次元転置畳み込み層を返し、FilterSize プロパティおよび NumFilters プロパティを設定します。

    layer = transposedConv1dLayer(filterSize,numFilters,Name=Value) は、1 次元転置畳み込み層を返し、1 つ以上の名前と値の引数を使用して追加のオプションを指定します。

    すべて折りたたむ

    長さが 11 でストライドが 4 である 96 個のフィルターをもつ 1 次元転置畳み込み層を作成します。

    layer = transposedConv1dLayer(11,96,Stride=4)
    layer = 
      TransposedConvolution1DLayer with properties:
    
                Name: ''
    
       Hyperparameters
          FilterSize: 11
         NumChannels: 'auto'
          NumFilters: 96
              Stride: 4
        CroppingMode: 'manual'
        CroppingSize: [0 0]
    
       Learnable Parameters
             Weights: []
                Bias: []
    
      Show all properties
    
    

    入力引数

    すべて折りたたむ

    フィルターの長さ。正の整数として指定します。フィルターのサイズは、入力でニューロンが結合する局所領域のサイズを定義します。

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

    フィルターの数。正の整数として指定します。この数値は、入力の同じ領域に結合する層のニューロンの数に対応します。このパラメーターは、層の出力におけるチャネル (特徴マップ) の数を決定します。

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

    名前と値の引数

    すべて展開する

    オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

    例: transposedConv1dLayer(11,96,Stride=4) は、長さが 11 でストライドが 4 である 96 個のフィルターをもつ 1 次元転置畳み込み層を作成します。

    転置畳み込み

    すべて展開する

    入力のアップサンプリング係数。水平方向のストライドに対応する正の整数として指定します。

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

    出力サイズの削減。次のいずれかとして指定します。

    • "same" — 出力サイズが inputSize.*Stride と等しくなるようにトリミングを設定します。ここで、inputSize は層の入力の長さです。Cropping"same" の場合、層の CroppingMode プロパティが自動的に 'same' に設定されます。

      可能な場合に、左右から同じ量がトリミングされます。水平方向のトリミング量が奇数の場合、右にある列が余分にトリミングされます。

    • 正の整数 — 左右の端から指定された量のデータがトリミングされます。

    • 非負の整数から成るベクトル [l r] — 左と右からそれぞれ lr だけトリミングされます。

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

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

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

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

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

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

    パラメーターと初期化

    すべて展開する

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

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

    • "he" – He 初期化子[2]を使用して重みを初期化します。He 初期化子は、平均 0、分散 2/numIn の正規分布からサンプリングを行います。ここで、numIn = FilterSize*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 プロパティが空の場合にのみバイアスが初期化されます。

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

    データ型: char | string | function_handle

    転置畳み込み演算で使用する層の重み。FilterSize×NumFilters×NumChannels の数値配列、または [] として指定します。

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

    データ型: single | double

    転置畳み込み演算で使用する層のバイアス。1 行 NumFilters 列の数値配列、または [] として指定します。

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

    データ型: single | double

    学習率および正則化

    すべて展開する

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

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

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

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

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

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

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

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

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

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

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

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

    すべて展開する

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

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

    データ型: char | string

    出力引数

    すべて折りたたむ

    1 次元転置畳み込み層。TransposedConvolution1DLayer オブジェクトとして返されます。

    アルゴリズム

    すべて折りたたむ

    参照

    [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

    拡張機能

    すべて展開する

    バージョン履歴

    R2022a で導入