setLearnRateFactor - 層の学習可能なパラメーターの学習率係数を設定します。 - MATLAB - MathWorks 日本 (2024)

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

層の学習可能なパラメーターの学習率係数を設定します。

ページ内をすべて折りたたむ

構文

layerUpdated = setLearnRateFactor(layer,parameterName,factor)

layerUpdated = setLearnRateFactor(layer,parameterPath,factor)

netUpdated = setLearnRateFactor(net,layerName,parameterName,factor)

netUpdated = setLearnRateFactor(net,parameterPath,factor)

説明

layerUpdated = setLearnRateFactor(layer,parameterName,factor) は、layerparameterName という名前のパラメーターの学習率係数を 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

カスタム入れ子層の学習可能なパラメーターの学習率係数の設定および取得

ライブ スクリプトを開く

ネットワーク構成を使用して定義された入れ子層の学習可能なパラメーターの学習率係数を設定して取得します。

この例にサポート ファイルとして添付されているカスタム層 residualBlockLayer を使用して、残差ブロック層を作成します。このファイルにアクセスするには、この例をライブ スクリプトとして開きます。

numFilters = 64;layer = residualBlockLayer(numFilters)

入れ子ネットワークの層を表示します。

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 オブジェクトを作成します。

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 の学習可能なパラメーターの学習率係数の設定および取得

ライブ スクリプトを開く

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

学習可能なパラメーターの凍結

ライブ スクリプトを開く

事前学習済みのネットワークを読み込みます。

net = imagePretrainedNetwork;

dlnetwork オブジェクトの Learnables プロパティは、ネットワークの学習可能なパラメーターが格納された table です。この table には、入れ子層のパラメーターが別々の行に含まれています。このテーブル learnables の最初の数行を表示します。

learnables = net.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); net = setLearnRateFactor(net,layerName,parameterName,factor);end

更新された学習率係数を学習時に使用するには、カスタム学習ループの更新関数に dlnetwork オブジェクトを渡さなければなりません。たとえば、次のコマンドを使用します。

[net,velocity] = sgdmupdate(net,gradients,velocity);

入力引数

すべて折りたたむ

layer入力層
スカラー Layer オブジェクト

入力層。スカラー Layer オブジェクトとして指定します。

parameterNameパラメーター名
文字ベクトル | string スカラー

パラメーター名。文字ベクトルまたは string スカラーとして指定します。

factor学習率係数
非負のスカラー

パラメーターの学習率係数。非負のスカラーとして指定します。

この係数にグローバル学習率が乗算されて、指定されたパラメーターの学習率が決定されます。たとえば、factor が 2 の場合、指定されたパラメーターの学習率は現在のグローバル学習率の 2 倍になります。関数 trainingOptions で指定された設定に基づいて、グローバル学習率が決定されます。

例: 2

parameterPath入れ子層のパラメーターへのパス
string スカラー | 文字ベクトル

入れ子層のパラメーターへのパス。string スカラーまたは文字ベクトルとして指定します。networkLayer 内の層、またはそれ自体でニューラル ネットワークを学習可能なパラメーターとして定義するカスタム層を入れ子層として指定できます。

setLearnRateFactor への入力が層である場合、次のようになります。

  • 入れ子層がネットワーク層の中にある場合、パラメーターのパスの形式は "nestedLayerName/parameterName" となります。ここで、nestedlayerName はネットワーク層の中にある入れ子層の名前、parameterName はパラメーターの名前です。入れ子層のレベルが複数ある場合は、nestedLayerName1/.../nestedLayerNameN/parameterName の形式でパスを指定します。

  • 入れ子層が、それ自体でニューラル ネットワークを学習可能なパラメーターとして定義するカスタム層である場合、パラメーターのパスの形式は "propertyName/layerName/parameterName" となります。ここで、propertyNamedlnetwork オブジェクトが格納されたプロパティの名前、layerNamedlnetwork オブジェクト内の層の名前、parameterName はパラメーターの名前です。入れ子層のレベルが複数ある場合は、"propertyName1/layerName1/.../propertyNameN/layerNameN/parameterName" の形式でパスを指定します。

setLearnRateFactor への入力が 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

netニューラル ネットワーク
dlnetwork オブジェクト

ニューラル ネットワーク。dlnetwork オブジェクトとして指定します。

layerName層の名前
string スカラー | 文字ベクトル

層の名前。string スカラーまたは文字ベクトルとして指定します。

データ型: char | string

出力引数

すべて折りたたむ

layerUpdated — 更新された層
Layer オブジェクト

更新された層。Layer として返されます。

netUpdated — 更新されたネットワーク
dlnetwork オブジェクト

更新されたネットワーク。dlnetwork として返されます。

バージョン履歴

R2017b で導入

すべて展開する

引数 parameterPath を使用して、networkLayer 内にあるパラメーターへのパスを指定します。

参考

setL2Factor | getLearnRateFactor | getL2Factor | trainnet | trainingOptions | dlnetwork

トピック

  • MATLAB による深層学習
  • カスタム深層学習層の定義

MATLAB コマンド

次の MATLAB コマンドに対応するリンクがクリックされました。

 

コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。

setLearnRateFactor - 層の学習可能なパラメーターの学習率係数を設定します。 - MATLAB- MathWorks 日本 (1)

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:

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
    • Deutsch
    • English
    • Français
  • United Kingdom (English)

Asia Pacific

  • Australia (English)
  • India (English)
  • New Zealand (English)
  • 中国
  • 日本 (日本語)
  • 한국 (한국어)

Contact your local office

setLearnRateFactor - 層の学習可能なパラメーターの学習率係数を設定します。 - MATLAB
- MathWorks 日本 (2024)
Top Articles
Latest Posts
Recommended Articles
Article information

Author: Msgr. Refugio Daniel

Last Updated:

Views: 5893

Rating: 4.3 / 5 (54 voted)

Reviews: 93% of readers found this page helpful

Author information

Name: Msgr. Refugio Daniel

Birthday: 1999-09-15

Address: 8416 Beatty Center, Derekfort, VA 72092-0500

Phone: +6838967160603

Job: Mining Executive

Hobby: Woodworking, Knitting, Fishing, Coffee roasting, Kayaking, Horseback riding, Kite flying

Introduction: My name is Msgr. Refugio Daniel, I am a fine, precious, encouraging, calm, glamorous, vivacious, friendly person who loves writing and wants to share my knowledge and understanding with you.