このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
initialize
説明
ヒント
ほとんどの dlnetwork
オブジェクトは、既定で初期化されています。初期化されていない場合にのみ、dlnetwork
を手動で初期化する必要があります。ネットワークが初期化されているかどうかを確認するには、dlnetwork
オブジェクトの Initialized
プロパティを使用します。
は、ネットワークの入力層で定義された入力サイズに基づいて、netUpdated
= initialize(net
)net
の未設定の学習可能なパラメーターと状態値を初期化します。値が既に格納されている学習可能なパラメーターと状態パラメーターは変更されません。
未設定で空の値が含まれている学習可能なパラメーターと状態パラメーターをもつネットワークは "初期化されていません"。未初期化の dlnetwork
を使用するには、これを事前に初期化しなければなりません。dlnetwork
オブジェクトは、既定で初期パラメーターを使用して構築されるため、初期化が必要ありません。
は、サンプルのネットワーク入力またはネットワーク データ レイアウト オブジェクト netUpdated
= initialize(net
,X1,...,Xn
)X1,...,Xn
に基づいて、net
の未設定の学習可能なパラメーターと状態値を初期化します。入力層に接続されていない入力がネットワークに存在する場合、この構文を使用します。
例
入力層を含む dlnetwork
の初期化
シンプルなイメージ分類ネットワークを層配列として定義します。
layers = [
imageInputLayer([28 28 1],Normalization="none")
convolution2dLayer(5,20)
batchNormalizationLayer
reluLayer
fullyConnectedLayer(10)
softmaxLayer];
層グラフを dlnetwork
オブジェクトに変換します。Initialize
オプションを false
に設定して、未初期化の dlnetwork
オブジェクトを作成します。
net = dlnetwork(layers,Initialize=false);
ネットワークの学習可能なパラメーターを表示します。ネットワークが初期化されていないため、値は空になっています。
net.Learnables
ans=6×3 table
Layer Parameter Value
___________ _________ ____________
"conv" "Weights" {0x0 double}
"conv" "Bias" {0x0 double}
"batchnorm" "Offset" {0x0 double}
"batchnorm" "Scale" {0x0 double}
"fc" "Weights" {0x0 double}
"fc" "Bias" {0x0 double}
関数 initialize
を使用して、ネットワークの学習可能なパラメーターを初期化します。
net = initialize(net);
ネットワークの学習可能なパラメーターを表示します。ネットワークが初期化されたため、値は空でなく、入力層のサイズを使用して推定されたサイズになっています。
net.Learnables
ans=6×3 table
Layer Parameter Value
___________ _________ ___________________
"conv" "Weights" { 5x5x1x20 dlarray}
"conv" "Bias" { 1x1x20 dlarray}
"batchnorm" "Offset" { 1x1x20 dlarray}
"batchnorm" "Scale" { 1x1x20 dlarray}
"fc" "Weights" {10x11520 dlarray}
"fc" "Bias" {10x1 dlarray}
入力層を含まない dlnetwork
の初期化
多入力のイメージ分類ネットワークを定義します。
numFilters = 24; layersBranch1 = [ convolution2dLayer(3,6*numFilters,Padding="same",Stride=2) groupNormalizationLayer("all-channels") reluLayer convolution2dLayer(3,numFilters,Padding="same") groupNormalizationLayer("channel-wise") additionLayer(2,Name="add") reluLayer fullyConnectedLayer(10) softmaxLayer]; layersBranch2 = [ convolution2dLayer(1,numFilters,Name="conv_branch") groupNormalizationLayer("all-channels",Name="groupnorm_branch")]; lgraph = layerGraph(layersBranch1); lgraph = addLayers(lgraph,layersBranch2); lgraph = connectLayers(lgraph,"groupnorm_branch","add/in2");
層グラフをプロットで可視化します。
figure plot(lgraph)
層グラフを dlnetwork
オブジェクトに変換します。Initialize
オプションを false
に設定して、未初期化の dlnetwork
オブジェクトを作成します。
net = dlnetwork(lgraph,Initialize=false);
ネットワークの学習可能なパラメーターを表示します。ネットワークが初期化されていないため、値は空になっています。
net.Learnables
ans=14×3 table
Layer Parameter Value
__________________ _________ ____________
"conv_1" "Weights" {0x0 double}
"conv_1" "Bias" {0x0 double}
"groupnorm_1" "Offset" {0x0 double}
"groupnorm_1" "Scale" {0x0 double}
"conv_2" "Weights" {0x0 double}
"conv_2" "Bias" {0x0 double}
"groupnorm_2" "Offset" {0x0 double}
"groupnorm_2" "Scale" {0x0 double}
"fc" "Weights" {0x0 double}
"fc" "Bias" {0x0 double}
"conv_branch" "Weights" {0x0 double}
"conv_branch" "Bias" {0x0 double}
"groupnorm_branch" "Offset" {0x0 double}
"groupnorm_branch" "Scale" {0x0 double}
ネットワーク入力の名前を表示します。
net.InputNames
ans = 1x2 cell
{'conv_1'} {'conv_branch'}
ネットワークへの入力を表すランダムな dlarray
オブジェクトを作成します。ネットワークの主分岐には、3 つのチャネルをもつ 64 行 64 列のサンプル入力を使用します。2 番目の分岐には、18 個のチャネルをもつ 64 行 64 列の入力を使用します。
inputSize = [64 64 3]; inputSizeBranch = [32 32 18]; X1 = dlarray(rand(inputSize),"SSCB"); X2 = dlarray(rand(inputSizeBranch),"SSCB");
関数 initialize
を使用して、ネットワークの学習可能なパラメーターを初期化し、サンプル入力を指定します。ネットワークの InputNames
プロパティに対応する順序で入力を指定します。
net = initialize(net,X1,X2);
ネットワークの学習可能なパラメーターを表示します。ネットワークが初期化されたため、値は空でなく、入力データのサイズを使用して推定されたサイズになっています。
net.Learnables
ans=14×3 table
Layer Parameter Value
__________________ _________ _____________________
"conv_1" "Weights" { 3x3x3x144 dlarray}
"conv_1" "Bias" { 1x1x144 dlarray}
"groupnorm_1" "Offset" { 1x1x144 dlarray}
"groupnorm_1" "Scale" { 1x1x144 dlarray}
"conv_2" "Weights" { 3x3x144x24 dlarray}
"conv_2" "Bias" { 1x1x24 dlarray}
"groupnorm_2" "Offset" { 1x1x24 dlarray}
"groupnorm_2" "Scale" { 1x1x24 dlarray}
"conv_branch" "Weights" { 1x1x18x24 dlarray}
"conv_branch" "Bias" { 1x1x24 dlarray}
"groupnorm_branch" "Offset" { 1x1x24 dlarray}
"groupnorm_branch" "Scale" { 1x1x24 dlarray}
"fc" "Weights" {10x24576 dlarray}
"fc" "Bias" {10x1 dlarray}
ネットワーク データ レイアウト オブジェクトを使用したネットワークの初期化
2 つの未接続の入力をもつ未初期化の dlnetwork
オブジェクトを作成します。
layers = [ convolution2dLayer(5,16,Name="conv") batchNormalizationLayer reluLayer fullyConnectedLayer(50) flattenLayer concatenationLayer(1,2,Name="cat") fullyConnectedLayer(10) softmaxLayer]; net = dlnetwork(layers,Initialize=false);
ネットワークの入力名を表示します。
net.InputNames
ans = 1x2 cell
{'conv'} {'cat/in2'}
入力の入力データを表すネットワーク データ レイアウト オブジェクトを作成します。最初の入力には、28 行 28 列のグレースケール イメージのバッチを指定します。2 番目の入力には、シングルチャネルの特徴データのバッチを指定します。
layout1 = networkDataLayout([28 28 1 NaN],"SSCB"); layout2 = networkDataLayout([1 NaN],"CB");
ネットワーク データ レイアウト オブジェクトを使用してネットワークを初期化します。
net = initialize(net,layout1,layout2)
net = dlnetwork with properties: Layers: [8x1 nnet.cnn.layer.Layer] Connections: [7x2 table] Learnables: [8x3 table] State: [2x3 table] InputNames: {'conv' 'cat/in2'} OutputNames: {'softmax'} Initialized: 1 View summary with summary.
入力引数
net
— 未初期化のネットワーク
dlnetwork
オブジェクト
未初期化のネットワーク。dlnetwork
オブジェクトとして指定します。
X1,...,Xn
— サンプルのネットワーク入力またはデータ レイアウト
書式化された dlarray
オブジェクト | 書式化された networkDataLayout
オブジェクト
サンプルのネットワーク入力またはデータ レイアウト。書式化された dlarray
オブジェクトまたは書式化された networkDataLayout
オブジェクトとして指定します。ソフトウェアは、X1,...Xn
をネットワーク全体に伝播させて、dlnetwork
の学習可能なパラメーターと状態パラメーターの適切なサイズと形式を決定します。
入力ネットワークの InputNames
プロパティで指定された順序と同じ順序でサンプル入力を与えます。
メモ
自動的な初期化では、入力データのサイズと形式の情報のみが使用されます。入力データの値に基づいて初期化を行う場合、学習可能なパラメーターを手動で初期化しなければなりません。
出力引数
netUpdated
— 初期化済みのネットワーク
dlnetwork
オブジェクト
初期化済みのネットワーク。初期化済みの dlnetwork
オブジェクトとして返されます。
関数 initialize
は量子化情報を保持しません。入力ネットワークが量子化されたネットワークであった場合でも、出力ネットワークに量子化情報は含まれません。
バージョン履歴
R2021a で導入R2023b: 未設定の正規化統計量をもつ入力層が含まれるネットワークの初期化
imageInputLayer
や sequenceInputLayer
などの入力層には、ネットワークがデータの正規化で使用するプロパティが含まれています。そのようなプロパティには、Mean
、StandardDeviation
、Min
、および Max
があります。ソフトウェアは、これらのプロパティを使用して、層の Normalization
プロパティによって定義されたデータ正規化方式を適用します。
R2023b 以降、初期化済みの dlnetwork
を作成するか関数 initialize
を使用してネットワークを初期化すると、入力層の Mean
、StandardDeviation
、Min
、および Max
の各プロパティは、層の作成時にそれらを設定しておらず、正規化方式でそれらが必要となる場合、ソフトウェアによって初期化されます。zscore
のように 2 つのプロパティを使用する正規化方式の場合、層の作成時にどちらのプロパティも設定していない場合にのみ、ソフトウェアはそれらのプロパティを初期化します。
zerocenter
正規化の場合、Mean
が0
に初期化される。zscore
正規化の場合、Mean
が0
に初期化され、StandardDeviation
が1
に初期化される。rescale-symmetric
正規化の場合、Min
が-1
に初期化され、Max
が1
に初期化される。rescale-zero-one
正規化の場合、Min
が0
に初期化され、Max
が1
に初期化される。
既定では、ソフトウェアは学習時に正規化統計量を自動的に計算します。正規化をカスタマイズするには、入力層のプロパティ Mean
、StandardDeviation
、Min
、および Max
を手動で設定します。
以前のリリースでは、正規化方式を使用する入力層が含まれるネットワークを初期化する場合、その正規化方式で必要なプロパティを層の作成時に指定していないと、ソフトウェアでエラーが発生します。
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)