이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
setLearnRateFactor
계층의 학습 가능한 파라미터에 대한 학습률 인자 설정
구문
설명
는 layerUpdated
= setLearnRateFactor(layer
,parameterName
,factor
)layer
에서 이름이 parameterName
인 파라미터에 대한 학습률 인자를 factor
로 설정합니다.
내장 계층의 경우, 상응하는 속성을 사용하여 학습률 인자를 직접 설정할 수 있습니다. 예를 들어, convolution2dLayer
계층의 경우, 구문 layer = setLearnRateFactor(layer,'Weights',factor)
는 layer.WeightLearnRateFactor = factor
와 동일합니다.
는 경로 layerUpdated
= setLearnRateFactor(layer
,parameterPath
,factor
)parameterPath
로 지정된 파라미터에 대한 학습률 인자를 설정합니다. 계층이 networkLayer
이거나 파라미터가 사용자 지정 계층의 dlnetwork
객체에 있는 경우 이 구문을 사용하십시오.
는 지정된 netUpdated
= setLearnRateFactor(net
,layerName
,parameterName
,factor
)dlnetwork
객체에 대해 이름이 layerName
인 계층에서 이름이 parameterName
인 파라미터에 대한 학습률 인자를 설정합니다.
는 경로 netUpdated
= setLearnRateFactor(net
,parameterPath
,factor
)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
신경망 컴포지션(network composition)을 사용하여 중첩 계층의 학습 가능한 파라미터에 대한 학습률 인자를 설정하고 가져옵니다.
이 예제에 지원 파일로 첨부되어 있는 사용자 지정 계층 residualBlockLayer
를 사용하여 잔차 블록 계층을 만듭니다. 이 파일에 액세스하려면 이 예제를 라이브 스크립트로 여십시오.
numFilters = 64; layer = residualBlockLayer(numFilters)
layer = residualBlockLayer with properties: Name: '' Learnable Parameters Network: [1×1 dlnetwork] State Parameters Network: [1×1 dlnetwork] Show all properties
중첩 신경망의 계층을 봅니다.
layer.Network.Layers
ans = 7×1 Layer array with layers: 1 'conv_1' 2-D Convolution 64 3×3 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 3×3 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
객체에서 신경망 컴포지션(network composition)을 사용하여 정의된 사용자 지정 중첩 계층의 학습 가능한 파라미터에 대한 학습률 인자를 설정하고 가져옵니다.
이 예제에 지원 파일로 첨부되어 있는 사용자 지정 계층 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 = 7×1 Layer array with layers: 1 'conv_1' 2-D Convolution 32 3×3×32 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 3×3×32 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
사전 훈련된 신경망을 불러옵니다.
net = imagePretrainedNetwork;
dlnetwork
객체의 Learnables
속성은 신경망의 학습 가능한 파라미터를 포함하는 테이블입니다. 테이블은 중첩 계층의 파라미터를 개별 행에 포함합니다. learnables 테이블의 처음 몇 개 행을 봅니다.
learnables = net.Learnables; head(learnables)
Layer Parameter Value __________________ _________ ___________________ "conv1" "Weights" {3×3×3×64 dlarray} "conv1" "Bias" {1×1×64 dlarray} "fire2-squeeze1x1" "Weights" {1×1×64×16 dlarray} "fire2-squeeze1x1" "Bias" {1×1×16 dlarray} "fire2-expand1x1" "Weights" {1×1×16×64 dlarray} "fire2-expand1x1" "Bias" {1×1×64 dlarray} "fire2-expand3x3" "Weights" {3×3×16×64 dlarray} "fire2-expand3x3" "Bias" {1×1×64 dlarray}
신경망의 학습 가능한 파라미터를 고정하려면 학습 가능한 파라미터를 루프를 사용해 순환하고 setLearnRateFactor
함수를 사용하여 학습률을 0으로 설정합니다.
factor = 0; numLearnables = size(learnables,1); for i = 1:numLearnables layerName = learnables.Layer(i); parameterName = learnables.Parameter(i); net = setLearnRateFactor(net,layerName,parameterName,factor); end
훈련 시 업데이트된 학습률 인자를 사용하려면 사용자 지정 훈련 루프에서 dlnetwork 객체를 업데이트 함수에 전달해야 합니다. 예를 들어, 다음 명령을 사용합니다.
[net,velocity] = sgdmupdate(net,gradients,velocity);
입력 인수
입력 계층으로, 스칼라 Layer
객체로 지정됩니다.
파라미터 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다.
파라미터에 대한 학습률 인자로, 음이 아닌 스칼라로 지정됩니다.
이 인자에 전역 학습률을 곱하여 지정된 파라미터에 대한 학습률이 결정됩니다. 예를 들어, factor
가 2인 경우, 지정된 파라미터에 대한 학습률은 현재 전역 학습률의 2배입니다. 소프트웨어는 trainingOptions
함수로 지정된 설정을 기준으로 전역 학습률을 결정합니다.
예: 2
중첩 계층의 파라미터 경로로, string형 스칼라 또는 문자형 벡터로 지정됩니다. 중첩 계층은 networkLayer
내의 계층이거나 그 자체가 신경망을 학습 가능한 파라미터로 정의하는 사용자 지정 계층일 수 있습니다.
setLearnRateFactor
에 대한 입력값이 계층인 경우,
중첩 계층이 신경망 계층에 내에 있으면, 파라미터 경로의 형식은
"nestedLayerName/parameterName"
입니다. 여기서nestedlayerName
은 신경망 계층 내의 중첩 계층의 이름이고parameterName
은 파라미터의 이름입니다. 중첩 계층의 수준이 여러 개이면nestedLayerName1/.../nestedLayerNameN/parameterName
형식을 사용하여 경로를 지정하십시오.중첩 계층이 그 자체가 신경망을 학습 가능한 파라미터로 정의하는 사용자 지정 계층이면, 파라미터 경로의 형식은
"propertyName/layerName/parameterName"
입니다. 여기서propertyName
은dlnetwork
객체를 포함하는 속성의 이름이고layerName
은dlnetwork
객체에 있는 계층의 이름이며parameterName
은 파라미터의 이름입니다. 중첩 계층의 수준이 여러 개이면"propertyName1/layerName1/.../propertyNameN/layerNameN/parameterName"
형식을 사용하여 경로를 지정하십시오.
setLearnRateFactor
에 대한 입력값이 dlnetwork
객체이고 원하는 파라미터가 중첩 계층 내에 있는 경우,
중첩 계층이 신경망 계층 내에 있으면, 파라미터 경로의 형식은
"networkLayerName/nestedLayerName/parameterName"
입니다. 여기서networkLayerName
은 신경망 계층의 이름이고nestedlayerName
은 신경망 계층 내의 중첩 계층의 이름이며parameterName
은 파라미터의 이름입니다. 중첩 계층의 수준이 여러 개이면"networkLayerName1/.../networkLayerNameN/nestedLayerName/parameterName"
형식을 사용하여 경로를 지정하십시오.중첩 계층이 그 자체가 신경망을 학습 가능한 파라미터로 정의하는 사용자 지정 계층이면, 파라미터 경로의 형식은
"customLayerName1/propertyName/layerName/parameterName"
입니다. 여기서layerName1
은 입력dlnetwork
객체에 있는 계층의 이름이고propertyName
은dlnetwork
객체를 포함하는 계층의 속성 이름이고layerName
은dlnetwork
객체에 있는 계층의 이름이며parameterName
은 파라미터의 이름입니다. 중첩 계층의 수준이 여러 개이면"customLayerName1/propertyName1/.../customLayerNameN/propertyNameN/layerName/parameterName"
형식을 사용하여 경로를 지정하십시오.
데이터형: char
| string
신경망으로, dlnetwork
객체로 지정됩니다.
계층 이름으로, string형 스칼라 또는 문자형 벡터로 지정됩니다.
데이터형: char
| string
버전 내역
R2017b에 개발됨parameterPath
인수를 사용하여 networkLayer
에 파라미터에 대한 경로를 지정합니다.
참고 항목
setL2Factor
| getLearnRateFactor
| getL2Factor
| trainnet
| trainingOptions
| dlnetwork
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- 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)