Main Content

setL2Factor

層の学習可能なパラメーターの L2 正則化係数の設定

説明

layerUpdated = setL2Factor(layer,parameterName,factor) は、layerparameterName という名前のパラメーターの L2 正則化係数を factor に設定します。

組み込み層の場合、対応するプロパティを使用して L2 正則化係数を直接設定できます。たとえば、convolution2dLayer 層の場合、構文 layer = setL2Factor(layer,'Weights',factor)layer.WeightL2Factor = factor と等価です。

layerUpdated = setL2Factor(layer,parameterPath,factor) は、パス parameterPath で指定されたパラメーターの L2 正則化係数を設定します。この構文は、層が networkLayer のとき、またはパラメーターがカスタム層の dlnetwork オブジェクトにあるときに使用します。

netUpdated = setL2Factor(net,layerName,parameterName,factor) は、指定された dlnetwork オブジェクトの layerName という名前の層にある、parameterName という名前のパラメーターの L2 正則化係数を設定します。

netUpdated = setL2Factor(net,parameterPath,factor) は、パス parameterPath で指定されたパラメーターの L2 正則化係数を設定します。この構文は、パラメーターが networkLayer にあるとき、またはパラメーターがカスタム層の dlnetwork オブジェクトにあるときに使用します。

すべて折りたたむ

層の学習可能なパラメーターの L2 正則化係数を設定および取得します。

この例にサポート ファイルとして添付されているカスタム層 sreluLayer を含む層配列を作成します。この層にアクセスするには、この例をライブ スクリプトとして開きます。

カスタム層 sreluLayer を含む層配列を作成します。

layers = [
    imageInputLayer([28 28 1])
    convolution2dLayer(5,20)
    batchNormalizationLayer
    sreluLayer
    fullyConnectedLayer(10)
    softmaxLayer];

sreluLayer の学習可能なパラメーター LeftSlopeL2 正則化係数を 2 に設定します。

layers(4) = setL2Factor(layers(4),"LeftSlope",2);

更新された L2 正則化係数を表示します。

factor = getL2Factor(layers(4),"LeftSlope")
factor = 2

ネットワーク構成を使用して定義されたカスタム入れ子層の学習可能なパラメーターの L2 正則化係数を設定して取得します。

この例にサポート ファイルとして添付されているカスタム層 residualBlockLayer を使用して、残差ブロック層を作成します。このファイルにアクセスするには、この例をライブ スクリプトとして開きます。

numFilters = 64;
layer = residualBlockLayer(numFilters)
layer = 
  residualBlockLayer with properties:

       Name: ''

   Learnable Parameters
    Network: [1x1 dlnetwork]

   State Parameters
    Network: [1x1 dlnetwork]

Use properties method to see a list of all properties.

入れ子ネットワークの層を表示します。

layer.Network.Layers
ans = 
  7x1 Layer array with layers:

     1   'conv_1'        2-D Convolution       64 3x3 convolutions with stride [1  1] and padding 'same'
     2   'batchnorm_1'   Batch Normalization   Batch normalization
     3   'relu_1'        ReLU                  ReLU
     4   'conv_2'        2-D Convolution       64 3x3 convolutions with stride [1  1] and padding 'same'
     5   'batchnorm_2'   Batch Normalization   Batch normalization
     6   'add'           Addition              Element-wise addition of 2 inputs
     7   'relu_2'        ReLU                  ReLU

関数 setL2Factor を使用して、層 'conv_1' の学習可能なパラメーター 'Weights' の L2 正則化係数を 2 に設定します。

factor = 2;
layer = setL2Factor(layer,'Network/conv_1/Weights',factor);

関数 getL2Factor を使用して、更新された L2 正則化係数を取得します。

factor = getL2Factor(layer,'Network/conv_1/Weights')
factor = 2

dlnetwork オブジェクトの学習可能なパラメーターの L2 正則化係数を設定して取得します。

分類分岐の層を指定し、それをネットワークに追加します。

