深層学習ニューラル ネットワーク
このページをすべて展開する
説明
dlnetwork
オブジェクトは、深層学習ニューラル ネットワークのアーキテクチャを指定します。
ヒント
ほとんどの深層学習タスクでは、事前学習済みのニューラル ネットワークを使用して独自のデータに適応させることができます。転移学習を使用して、畳み込みニューラル ネットワークの再学習を行い、新しい一連のイメージを分類する方法を示す例については、Retrain Neural Network to Classify New Imagesを参照してください。または、関数 trainnet と関数 trainingOptions を使用してニューラル ネットワークを作成し、これにゼロから学習させることができます。
タスクに必要な学習オプションが関数 trainingOptions に用意されていない場合、自動微分を使用してカスタム学習ループを作成できます。詳細については、カスタム学習ループを使用したネットワークの学習を参照してください。
タスクに必要な損失関数が関数 trainnet に用意されていない場合、カスタム損失関数を関数ハンドルとして trainnet
に指定できます。損失関数が予測とターゲットよりも多くの入力を必要とする場合 (たとえば、損失関数がニューラル ネットワークまたは追加の入力にアクセスする必要がある場合)、カスタム学習ループを使用してモデルに学習させます。詳細については、カスタム学習ループを使用したネットワークの学習を参照してください。
タスクに必要な層が Deep Learning Toolbox™ に用意されていない場合、カスタム層を作成できます。詳細については、カスタム深層学習層の定義を参照してください。層のネットワークとして指定できないモデルの場合は、モデルを関数として定義できます。詳細については、モデル関数を使用したネットワークの学習を参照してください。
どのタスクでどの学習手法を使用するかについての詳細は、MATLAB による深層学習モデルの学習を参照してください。
作成
構文
net = dlnetwork
net = dlnetwork(layers)
net = dlnetwork(layers,OutputNames=names)
net = dlnetwork(layers,Initialize=tf)
net = dlnetwork(layers,X1,...,XN)
net = dlnetwork(layers,X1,...,XN,OutputNames=names)
net = dlnetwork(prunableNet)
net = dlnetwork(mdl)
説明
空のネットワーク
は、層がない net
= dlnetworkdlnetwork
オブジェクトを作成します。ニューラル ネットワークをゼロから作成するには、この構文を使用します。 (R2024a 以降)
例
入力層をもつネットワーク
は、指定された層を使用してニューラル ネットワークを作成し、未設定の学習可能なパラメーターと状態パラメーターを初期化します。この構文は、net
= dlnetwork(layers)layers
の入力層を使用して、ニューラル ネットワークの学習可能なパラメーターと状態パラメーターのサイズと形式を決定します。
layers
が、完全な単入力ニューラル ネットワークを定義し、直列に配置された層をもち、入力層をもつ場合、この構文を使用します。
例
は、OutputNames プロパティも設定します。net
= dlnetwork(layers,OutputNames=names)OutputNames
プロパティは、ネットワークの出力に対応する層または層出力を指定します。
layers
が、完全な単入力多出力ニューラル ネットワークを定義し、直列に配置された層をもち、入力層をもつ場合、この構文を使用します。
は、ニューラル ネットワークの学習可能なパラメーターと状態パラメーターを初期化するかどうかを指定します。net
= dlnetwork(layers,Initialize=tf)tf
が 1
(true
) の場合、この構文は net = dlnetwork(layers)
と等価です。tf
が 0
(false
) の場合、この構文は、空のネットワークを作成してから関数 addLayers
を使用して layers
を追加することと等価です。
未接続の入力をもつネットワーク
は、指定された層を使用してニューラル ネットワークを作成し、未設定の学習可能なパラメーターと状態パラメーターを初期化します。この構文は、ネットワークのデータ レイアウト オブジェクト、またはサンプル入力 net
= dlnetwork(layers,X1,...,XN)X1,...,XN
を使用して、ニューラル ネットワークの学習可能なパラメーターと状態値のサイズと形式を決定します。ここで、N
はネットワーク入力の数です。
layers
が、完全なニューラル ネットワークを定義し、直列に配置された層をもち、入力層に接続されていない入力をもつ場合、この構文を使用します。
は、OutputNames プロパティも設定します。net
= dlnetwork(layers,X1,...,XN,OutputNames=names)
layers
が、完全なニューラル ネットワークを定義し、複数の出力をもち、直列に配置された層をもち、入力層に接続されていない入力をもつ場合、この構文を使用します。
変換
は、枝刈り用に選択されたフィルターを net
= dlnetwork(prunableNet) prunableNet
の畳み込み層から削除して TaylorPrunableNetwork
を dlnetwork
オブジェクトに変換し、圧縮された (学習可能なパラメーターを減らしてサイズを小さくした) dlnetwork
オブジェクトを返します。
は、Statistics and Machine Learning Toolbox™ の機械学習モデルを net
= dlnetwork(mdl)dlnetwork
オブジェクトに変換します。
入力引数
すべて展開する
layers
— ネットワーク層
Layer
配列
ネットワーク層。Layer
配列として指定します。
層は直列に結合されます。
サポートされている層の一覧については、深層学習層の一覧を参照してください。
X1,...,XN
— サンプルのネットワーク入力またはデータ レイアウト
形式を整えた dlarray
オブジェクト | 形式を整えた networkDataLayout
オブジェクト
学習可能なパラメーターと状態パラメーターのサイズと形式を決定するのに使用されるサンプル データまたはデータ レイアウト。形式を整えた dlarray オブジェクトまたは形式を整えた networkDataLayout オブジェクトとして指定します。ソフトウェアは、X1,...XN
をネットワーク全体に伝播させて、dlnetwork
オブジェクトの学習可能なパラメーターと状態パラメーターの適切なサイズと形式を決定し、未設定の学習可能なパラメーターと状態パラメーターがあれば、それを初期化します。
X1,...,XN
の順序は、layers
において入力を必要とする層の順序と一致しなければなりません。
メモ
自動的な初期化では、入力データのサイズと形式の情報のみが使用されます。入力データの値に基づいて初期化を行う場合、学習可能なパラメーターを手動で初期化しなければなりません。
tf
— 学習可能なパラメーターと状態パラメーターを初期化するかどうかのフラグ
1
(true
) (既定値) | 0
(false
)
学習可能なパラメーターと状態パラメーターを初期化するかどうかのフラグ。次のいずれかの値として指定します。
1
(true
) — 学習可能なパラメーターと状態パラメーターを初期化します。ソフトウェアは、layers
の入力層を使用して、学習可能なパラメーターと状態パラメーターのサイズを決定します。0
(false
) — 学習可能なパラメーターと状態パラメーターを初期化しません。次の場合にこのオプションを使用します。ニューラル ネットワークをさらに編集する予定がある場合。層および接続の追加または削除を行う予定がある場合など。
カスタム層でネットワークを使用し、カスタム初期化関数を使用する場合。
ニューラル ネットワークにおける予測とカスタム学習ループでは、初期化されたネットワークが必要です。初期化されていないネットワークを初期化するには、関数 initialize を使用します。
prunableNet
— 1 次テイラー近似を使用した枝刈り用のネットワーク
TaylorPrunableNetwork
オブジェクト
1 次テイラー近似を使用した枝刈り用のネットワーク。TaylorPrunableNetwork オブジェクトとして指定します。
深層ニューラル ネットワークの枝刈りを行うには、Deep Learning Toolbox Model Quantization Library サポート パッケージが必要です。このサポート パッケージは無料のアドオンで、アドオン エクスプローラーを使用してダウンロードできます。または、Deep Learning Toolbox Model Quantization Library を参照してください。
mdl
— Statistics and Machine Learning Toolbox からの分類または回帰ニューラル ネットワーク
ClassificationNeuralNetwork
| RegressionNeuralNetwork
| CompactClassificationNeuralNetwork
| CompactRegressionNeuralNetwork
R2024b 以降
分類または回帰ニューラル ネットワーク。ClassificationNeuralNetwork (Statistics and Machine Learning Toolbox) オブジェクト、RegressionNeuralNetwork (Statistics and Machine Learning Toolbox) オブジェクト、CompactClassificationNeuralNetwork (Statistics and Machine Learning Toolbox) オブジェクト、または CompactRegressionNeuralNetwork (Statistics and Machine Learning Toolbox) オブジェクトとして指定します。
fitcnet (Statistics and Machine Learning Toolbox) 関数と fitrnet (Statistics and Machine Learning Toolbox) 関数は、それぞれ ClassificationNeuralNetwork
オブジェクトと RegressionNeuralNetwork
オブジェクトを返します。compact (Statistics and Machine Learning Toolbox) 関数は、CompactClassificationNeuralNetwork
オブジェクトと CompactRegressionNeuralNetwork
オブジェクトを返します。
プロパティ
すべて展開する
Layers
— ネットワーク層
Layer
配列
ネットワーク層。Layer
配列として指定します。
Connections
— 層の結合
table
層の結合。2 列の table として指定します。
各 table 行はニューラル ネットワーク内の結合を表します。1 列目の Source
は、各結合の結合元を指定します。2 列目の Destination
は、各結合の結合先を指定します。結合元と結合先は層の名前であるか、"layerName/IOName"
の形式を取ります。"IOName"
は層の入力または出力の名前です。
データ型: table
Learnables
— ネットワークの学習可能パラメーター
table
ネットワークの学習可能パラメーター。3 列の table として指定します。
Layer
— 層の名前。string スカラーとして指定します。Parameter
— パラメーター名。string スカラーとして指定します。Value
— パラメーターの値。dlarray
オブジェクトとして指定します。
ネットワークの学習可能パラメーターには、ネットワークが学習した特徴が格納されます。たとえば、畳み込み層や全結合層の重みが格納されます。
学習可能なパラメーターの値に複素数値を使用できます (R2024a 以降)。
データ型: table
State
— ネットワークの状態
table
ネットワークの状態。table として指定します。
ネットワークの状態は、次の 3 つの列をもつ table です。
Layer
– 層の名前。string スカラーとして指定します。Parameter
– 状態パラメーターの名前。string スカラーとして指定します。Value
– 状態パラメーターの値。dlarray
オブジェクトとして指定します。
層の状態には、層処理中に計算された情報が格納されます。この情報は、層の後続のフォワード パスで使用するために保持されます。たとえば、LSTM 層のセル状態と隠れ状態、またはバッチ正規化層の実行中の統計が格納されます。
LSTM 層などの再帰層の場合、HasStateInputs
プロパティを 1
(true
) に設定すると、その層の状態に関するエントリはステート テーブルに格納されません。
学習時または推論時に、関数 forward および関数 predict の出力を使用してネットワークの状態を更新できます。
状態値に複素数値を使用できます (R2024a 以降)。
データ型: table
InputNames
— ネットワーク入力の名前
文字ベクトルの cell 配列
ネットワーク入力の名前。文字ベクトルの cell 配列として指定します。
ネットワーク入力は、入力層および層の未接続入力です。
入力層および 1 つの入力をもつ層の場合、入力の名前は層の名前です。複数の入力をもつ層の場合、入力の名前は "layerName/inputName"
です。ここで、layerName
は層の名前、inputName
は層の入力の名前です。
複数の入力をもつネットワークの場合、学習関数と予測関数はこのプロパティを使用して入力の順序を決定します。たとえば、predict 関数に対するインメモリ入力 X1,...,XM
の場合、入力の順序は、ネットワークの InputNames
プロパティ内の対応する入力の順序と一致しなければなりません。
順序をカスタマイズするには、InputNames
を目的の順序に設定します。 (R2024b 以降)
R2024b より前: このプロパティは読み取り専用です。InputNames
で指定した順序と一致する入力引数が含まれるように、predict
関数などを呼び出すコードを調整します。
メモ
InputNames
プロパティをカスタマイズした後、そのニューラル ネットワークに対して層の追加や削除などの編集を行っても、InputNames
プロパティは変わりません。この動作は、ネットワーク入力に対応する層を追加または削除する場合は InputNames
プロパティも手動で更新する必要があることを意味します。
データ型: cell
OutputNames
— ネットワーク出力の名前
文字ベクトルの cell 配列
ネットワーク出力の名前。文字ベクトルの cell 配列として指定します。
1 つの出力をもつ層の場合、出力の名前は層の名前です。複数の出力をもつ層の場合、出力の名前は "layerName/outputName"
です。ここで、layerName
は層の名前、outputName
は層の出力の名前です。
出力名を指定しなかった場合、ネットワークの作成時に、ソフトウェアによって未接続の出力をもつ層に OutputNames
プロパティが設定されます。
複数の出力をもつネットワークの場合、学習関数と予測関数はこのプロパティを使用して出力の順序を決定します。たとえば、predict 関数の出力 Y1,...,YN
は、ネットワークの OutputNames
プロパティによって指定された出力に対応します。
メモ
OutputNames
プロパティをカスタマイズした後、そのニューラル ネットワークに対して層の追加や削除などの編集を行っても、OutputNames
プロパティは変わりません。この動作は、ネットワーク出力に対応する層を追加または削除する場合は OutputNames
プロパティも手動で更新する必要があることを意味します。
データ型: cell
Initialized
— ネットワークが初期化済みかどうかのフラグ
0
(false
) | 1
(true
)
この プロパティ は読み取り専用です。
ネットワークが初期化済みかどうかのフラグ。次のいずれかの値として指定します。
1
(true
) — ネットワークは初期化されており、予測およびカスタム学習ループに使用する準備ができています。学習可能パラメーターまたは状態パラメーターの "値" を変更しても、ネットワークは初期化済みのままになります。0
(false
) — ネットワークは初期化されておらず、予測またはカスタム学習ループに使用する準備ができていません。初期化されていないネットワークを初期化するには、関数 initialize を使用します。
データ型: logical
オブジェクト関数
addInputLayer | Add input layer to network |
addLayers | ニューラル ネットワークへの層の追加 |
removeLayers | ニューラル ネットワークからの層の削除 |
connectLayers | ニューラル ネットワークの層の結合 |
disconnectLayers | ニューラル ネットワークの層の切り離し |
replaceLayer | ニューラル ネットワークの層の置き換え |
getLayer | Look up a layer by name or path |
expandLayers | Expand network layers |
groupLayers | Group layers into network layers |
summary | ネットワークの概要の出力 |
plot | ニューラル ネットワーク アーキテクチャのプロット |
initialize | dlnetwork の学習可能なパラメーターと状態パラメーターの初期化 |
predict | 推論用の深層学習ネットワーク出力の計算 |
forward | 学習用の深層学習ネットワーク出力の計算 |
resetState | ニューラル ネットワークの状態パラメーターのリセット |
setL2Factor | 層の学習可能なパラメーターの L2 正則化係数の設定 |
setLearnRateFactor | 層の学習可能なパラメーターの学習率係数を設定します。 |
getLearnRateFactor | 層の学習可能なパラメーターの学習率係数の取得 |
getL2Factor | 層の学習可能なパラメーターの L2 正則化係数の取得 |
例
すべて折りたたむ
ニューラル ネットワークのゼロからの作成
ライブ スクリプトを開く
入力として与えられた 2 次元イメージの categorical ラベルと数値を両方予測する 2 出力ニューラル ネットワークを定義します。
クラスと応答の数を指定します。
numClasses = 10;numResponses = 1;
空のニューラル ネットワークを作成します。
net = dlnetwork;
ネットワークの主分岐の層、およびソフトマックス出力を定義します。
layers = [ imageInputLayer([28 28 1],Normalization="none") convolution2dLayer(5,16,Padding="same") batchNormalizationLayer reluLayer(Name="relu_1") convolution2dLayer(3,32,Padding="same",Stride=2) batchNormalizationLayer reluLayer convolution2dLayer(3,32,Padding="same") batchNormalizationLayer reluLayer additionLayer(2,Name="add") fullyConnectedLayer(numClasses) softmaxLayer(Name="softmax")];net = addLayers(net,layers);
スキップ接続を追加します。
layers = [ convolution2dLayer(1,32,Stride=2,Name="conv_skip") batchNormalizationLayer reluLayer(Name="relu_skip")];net = addLayers(net,layers);net = connectLayers(net,"relu_1","conv_skip");net = connectLayers(net,"relu_skip","add/in2");
回帰出力用に全結合層を追加します。
layers = fullyConnectedLayer(numResponses,Name="fc_2");net = addLayers(net,layers);net = connectLayers(net,"add","fc_2");
ニューラル ネットワークをプロットで表示します。
figureplot(net)
層配列からニューラル ネットワークへの変換
ライブ スクリプトを開く
層が、完全な単入力ニューラル ネットワークを定義し、直列に配置された層をもち、入力層をもつ場合、層配列を dlnetwork
オブジェクトに直接変換できます。
LSTM ネットワークを層配列として指定します。
layers = [ sequenceInputLayer(12) lstmLayer(100) fullyConnectedLayer(9) softmaxLayer];
層配列を dlnetwork
オブジェクトに変換します。この層配列は、入力層をもち、それ以外の入力をもたないため、ソフトウェアによってニューラル ネットワークが初期化されます。
net = dlnetwork(layers)
net = dlnetwork with properties: Layers: [4x1 nnet.cnn.layer.Layer] Connections: [3x2 table] Learnables: [5x3 table] State: [2x3 table] InputNames: {'sequenceinput'} OutputNames: {'softmax'} Initialized: 1 View summary with summary.
学習可能なパラメーターの凍結
ライブ スクリプトを開く
事前学習済みのネットワークを読み込みます。
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);
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意および制限:
コード生成では、
InputNames
プロパティとOutputNames
プロパティのみがサポートされます。dlnetwork
オブジェクトのInitialized
プロパティは1
(true
) でなければなりません。コード生成は、
State
プロパティの変数Value
の調整をサポートします。コード生成は、State
プロパティの変数Layer
およびParameter
の変更をサポートしません。コード生成は、
State
プロパティに関する次の関数をサポートします。height
isscalar
isempty
istable
istabular
ndims
numel
size
width
Simulink によるシミュレーションに関し、コード生成は、MATLAB Function ブロックにおける
dlnetwork
のState
の抽出と更新をサポートしません。代わりに、Stateful Predict ブロックまたは Stateful Classify ブロックを使用してください。コード生成は、異種混合の入力層をもつ多入力多出力の
dlnetwork
オブジェクトをサポートします。再帰型ニューラル ネットワークの場合、複数の入力はサポートされていません。
Intel® MKL-DNN の場合、入力層はすべてシーケンス入力層でなければなりません。
ARM® Compute の場合、
dlnetwork
は、シーケンス入力層および非シーケンス入力層をもつことができます。
コード生成は、データ形式に関して次の制限がある
dlarray
入力をサポートします。サードパーティのライブラリに依存しない汎用 C/C++ の場合、
dlnetwork
は、任意の数の空間次元がある入力層をもつことができます。ARM Compute および Intel MKL-DNN の場合、コード生成は、0 個または 2 個の空間次元が含まれる
dlarray
オブジェクトをサポートします。たとえば、コード生成は次をサポートします。データ形式が
"CT"
または"CBT"
であるベクトル シーケンスデータ形式が
"SSCT"
または"SSCBT"
であるイメージ シーケンス
コード生成では、"T" (時間) 次元のみを可変サイズとすることができ、他の次元はすべて固定サイズでなければなりません。
コード生成は、オブジェクト関数
predict
のみをサポートします。predict
メソッドへのdlarray
入力は、single
データ型でなければなりません。コード生成用の
dlnetwork
オブジェクトを作成するには、コード生成のための事前学習済みネットワークの読み込み (MATLAB Coder)を参照してください。
GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。
使用上の注意および制限:
コード生成では、
InputNames
プロパティとOutputNames
プロパティのみがサポートされます。コード生成では、
dlnetwork
オブジェクトのInitialized
プロパティはtrue
でなければなりません。コード生成は、
State
プロパティの変数Value
の調整をサポートします。コード生成は、State
プロパティの変数Layer
およびParameter
の変更をサポートしません。コード生成は、
State
プロパティに関する次の関数をサポートします。height
isscalar
isempty
istable
istabular
ndims
numel
size
width
Simulink によるシミュレーションに関し、コード生成は、MATLAB Function ブロックにおける
dlnetwork
のState
の抽出と更新をサポートしません。代わりに、Stateful Predict ブロックまたは Stateful Classify ブロックを使用してください。コード生成は、異種混合の入力層をもつ多入力多出力の
dlnetwork
オブジェクトをサポートします。再帰型ニューラル ネットワークの場合、複数の入力はサポートされていません。コード生成は、cuDNN および TensorRT をターゲットとする
dlnetwork
オブジェクトをサポートします。コード生成は、データ形式に関して次の制限がある
dlarray
入力をサポートします。サードパーティのライブラリに依存しない標準 CUDA の場合、
dlnetwork
は、任意の数の空間次元がある入力層をもつことができます。cuDNN および TensorRT をターゲットとする場合、コード生成は、0 個または 2 個の空間次元が含まれる
dlarray
オブジェクトをサポートします。たとえば、コード生成は次をサポートします。データ形式が
"CT"
または"CBT"
であるベクトル シーケンスデータ形式が
"SSCT"
または"SSCBT"
であるイメージ シーケンス
コード生成では、"T" (時間) 次元のみを可変サイズとすることができ、他の次元はすべて固定サイズでなければなりません。
コード生成は、オブジェクト関数
predict
のみをサポートします。single
データ型のdlarray
入力をpredict
メソッドに渡さなければなりません。精度が
INT8
である TensorRT をターゲットとする場合、ネットワークの最後の層はsoftmaxLayer
層でなければなりません。コード生成用の
dlnetwork
オブジェクトを作成するには、コード生成用の事前学習済みのネットワークの読み込み (GPU Coder)を参照してください。
バージョン履歴
R2019b で導入
すべて展開する
R2024b: Statistics and Machine Learning Toolbox の機械学習モデルから dlnetwork
への変換
以下のオブジェクトを dlnetwork
オブジェクトに変換します。
ClassificationNeuralNetwork (Statistics and Machine Learning Toolbox)
RegressionNeuralNetwork (Statistics and Machine Learning Toolbox)
CompactClassificationNeuralNetwork (Statistics and Machine Learning Toolbox)
RegressionNeuralNetwork (Statistics and Machine Learning Toolbox)
R2024b: ニューラル ネットワーク入力の順序のカスタマイズ
InputNames プロパティを設定して、ニューラル ネットワーク入力の順序をカスタマイズします。
R2024a: 空のニューラル ネットワークの作成
入力引数を指定せずに関数 dlnetwork
を使用し、空のニューラル ネットワークを作成します。空のニューラル ネットワークを出発点として、ニューラル ネットワークをゼロから構築します。
R2024a: 複素数値の学習可能なパラメーターと状態
Learnables プロパティおよび State プロパティの値に複素数値を使用できます。
R2024a: 層グラフは非推奨
R2024a 以降、LayerGraph オブジェクトは非推奨となりました。代わりに dlnetwork オブジェクトを使用してください。
この推奨により、層グラフを入力する次の構文も非推奨となります。
net = dlnetwork(lgraph)
net = dlnetwork(lgraph,X1,...,XN)
net = dlnetwork(__,Initialize=tf)
net = dlnetwork(__,OutputNames=names)
グラフ構造をもつニューラル ネットワークを指定するには、dlnetwork
オブジェクトを作成し、関数 addLayers および connectLayers をそれぞれ使用して層の追加と結合を行います。多くの場合、次の代替案を使用してコードを更新できます。
層グラフの構文 | 代替案 |
---|---|
lgraph = layerGraph; | net = dlnetwork; |
lgraph = layerGraph(layers); | net = dlnetwork(layers,Initialize=false); |
addLayers や connectLayers といったほとんどの LayerGraph
オブジェクト関数は、dlnetwork
もサポートしているため、更新は必要はありません。
ニューラル ネットワークのアーキテクチャによっては、結果として得られる dlnetwork
オブジェクトが初期化されていない場合があります。ニューラル ネットワークにおける予測とカスタム学習ループでは、初期化されたニューラル ネットワークが必要です。初期化されていないニューラル ネットワークを初期化するには、関数 initialize を使用します。
LayerGraph
オブジェクトを使用する既存のコードは、引き続き実行できます。今後も、必要に応じ、net = dlnetwork(lgraph)
を使用して引数 Initialize
または X1,...,XN
を指定し、LayerGraph
オブジェクトを dlnetwork
オブジェクトに変換することができます。
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
を手動で設定します。
以前のリリースでは、正規化方式を使用する入力層が含まれるネットワークを初期化する場合、その正規化方式で必要なプロパティを層の作成時に指定していないと、ソフトウェアでエラーが発生します。
R2021a: dlnetwork
の状態値は dlarray
オブジェクトである
dlnetwork
オブジェクトの State は、ネットワークに含まれる各層の状態パラメーターの名前と値が格納された table です。
R2021a 以降、状態値は dlarray オブジェクトになっています。この変更によって、AcceleratedFunction オブジェクトを使用する際のサポートが強化されています。頻繁に変更される入力値 (ネットワークの状態を含む入力など) をもつ深層学習関数を高速化するには、頻繁に変更される値を dlarray
オブジェクトとして指定しなければなりません。
以前のバージョンでは、状態値が数値配列になっています。
多くの場合、コードを更新する必要はありません。状態値を数値配列にする必要があるコードの場合、以前の動作を再現するには、関数 extractdata と関数 dlupdate を併用して状態値からデータを手動で抽出します。
state = dlupdate(@extractdata,net.State);
参考
trainnet | trainingOptions | dlarray | dlgradient | dlfeval | forward | predict | initialize | TaylorPrunableNetwork
トピック
- Retrain Neural Network to Classify New Images
- Train Neural Network with Tabular Data
- カスタム学習ループを使用したネットワークの学習
- 敵対的生成ネットワーク (GAN) の学習
- カスタム学習ループ、損失関数、およびネットワークの定義
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:
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)
Contact your local office