このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
層,層グラフ,またはdlnetwork
オブジェクトを使用してネットワークに学習させる場合,ソフトウェアは,層の初期化プロパティに従って,学習可能なパラメーターを自動的に初期化します。関数として深層学習モデルを定義する場合,学習可能なパラメーターを手動で初期化しなければなりません。
学習可能なパラメーター(重みやバイアスなど)の初期化は,深層学習モデルの収束速度に大きな影響を与える可能性があります。
ヒント
このページでは,カスタム学習ループにおいて,関数として定義された深層学習モデルの学習可能なパラメーターを初期化する方法を説明します。深層学習層の学習可能なパラメーターの初期化を指定する方法を学ぶために,対応する層のプロパティを使用します。たとえば,convolution2dLayer
オブジェクトの重み初期化子を設定するには,WeightsInitializer
プロパティを使用します。
この表は,各層の学習可能なパラメーターに関する既定の初期化を示しています。また,同じ初期化を使用して,モデル関数の学習可能なパラメーターを初期化する方法を示すリンクが記載されています。
層 | 学習可能なパラメーター | 既定の初期化 |
---|---|---|
convolution2dLayer |
重み | Glorotの初期化 |
偏见 | ゼロでの初期化 | |
convolution3dLayer |
重み | Glorotの初期化 |
偏见 | ゼロでの初期化 | |
groupedConvolution2dLayer |
重み | Glorotの初期化 |
偏见 | ゼロでの初期化 | |
transposedConv2dLayer |
重み | Glorotの初期化 |
偏见 | ゼロでの初期化 | |
transposedConv3dLayer |
重み | Glorotの初期化 |
偏见 | ゼロでの初期化 | |
fullyConnectedLayer |
重み | Glorotの初期化 |
偏见 | ゼロでの初期化 | |
batchNormalizationLayer |
オフセット | ゼロでの初期化 |
スケール | 1での初期化 | |
lstmLayer |
入力重み | Glorotの初期化 |
再帰重み | 直交初期化 | |
偏见 | ユニット忘却ゲートによる初期化 | |
gruLayer |
入力重み | Glorotの初期化 |
再帰重み | 直交初期化 | |
偏见 | ゼロでの初期化 | |
wordEmbeddingLayer |
重み | ガウスによる初期化0.01,平均为0,標準偏差とする。 |
モデル関数の学習可能なパラメーターを初期化する場合,正しいサイズのパラメーターを指定しなければなりません。学習可能なパラメーターのサイズは,深層学習演算のタイプによって異なります。
操作 | 学習可能なパラメーター | サイズ |
---|---|---|
batchnorm |
オフセット |
|
スケール |
|
|
dlconv |
重み |
|
偏见 | 次のいずれかを選択。
|
|
dlconv (グループ化) |
重み |
|
偏见 | 次のいずれかを選択。
|
|
dltranspconv |
重み |
|
偏见 | 次のいずれかを選択。
|
|
dltranspconv (グループ化) |
重み |
|
偏见 | 次のいずれかを選択。
|
|
fullyconnect |
重み |
|
偏见 |
|
|
格勒乌 |
入力重み |
|
再帰重み |
|
|
偏见 |
|
|
lstm |
入力重み |
|
再帰重み |
|
|
偏见 |
|
Glorot (Xavierとも呼ばれる)初期化子[1]は,範囲指定付きの一様分布 から重みをサンプリングします。ここで,NoとN我の値は,深層学習演算のタイプによって異なります。
操作 | 学習可能なパラメーター | No | N我 |
---|---|---|---|
dlconv |
重み |
|
|
dlconv (グループ化) |
重み |
|
|
dltranspconv |
重み |
|
|
dltranspconv (グループ化) |
重み |
|
|
fullyconnect |
重み | 演算の出力チャネル数 | 演算の入力チャネル数 |
格勒乌 |
入力重み | 3 * numHiddenUnits 。numHiddenUnits は演算の隠れユニット数。 |
演算の入力チャネル数 |
再帰重み | 3 * numHiddenUnits 。numHiddenUnits は演算の隠れユニット数。 |
演算の隠れユニット数。 | |
lstm |
入力重み | 4 * numHiddenUnits 。numHiddenUnits は演算の隠れユニット数。 |
演算の入力チャネル数 |
再帰重み | 4 * numHiddenUnits 。numHiddenUnits は演算の隠れユニット数。 |
演算の隠れユニット数。 |
Glorot初期化子を使用して学習可能なパラメーターを簡単に初期化するため,カスタム関数を定義できます。関数initializeGlorot
は,学習可能なパラメーター深圳
のサイズ,ならびに値NoおよびN我(それぞれnumOut
とnumIn
)を入力として受け取り,基となる型が“单一”
のdlarray
オブジェクトとして,サンプリングされた重みを返します。
函数Z = 2*rand(sz, numOut,numIn)“单一”) - 1;bound =√(6 / (numIn + numOut));weights = bound * Z;重量= dlarray(重量);结束
サイズ5 x 5のフィルター128個,入力チャネル3個で,畳み込み演算の重みを初期化します。
filterSize = [5 5];numChannels = 3;numFilters = 128;sz = [filterSize numChannels numFilters];numOut = prod(filterSize) * numFilters;numIn = prod(filterSize) * numFilters;parameters.conv.Weights = initializeGlorot(深圳、numOut numIn);
他初期化子[44]は,平均0分散 の正規分布から重みをサンプリングします。ここで値N我は,深層学習演算のタイプによって決まります。
操作 | 学習可能なパラメーター | N我 |
---|---|---|
dlconv |
重み |
|
dltranspconv |
重み |
|
fullyconnect |
重み | 演算の入力チャネル数 |
格勒乌 |
入力重み | 演算の入力チャネル数 |
再帰重み | 演算の隠れユニット数。 | |
lstm |
入力重み | 演算の入力チャネル数 |
再帰重み | 演算の隠れユニット数。 |
他初期化子を使用して学習可能なパラメーターを簡単に初期化するために,カスタム関数を定義できます。関数initializeHe
は,学習可能なパラメーター深圳
のサイズと値N我を入力として受け取り,基となる型が“单一”
のdlarray
オブジェクトとして,サンプリングされた重みを返します。
函数(sz,numIn) =初始化“单一”) *√2 / numIn);重量= dlarray(重量);结束
サイズ5 x 5のフィルター128個,入力チャネル3個で,畳み込み演算の重みを初期化します。
filterSize = [5 5];numChannels = 3;numFilters = 128;sz = [filterSize numChannels numFilters];numIn = prod(filterSize) * numFilters;numIn parameters.conv.Weights = initializeHe(深圳);
ガウス初期化子は,正規分布から重みをサンプリングします。
ガウス初期化子を使用して学習可能なパラメーターを簡単に初期化するために,カスタム関数を定義できます。関数initializeGaussian
は,学習可能なパラメーター深圳
のサイズ,分散平均μ
、分散標準偏差σ
を入力として受け取り,基となる型が“单一”
のdlarray
オブジェクトとして,サンプリングされた重みを返します。
函数权重= initializgauss (sz,mu,sigma)“单一”σ)* +μ;重量= dlarray(重量);结束
平均0および標準偏差0.01のガウス初期化子を使用して,次元300年,語彙サイズ5000で埋め込み演算の重みを初期化します。
embeddingDimension = 300;vocabularySize = 5000;μ= 0;σ= 0.01;sz = [embedingdimension vocabularySize];parameters.emb.Weights = initializeGaussian (sz、μ、σ);
一様分布初期化子は,一様分布から重みをサンプリングします。
一様分布初期化子を使用して学習可能なパラメーターを簡単に初期化するために,カスタム関数を定義できます。関数initializeUniform
は,学習可能なパラメーター深圳
のサイズと分布境界绑定
を入力として受け取り,基となる型が“单一”
のdlarray
オブジェクトとして,サンプリングされた重みを返します。
函数参数= initializeUniform(sz,bound) Z = 2*rand(sz,“单一”) - 1;参数= bound * Z;参数= dlarray(参数);结束
一様分布初期化子を使用して,サイズ100 x 100,境界0.1でアテンションメカニズムの重みを初期化します。
Sz = [100 100];绑定= 0.1;parameters.attentionn.Weights = initializeUniform(深圳、绑定);
直交初期化子は,Z = QRのQR分解によって与えられる直交行列问を返します。ここでZは単位正規分布からサンプリングされ,Zのサイズは学習可能なパラメーターのサイズと一致します。
直交初期化子を使用して学習可能なパラメーターを簡単に初期化するために,カスタム関数を定義できます。関数initializeOrthogonal
は,学習可能なパラメーター深圳
のサイズを入力として受け取り,基となる型が“单一”
のdlarray
オブジェクトとして,直交行列を返します。
函数参数= initializeOrthogonal(sz)“单一”);(Q, R) = qr (Z, 0);D =诊断接头(R);Q = Q * diag(D ./ abs(D));参数= dlarray (Q);结束
直交初期化子を使用して,100個の隠れユニットでLSTM演算の反復重みを初期化します。
numHiddenUnits = 100;sz = [4*numHiddenUnits numHiddenUnits];parameters.lstm.RecurrentWeights = initializeOrthogonal(深圳);
ユニット忘却ゲート初期化子は,バイアスの忘却ゲート成分が1,残りのエントリが0になるように,LSTM演算のバイアスを初期化します。
直交初期化子を使用して学習可能なパラメーターを簡単に初期化するために,カスタム関数を定義できます。関数initializeUnitForgetGate
は,LSTM演算の隠れユニットの数を入力として受け取り,基となる型が“单一”
のdlarray
オブジェクトとしてバイアスを返します。
函数bias = initializeUnitForgetGate(numHiddenUnits) bias = 0 (4*numHiddenUnits,1,“单一”);idx = numHiddenUnits + 1:2 * numHiddenUnits;偏见(idx) = 1;偏见= dlarray(偏差);结束
ユニット忘却ゲート初期化子を使用して,100個の隠れユニットでLSTM演算のバイアスを初期化します。
numHiddenUnits = 100;parameters.lstm.Bias = initializeUnitForgetGate (numHiddenUnits,“单一”);
学習可能なパラメーターを1で簡単に初期化するために,カスタム関数を定義できます。関数initializeOnes
は,学習可能なパラメーター深圳
のサイズを入力として受け取り,基となる型が“单一”
のdlarray
オブジェクトとして,パラメーターを返します。
函数sz, sz, sz, sz,“单一”);参数= dlarray(重量);结束
128年個の入力チャネルで1を使用してバッチ正規化演算のスケールを初期化します。
numChannels = 128;sz = [numChannels 1];parameters.bn.Scale = initializeOnes(深圳);
学習可能なパラメーターをゼロで簡単に初期化するために,カスタム関数を定義できます。関数initializeZeros
は,学習可能なパラメーター深圳
のサイズを入力として受け取り,基となる型が“单一”
のdlarray
オブジェクトとして,パラメーターを返します。
函数参数= initializeZeros(sz)“单一”);参数= dlarray(重量);结束
128年個の入力チャネルでゼロを使用してバッチ正規化演算のオフセットを初期化します。
numChannels = 128;sz = [numChannels 1];parameters.bn.Offset = initializeZeros(深圳);
[1]格洛洛,泽维尔,还有约书亚·本吉奥。“理解训练深度前馈神经网络的难度。”第13届人工智能与统计国际会议论文集,第249-256页。2010.
何开明,张翔宇,任少青,孙健《深入整流器:在图像网分类上超越人类水平的表现》《IEEE计算机视觉国际会议论文集》,第1026-1034页。2015.
dlarray
|dlgradient
|dlfeval
|dlnetwork