net = dlnetwork;
layers = [
    imageInputLayer([28 28 1],'Normalization','none','Name','in')
    convolution2dLayer(5,20,'Name','conv')
    batchNormalizationLayer('Name','bn')
    reluLayer('Name','relu')
    fullyConnectedLayer(10,'Name','fc')
    softmaxLayer('Name','sm')];

net = addLayers(net,layers);

関数 setL2Factor を使用して、畳み込み層の 'Weights' 学習可能パラメーターの L2 正則化係数を 2 に設定します。

factor = 2;
net = setL2Factor(net,'conv','Weights',factor);

関数 getL2Factor を使用して、更新された L2 正則化係数を取得します。

factor = getL2Factor(net,'conv','Weights')
factor = 2

100 個の隠れユニットをもつ lstmLayer、およびドロップアウトの確率が 0.2 である dropoutLayer を含む層の配列を作成します。

layers = [lstmLayer(100,OutputMode="sequence",Name="lstm")
    dropoutLayer(0.2,Name="dropout")];

これらの層を含むネットワーク層を作成します。

lstmDropoutLayer = networkLayer(layers,Name="lstmDropout");

このネットワーク層を使用してネットワークを構築します。

layers = [sequenceInputLayer(3)
    lstmDropoutLayer
    lstmDropoutLayer
    fullyConnectedLayer(10)
    softmaxLayer];

dlnetwork オブジェクトを作成します。関数trainnetを使用してネットワークの学習を行い、dlnetwork オブジェクトを作成することもできます。

net = dlnetwork(layers);

関数 setL2Factor を使用して、最初のネットワーク層にある LSTM 層の学習可能なパラメーター InputWeights の L2 正則化係数を 2 に設定します。

factor = 2;
net = setL2Factor(net,"lstmDropout_1/lstm/InputWeights",factor);

関数 getL2Factor を使用して、更新された L2 正則化係数を取得します。

factor = getL2Factor(net,"lstmDropout_1/lstm/InputWeights")
factor = 2

dlnetwork オブジェクト内のネットワーク構成を使用して定義されたカスタム入れ子層の学習可能なパラメーターの L2 正則化係数を設定して取得します。

この例にサポート ファイルとして添付されているカスタム層 residualBlockLayer を含む dlnetwork オブジェクトを作成します。このファイルにアクセスするには、この例をライブ スクリプトとして開きます。

inputSize = [224 224 3];
numFilters = 32;
numClasses = 5;

layers = [
    imageInputLayer(inputSize,'Normalization','none','Name','in')
    convolution2dLayer(7,numFilters,'Stride',2,'Padding','same','Name','conv')
    groupNormalizationLayer('all-channels','Name','gn')
    reluLayer('Name','relu')
    maxPooling2dLayer(3,'Stride',2,'Name','max')
    residualBlockLayer(numFilters,'Name','res1')
    residualBlockLayer(numFilters,'Name','res2')
    residualBlockLayer(2*numFilters,'Stride',2,'IncludeSkipConvolution',true,'Name','res3')
    residualBlockLayer(2*numFilters,'Name','res4')
    residualBlockLayer(4*numFilters,'Stride',2,'IncludeSkipConvolution',true,'Name','res5')
    residualBlockLayer(4*numFilters,'Name','res6')
    globalAveragePooling2dLayer('Name','gap')
    fullyConnectedLayer(numClasses,'Name','fc')
    softmaxLayer('Name','sm')];

dlnet = dlnetwork(layers);

dlnetwork オブジェクトの Learnables プロパティは、ネットワークの学習可能なパラメーターが格納された table です。この table には、入れ子層のパラメーターが別々の行に含まれています。層 "res1" の学習可能なパラメーターを表示します。

