Main Content

getLearnRateFactor

계층의 학습 가능한 파라미터에 대한 학습률 인자 가져오기

설명

예제

factor = getLearnRateFactor(layer,parameterName)layer에서 이름이 parameterName인 학습 가능한 파라미터에 대한 학습률 인자를 반환합니다.

내장 계층의 경우, 상응하는 속성을 사용하여 학습률 인자를 직접 가져올 수 있습니다. 예를 들어, convolution2dLayer 계층의 경우, 구문 factor = getLearnRateFactor(layer,'Weights')factor = layer.WeightLearnRateFactor와 동일합니다.

예제

factor = getLearnRateFactor(layer,parameterPath)는 경로 parameterPath로 지정된 파라미터에 대한 학습률 인자를 반환합니다. 계층이 networkLayer이거나 파라미터가 사용자 지정 계층의 dlnetwork 객체에 있는 경우 이 구문을 사용하십시오.

예제

factor = getLearnRateFactor(net,layerName,parameterName)은 지정된 dlnetwork 객체에 대해 이름이 layerName인 계층에서 이름이 parameterName인 파라미터에 대한 학습률 인자를 반환합니다.

예제

factor = getLearnRateFactor(net,parameterPath)는 경로 parameterPath로 지정된 파라미터에 대한 학습률 인자를 반환합니다. 파라미터가 networkLayer에 있거나 파라미터가 사용자 지정 계층의 dlnetwork 객체에 있는 경우 이 구문을 사용하십시오.

예제

모두 축소

사용자 지정 SReLU 계층의 학습 가능한 파라미터에 대한 학습률 인자를 설정하고 가져옵니다.

이 예제에 지원 파일로 첨부되어 있는 사용자 지정 계층 sreluLayer를 포함하는 계층 배열을 만듭니다. 이 계층에 액세스하려면 이 예제를 라이브 스크립트로 여십시오.

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

sreluLayer의 학습 가능한 파라미터 LeftThreshold에 대한 학습률 인자를 2로 설정합니다.

layers(4) = setLearnRateFactor(layers(4),"LeftThreshold",2);

업데이트된 학습률 인자를 표시합니다.

factor = getLearnRateFactor(layers(4),"LeftThreshold")
factor = 2

신경망 구성을 사용하여 중첩 계층의 학습 가능한 파라미터에 대한 학습률 인자를 설정하고 가져옵니다.

이 예제에 지원 파일로 첨부되어 있는 사용자 지정 계층 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

setLearnRateFactor 함수를 사용하여, 계층 'conv_1'의 학습 가능한 파라미터 'Weights'에 대한 학습률 인자를 2로 설정합니다.

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

getLearnRateFactor 함수를 사용하여, 업데이트된 학습률 인자를 가져옵니다.

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

dlnetwork 객체의 학습 가능한 파라미터에 대한 학습률 인자를 설정하고 가져옵니다.

dlnetwork 객체를 만듭니다.

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);

setLearnRateFactor 함수를 사용하여, 컨벌루션 계층의 학습 가능한 파라미터 'Weights'에 대한 학습률 인자를 2로 설정합니다.

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

getLearnRateFactor 함수를 사용하여, 업데이트된 학습률 인자를 가져옵니다.

factor = getLearnRateFactor(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);

setLearnRateFactor 함수를 사용하여 첫 번째 신경망 계층에 있는 LSTM 계층의 학습 가능한 파라미터 InputWeights에 대한 학습률 인자를 2로 설정합니다.

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

getLearnRateFactor 함수를 사용하여, 업데이트된 학습률 인자를 가져옵니다.

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

dlnetwork 객체에서 신경망 구성을 사용하여 정의된 사용자 지정 중첩 계층의 학습 가능한 파라미터에 대한 학습률 인자를 설정하고 가져옵니다.

이 예제에 지원 파일로 첨부되어 있는 사용자 지정 계층 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);

계층 'res1'에 있는 중첩 신경망의 계층을 봅니다.

dlnet.Layers(6).Network.Layers
ans = 
  7x1 Layer array with layers:

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

setLearnRateFactor 함수를 사용하여, 계층 'conv_1'의 학습 가능한 파라미터 'Weights'에 대한 학습률 인자를 2로 설정합니다.

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

getLearnRateFactor 함수를 사용하여, 업데이트된 학습률 인자를 가져옵니다.

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

입력 인수

모두 축소

입력 계층으로, 스칼라 Layer 객체로 지정됩니다.

파라미터 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다.

중첩 계층의 파라미터 경로로, string형 스칼라 또는 문자형 벡터로 지정됩니다. 중첩 계층은 networkLayer 내의 계층이거나 그 자체가 신경망을 학습 가능한 파라미터로 정의하는 사용자 지정 계층일 수 있습니다.

getLearnRateFactor에 대한 입력값이 계층인 경우,

  • 중첩 계층이 신경망 계층에 내에 있으면, 파라미터 경로의 형식은 "nestedLayerName/parameterName"입니다. 여기서 nestedlayerName은 신경망 계층 내의 중첩 계층의 이름이고 parameterName은 파라미터의 이름입니다. 중첩 계층의 수준이 여러 개이면 nestedLayerName1/.../nestedLayerNameN/parameterName 형식을 사용하여 경로를 지정하십시오.

  • 중첩 계층이 그 자체가 신경망을 학습 가능한 파라미터로 정의하는 사용자 지정 계층이면, 파라미터 경로의 형식은 "propertyName/layerName/parameterName"입니다. 여기서 propertyNamedlnetwork 객체를 포함하는 속성의 이름이고 layerNamedlnetwork 객체에 있는 계층의 이름이며 parameterName은 파라미터의 이름입니다. 중첩 계층의 수준이 여러 개이면 "propertyName1/layerName1/.../propertyNameN/layerNameN/parameterName" 형식을 사용하여 경로를 지정하십시오.

getLearnRateFactor에 대한 입력값이 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

출력 인수

모두 축소

파라미터에 대한 학습률 인자로, 음이 아닌 스칼라로 반환됩니다.

이 인자에 전역 학습률을 곱하여 지정된 파라미터에 대한 학습률이 결정됩니다. 예를 들어, factor2인 경우, 지정된 파라미터에 대한 학습률은 현재 전역 학습률의 2배입니다. 소프트웨어는 trainingOptions 함수로 지정된 설정을 기준으로 전역 학습률을 결정합니다.

버전 내역

R2017b에 개발됨

모두 확장