setLearnRateFactor
계층의 학습 가능한 파라미터에 대한 학습률 인자 설정
구문
설명
는 layerUpdated
= setLearnRateFactor(layer
,parameterName
,factor
)layer
에서 이름이 parameterName
인 파라미터에 대한 학습률 인자를 factor
로 설정합니다.
내장 계층의 경우, 상응하는 속성을 사용하여 학습률 인자를 직접 설정할 수 있습니다. 예를 들어, convolution2dLayer
계층의 경우, 구문 layer = setLearnRateFactor(layer,'Weights',factor)
는 layer.WeightLearnRateFactor = factor
와 동일합니다.
는 경로 layerUpdated
= setLearnRateFactor(layer
,parameterPath
,factor
)parameterPath
로 지정된 파라미터에 대한 학습률 인자를 설정합니다. 파라미터가 사용자 지정 계층의 dlnetwork
객체에 있는 경우 이 구문을 사용하십시오.
는 지정된 netUpdated
= setLearnRateFactor(net
,layerName
,parameterName
,factor
)dlnetwork
객체에 대해 이름이 layerName
인 계층에서 이름이 parameterName
인 파라미터에 대한 학습률 인자를 설정합니다.
는 경로 netUpdated
= setLearnRateFactor(net
,parameterPath
,factor
)parameterPath
로 지정된 파라미터에 대한 학습률 인자를 설정합니다. 파라미터가 중첩 계층에 있는 경우 이 구문을 사용하십시오.
예제
학습 가능한 파라미터에 대한 학습률 인자를 설정하고 가져오기
사용자 지정 PReLU 계층의 학습 가능한 파라미터에 대한 학습률 인자를 설정하고 가져옵니다.
이 예제에 지원 파일로 첨부되어 있는 사용자 지정 계층 preluLayer
를 포함하는 계층 배열을 만듭니다. 이 계층에 액세스하려면 이 예제를 라이브 스크립트로 여십시오.
layers = [ ...
imageInputLayer([28 28 1])
convolution2dLayer(5,20)
batchNormalizationLayer
preluLayer
fullyConnectedLayer(10)
softmaxLayer
classificationLayer];
preluLayer
의 학습 가능한 파라미터 Alpha
에 대한 학습률 인자를 2로 설정합니다.
layers(4) = setLearnRateFactor(layers(4),"Alpha",2);
업데이트된 학습률 인자를 표시합니다.
factor = getLearnRateFactor(layers(4),"Alpha")
factor = 2
중첩 계층의 학습 가능한 파라미터에 대한 학습률 인자를 설정하고 가져오기
중첩 계층의 학습 가능한 파라미터에 대한 학습률 인자를 설정하고 가져옵니다.
이 예제에 지원 파일로 첨부되어 있는 사용자 지정 계층 residualBlockLayer
를 사용하여 잔차 블록 계층을 만듭니다. 이 파일에 액세스하려면 이 예제를 라이브 스크립트로 여십시오.
numFilters = 64; layer = residualBlockLayer(numFilters)
layer = residualBlockLayer with properties: Name: '' Learnable Parameters Network: [1x1 dlnetwork] State Parameters Network: [1x1 dlnetwork] Show 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
객체의 학습 가능한 파라미터에 대한 학습률 인자를 설정하고 가져옵니다.
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')]; lgraph = layerGraph(layers); dlnet = dlnetwork(lgraph);
setLearnRateFactor
함수를 사용하여, 컨벌루션 계층의 학습 가능한 파라미터 'Weights'
에 대한 학습률 인자를 2로 설정합니다.
factor = 2; dlnet = setLearnRateFactor(dlnet,'conv','Weights',factor);
getLearnRateFactor
함수를 사용하여, 업데이트된 학습률 인자를 가져옵니다.
factor = getLearnRateFactor(dlnet,'conv','Weights')
factor = 2
중첩 dlnetwork
의 학습 가능한 파라미터에 대한 학습률 인자를 설정하고 가져오기
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
dlnetwork
객체의 학습 가능한 파라미터 고정하기
사전 훈련된 신경망을 불러옵니다.
net = squeezenet;
신경망을 계층 그래프로 변환하고, 출력 계층을 제거하고, 이를 dlnetwork
객체로 변환합니다.
lgraph = layerGraph(net);
lgraph = removeLayers(lgraph,'ClassificationLayer_predictions');
dlnet = dlnetwork(lgraph);
dlnetwork
객체의 Learnables
속성은 신경망의 학습 가능한 파라미터를 포함하는 테이블입니다. 테이블은 중첩 계층의 파라미터를 개별 행에 포함합니다. learnables 테이블의 처음 몇 개 행을 봅니다.
learnables = dlnet.Learnables; head(learnables)
Layer Parameter Value __________________ _________ ___________________ "conv1" "Weights" {3x3x3x64 dlarray} "conv1" "Bias" {1x1x64 dlarray} "fire2-squeeze1x1" "Weights" {1x1x64x16 dlarray} "fire2-squeeze1x1" "Bias" {1x1x16 dlarray} "fire2-expand1x1" "Weights" {1x1x16x64 dlarray} "fire2-expand1x1" "Bias" {1x1x64 dlarray} "fire2-expand3x3" "Weights" {3x3x16x64 dlarray} "fire2-expand3x3" "Bias" {1x1x64 dlarray}
신경망의 학습 가능한 파라미터를 고정하려면 학습 가능한 파라미터를 루프를 사용해 순환하고 setLearnRateFactor
함수를 사용하여 학습률을 0으로 설정합니다.
factor = 0; numLearnables = size(learnables,1); for i = 1:numLearnables layerName = learnables.Layer(i); parameterName = learnables.Parameter(i); dlnet = setLearnRateFactor(dlnet,layerName,parameterName,factor); end
훈련 시 업데이트된 학습률 인자를 사용하려면 사용자 지정 훈련 루프에서 dlnetwork 객체를 업데이트 함수에 전달해야 합니다. 예를 들어, 다음 명령을 사용합니다.
[dlnet,velocity] = sgdmupdate(dlnet,gradients,velocity);
입력 인수
layer
— 입력 계층
스칼라 Layer
객체
입력 계층으로, 스칼라 Layer
객체로 지정됩니다.
parameterName
— 파라미터 이름
문자형 벡터 | string형 스칼라
파라미터 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다.
factor
— 학습률 인자
음이 아닌 스칼라
파라미터에 대한 학습률 인자로, 음이 아닌 스칼라로 지정됩니다.
이 인자에 전역 학습률을 곱하여 지정된 파라미터에 대한 학습률이 결정됩니다. 예를 들어, factor
가 2인 경우, 지정된 파라미터에 대한 학습률은 현재 전역 학습률의 2배입니다. 소프트웨어는 trainingOptions
함수로 지정된 설정을 기준으로 전역 학습률을 결정합니다.
예: 2
parameterPath
— 중첩 계층의 파라미터 경로
string형 스칼라 | 문자형 벡터
중첩 계층의 파라미터 경로로, string형 스칼라 또는 문자형 벡터로 지정됩니다. 중첩 계층은 그 자체가 계층 그래프를 학습 가능한 파라미터로 정의하는 사용자 지정 계층입니다.
setLearnRateFactor
에 대한 입력값이 중첩 계층인 경우 파라미터 경로는 "propertyName/layerName/parameterName"
형식을 갖습니다. 여기서,
propertyName
은dlnetwork
객체를 포함하는 속성의 이름입니다.layerName
은dlnetwork
객체에 있는 계층의 이름입니다.parameterName
은 파라미터의 이름입니다.
중첩 계층의 수준이 여러 개인 경우, "propertyName1/layerName1/.../propertyNameN/layerNameN/parameterName"
형식을 사용하여 각 수준을 지정하십시오. 여기서 propertyName1
과 layerName1
은 setLearnRateFactor
함수에 대한 입력값의 계층에 대응되고, 그 이후 부분은 더 깊은 수준에 대응됩니다.
예: setLearnRateFactor
에 대한 계층 입력값의 경우, 경로 "Network/conv1/Weights"
는 layer.Network
로 지정된 dlnetwork
객체에서 이름이 "conv1"
인 계층의 "Weights"
파라미터를 지정합니다.
setLearnRateFactor
에 대한 입력값이 dlnetwork
객체이고 원하는 파라미터가 중첩 계층에 있는 경우, 파라미터 경로는 "layerName1/propertyName/layerName/parameterName"
형식을 갖습니다. 여기서,
layerName1
은 입력값dlnetwork
객체에 있는 계층의 이름입니다.propertyName
은dlnetwork
객체를 포함하는 계층의 속성입니다.layerName
은dlnetwork
객체에 있는 계층의 이름입니다.parameterName
은 파라미터의 이름입니다.
중첩 계층의 수준이 여러 개인 경우, "layerName1/propertyName1/.../layerNameN/propertyNameN/layerName/parameterName"
형식을 사용하여 각 수준을 지정하십시오. 여기서 layerName1
과 propertyName1
은 setLearnRateFactor
함수에 대한 입력값의 계층에 대응되고, 그 이후 부분은 더 깊은 수준에 대응됩니다.
예: setLearnRateFactor
에 대한 dlnetwork
입력값의 경우, 경로 "res1/Network/conv1/Weights"
는 layer.Network
로 지정된 dlnetwork
객체에서 이름이 "conv1"
인 계층의 "Weights"
파라미터를 지정합니다. 여기서 layer
는 입력 신경망 net
에서 이름이 "res1"
인 계층입니다.
데이터형: char
| string
net
— 신경망
dlnetwork
객체
신경망으로, dlnetwork
객체로 지정됩니다.
layerName
— 계층 이름
string형 스칼라 | 문자형 벡터
계층 이름으로, string형 스칼라 또는 문자형 벡터로 지정됩니다.
데이터형: char
| string
출력 인수
버전 내역
R2017b에 개발됨
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)