learnables = dlnet.Learnables;
idx = learnables.Layer == "res1";
learnables(idx,:)
ans=8×3 table
    Layer              Parameter                     Value       
    ______    ____________________________    ___________________

    "res1"    "Network/conv_1/Weights"        {3x3x32x32 dlarray}
    "res1"    "Network/conv_1/Bias"           {1x1x32    dlarray}
    "res1"    "Network/batchnorm_1/Offset"    {1x1x32    dlarray}
    "res1"    "Network/batchnorm_1/Scale"     {1x1x32    dlarray}
    "res1"    "Network/conv_2/Weights"        {3x3x32x32 dlarray}
    "res1"    "Network/conv_2/Bias"           {1x1x32    dlarray}
    "res1"    "Network/batchnorm_2/Offset"    {1x1x32    dlarray}
    "res1"    "Network/batchnorm_2/Scale"     {1x1x32    dlarray}

"res1" について、関数 setL2Factor を使用して、層 'conv_1' の学習可能なパラメーター 'Weights' の L2 正則化係数を 2 に設定します。

factor = 2;
dlnet = setL2Factor(dlnet,'res1/Network/conv_1/Weights',factor);

関数 getL2Factor を使用して、更新された L2 正則化係数を取得します。

factor = getL2Factor(dlnet,'res1/Network/conv_1/Weights')
factor = 2

入力引数

すべて折りたたむ

入力層。スカラー Layer オブジェクトとして指定します。

パラメーター名。文字ベクトルまたは string スカラーとして指定します。

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

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

例: 2

入れ子層のパラメーターへのパス。string スカラーまたは文字ベクトルとして指定します。networkLayer 内の層、またはそれ自体でニューラル ネットワークを学習可能なパラメーターとして定義するカスタム層を入れ子層として指定できます。

setL2Factor への入力が層である場合、次のようになります。

  • 入れ子層がネットワーク層の中にある場合、パラメーターのパスの形式は "nestedLayerName/parameterName" となります。ここで、nestedlayerName はネットワーク層の中にある入れ子層の名前、parameterName はパラメーターの名前です。入れ子層のレベルが複数ある場合は、nestedLayerName1/.../nestedLayerNameN/parameterName の形式でパスを指定します。

  • 入れ子層が、それ自体でニューラル ネットワークを学習可能なパラメーターとして定義するカスタム層である場合、パラメーターのパスの形式は "propertyName/layerName/parameterName" となります。ここで、propertyNamedlnetwork オブジェクトが格納されたプロパティの名前、layerNamedlnetwork オブジェクト内の層の名前、parameterName はパラメーターの名前です。入れ子層のレベルが複数ある場合は、"propertyName1/layerName1/.../propertyNameN/layerNameN/parameterName" の形式でパスを指定します。

setL2Factor への入力が dlnetwork オブジェクトで、目的のパラメーターが入れ子層の中にある場合、次のようになります。

  • 入れ子層がネットワーク層の中にある場合、パラメーターのパスの形式は "networkLayerName/nestedLayerName/parameterName" となります。ここで、networkLayerName はネットワーク層の名前、nestedlayerName はネットワーク層の中にある入れ子層の名前、parameterName はパラメーターの名前です。入れ子層のレベルが複数ある場合は、"networkLayerName1/.../networkLayerNameN/nestedLayerName/parameterName" の形式でパスを指定します。

  • 入れ子層が、それ自体でニューラル ネットワークを学習可能なパラメーターとして定義するカスタム層である場合、パラメーターのパスの形式は "customLayerName1/propertyName/layerName/parameterName" となります。ここで、layerName1 は入力の dlnetwork オブジェクト内の層の名前、propertyNamedlnetwork オブジェクトが格納された層のプロパティ、layerNamedlnetwork オブジェクト内の層の名前、parameterName はパラメーターの名前です。入れ子層のレベルが複数ある場合は、"customLayerName1/propertyName1/.../customLayerNameN/propertyNameN/layerName/parameterName" の形式でパスを指定します。

データ型: char | string

ニューラル ネットワーク。dlnetwork オブジェクトとして指定します。

層の名前。string スカラーまたは文字ベクトルとして指定します。

データ型: char | string

出力引数

すべて折りたたむ

更新された層。Layer として返されます。

更新されたネットワーク。dlnetwork として返されます。

バージョン履歴

R2017b で導入

すべて展開する