このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
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
プロパティは、ネットワークの学習可能なパラメーターが格納された table です。この table には、入れ子層のパラメーターが別々の行に含まれています。このテーブル 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 コマンド ウィンドウに入力して実行してください。Web ブラウザーは 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)