Main Content

setL2Factor

계층의 학습 가능한 파라미터의 L2 정규화 인자 설정

설명

예제

layerUpdated = setL2Factor(layer,parameterName,factor)layer에서 이름이 parameterName인 파라미터에 대한 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의 학습 가능한 파라미터 LeftSlope에 대한 L2 정규화 인자를 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 속성은 신경망의 학습 가능한 파라미터를 포함하는 테이블입니다. 테이블은 중첩 계층의 파라미터를 개별 행에 포함합니다. 계층 "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}

setL2Factor 함수를 사용하여, 계층 "res1"에 대해 계층 '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에 개발됨

모두 확장