dlnetwork - 深層学習ニューラル ネットワーク - MATLAB - MathWorks 日本 (2024)

Table of Contents
説明 作成 構文 説明 入力引数 layers — ネットワーク層Layer 配列 X1,...,XN — サンプルのネットワーク入力またはデータ レイアウト 形式を整えた dlarray オブジェクト | 形式を整えた networkDataLayout オブジェクト tf — 学習可能なパラメーターと状態パラメーターを初期化するかどうかのフラグ 1 (true) (既定値) | 0 (false) prunableNet — 1 次テイラー近似を使用した枝刈り用のネットワーク TaylorPrunableNetwork オブジェクト mdl — Statistics and Machine Learning Toolbox からの分類または回帰ニューラル ネットワーク ClassificationNeuralNetwork | RegressionNeuralNetwork | CompactClassificationNeuralNetwork | CompactRegressionNeuralNetwork プロパティ Layers — ネットワーク層 Layer 配列 Connections — 層の結合 table Learnables — ネットワークの学習可能パラメーター table State — ネットワークの状態 table InputNames — ネットワーク入力の名前 文字ベクトルの cell 配列 OutputNames — ネットワーク出力の名前 文字ベクトルの cell 配列 Initialized — ネットワークが初期化済みかどうかのフラグ 0 (false) | 1 (true) オブジェクト関数 ニューラル ネットワークのゼロからの作成 層配列からニューラル ネットワークへの変換 学習可能なパラメーターの凍結 拡張機能 C/C++ コード生成 MATLAB® Coder™ を使用して C および C++ コードを生成します。 GPU コード生成 GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。 バージョン履歴 R2024b: Statistics and Machine Learning Toolbox の機械学習モデルから dlnetwork への変換 R2024b: ニューラル ネットワーク入力の順序のカスタマイズ R2024a: 空のニューラル ネットワークの作成 R2024a: 複素数値の学習可能なパラメーターと状態 R2024a: 層グラフは非推奨 R2023b: 未設定の正規化統計量をもつ入力層が含まれるネットワークの初期化 R2021a: dlnetwork の状態値は dlarray オブジェクトである 参考 トピック MATLAB コマンド Americas Europe Asia Pacific

深層学習ニューラル ネットワーク

このページをすべて展開する

説明

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 = dlnetwork は、層がない dlnetwork オブジェクトを作成します。ニューラル ネットワークをゼロから作成するには、この構文を使用します。 (R2024a 以降)

入力層をもつネットワーク

net = dlnetwork(layers) は、指定された層を使用してニューラル ネットワークを作成し、未設定の学習可能なパラメーターと状態パラメーターを初期化します。この構文は、layers の入力層を使用して、ニューラル ネットワークの学習可能なパラメーターと状態パラメーターのサイズと形式を決定します。

layers が、完全な単入力ニューラル ネットワークを定義し、直列に配置された層をもち、入力層をもつ場合、この構文を使用します。

net = dlnetwork(layers,OutputNames=names) は、OutputNames プロパティも設定します。OutputNames プロパティは、ネットワークの出力に対応する層または層出力を指定します。

layers が、完全な単入力多出力ニューラル ネットワークを定義し、直列に配置された層をもち、入力層をもつ場合、この構文を使用します。

net = dlnetwork(layers,Initialize=tf) は、ニューラル ネットワークの学習可能なパラメーターと状態パラメーターを初期化するかどうかを指定します。tf1 (true) の場合、この構文は net = dlnetwork(layers) と等価です。tf0 (false) の場合、この構文は、空のネットワークを作成してから関数 addLayers を使用して layers を追加することと等価です。

未接続の入力をもつネットワーク

net = dlnetwork(layers,X1,...,XN) は、指定された層を使用してニューラル ネットワークを作成し、未設定の学習可能なパラメーターと状態パラメーターを初期化します。この構文は、ネットワークのデータ レイアウト オブジェクト、またはサンプル入力 X1,...,XN を使用して、ニューラル ネットワークの学習可能なパラメーターと状態値のサイズと形式を決定します。ここで、N はネットワーク入力の数です。

layers が、完全なニューラル ネットワークを定義し、直列に配置された層をもち、入力層に接続されていない入力をもつ場合、この構文を使用します。

net = dlnetwork(layers,X1,...,XN,OutputNames=names) は、OutputNames プロパティも設定します。

layers が、完全なニューラル ネットワークを定義し、複数の出力をもち、直列に配置された層をもち、入力層に接続されていない入力をもつ場合、この構文を使用します。

変換

net = dlnetwork(prunableNet) は、枝刈り用に選択されたフィルターを prunableNet の畳み込み層から削除して TaylorPrunableNetworkdlnetwork オブジェクトに変換し、圧縮された (学習可能なパラメーターを減らしてサイズを小さくした) dlnetwork オブジェクトを返します。

net = dlnetwork(mdl) は、Statistics and Machine Learning Toolbox™ の機械学習モデルを dlnetwork オブジェクトに変換します。

入力引数

すべて展開する

ネットワーク層。Layer 配列として指定します。

層は直列に結合されます。

サポートされている層の一覧については、深層学習層の一覧を参照してください。

学習可能なパラメーターと状態パラメーターのサイズと形式を決定するのに使用されるサンプル データまたはデータ レイアウト。形式を整えた dlarray オブジェクトまたは形式を整えた networkDataLayout オブジェクトとして指定します。ソフトウェアは、X1,...XN をネットワーク全体に伝播させて、dlnetwork オブジェクトの学習可能なパラメーターと状態パラメーターの適切なサイズと形式を決定し、未設定の学習可能なパラメーターと状態パラメーターがあれば、それを初期化します。

X1,...,XN の順序は、layers において入力を必要とする層の順序と一致しなければなりません。

メモ

自動的な初期化では、入力データのサイズと形式の情報のみが使用されます。入力データの値に基づいて初期化を行う場合、学習可能なパラメーターを手動で初期化しなければなりません。

学習可能なパラメーターと状態パラメーターを初期化するかどうかのフラグ。次のいずれかの値として指定します。

  • 1 (true) — 学習可能なパラメーターと状態パラメーターを初期化します。ソフトウェアは、layers の入力層を使用して、学習可能なパラメーターと状態パラメーターのサイズを決定します。

  • 0 (false) — 学習可能なパラメーターと状態パラメーターを初期化しません。次の場合にこのオプションを使用します。

    • ニューラル ネットワークをさらに編集する予定がある場合。層および接続の追加または削除を行う予定がある場合など。

    • カスタム層でネットワークを使用し、カスタム初期化関数を使用する場合。

ニューラル ネットワークにおける予測とカスタム学習ループでは、初期化されたネットワークが必要です。初期化されていないネットワークを初期化するには、関数 initialize を使用します。

1 次テイラー近似を使用した枝刈り用のネットワーク。TaylorPrunableNetwork オブジェクトとして指定します。

深層ニューラル ネットワークの枝刈りを行うには、Deep Learning Toolbox Model Quantization Library サポート パッケージが必要です。このサポート パッケージは無料のアドオンで、アドオン エクスプローラーを使用してダウンロードできます。または、Deep Learning Toolbox Model Quantization Library を参照してください。

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

プロパティ

すべて展開する

ネットワーク層。Layer 配列として指定します。

層の結合。2 列の table として指定します。

各 table 行はニューラル ネットワーク内の結合を表します。1 列目の Source は、各結合の結合元を指定します。2 列目の Destination は、各結合の結合先を指定します。結合元と結合先は層の名前であるか、"layerName/IOName" の形式を取ります。"IOName" は層の入力または出力の名前です。

データ型: table

ネットワークの学習可能パラメーター。3 列の table として指定します。

  • Layer — 層の名前。string スカラーとして指定します。

  • Parameter — パラメーター名。string スカラーとして指定します。

  • Value — パラメーターの値。dlarray オブジェクトとして指定します。

ネットワークの学習可能パラメーターには、ネットワークが学習した特徴が格納されます。たとえば、畳み込み層や全結合層の重みが格納されます。

学習可能なパラメーターの値に複素数値を使用できます (R2024a 以降)

データ型: table

ネットワークの状態。table として指定します。

ネットワークの状態は、次の 3 つの列をもつ table です。

  • Layer – 層の名前。string スカラーとして指定します。

  • Parameter – 状態パラメーターの名前。string スカラーとして指定します。

  • Value – 状態パラメーターの値。dlarray オブジェクトとして指定します。

層の状態には、層処理中に計算された情報が格納されます。この情報は、層の後続のフォワード パスで使用するために保持されます。たとえば、LSTM 層のセル状態と隠れ状態、またはバッチ正規化層の実行中の統計が格納されます。

LSTM 層などの再帰層の場合、HasStateInputs プロパティを 1 (true) に設定すると、その層の状態に関するエントリはステート テーブルに格納されません。

学習時または推論時に、関数 forward および関数 predict の出力を使用してネットワークの状態を更新できます。

状態値に複素数値を使用できます (R2024a 以降)

データ型: table

ネットワーク入力の名前。文字ベクトルの cell 配列として指定します。

ネットワーク入力は、入力層および層の未接続入力です。

入力層および 1 つの入力をもつ層の場合、入力の名前は層の名前です。複数の入力をもつ層の場合、入力の名前は "layerName/inputName" です。ここで、layerName は層の名前、inputName は層の入力の名前です。

複数の入力をもつネットワークの場合、学習関数と予測関数はこのプロパティを使用して入力の順序を決定します。たとえば、predict 関数に対するインメモリ入力 X1,...,XM の場合、入力の順序は、ネットワークの InputNames プロパティ内の対応する入力の順序と一致しなければなりません。

順序をカスタマイズするには、InputNames を目的の順序に設定します。 (R2024b 以降)

R2024b より前: このプロパティは読み取り専用です。InputNames で指定した順序と一致する入力引数が含まれるように、predict 関数などを呼び出すコードを調整します。

メモ

InputNames プロパティをカスタマイズした後、そのニューラル ネットワークに対して層の追加や削除などの編集を行っても、InputNames プロパティは変わりません。この動作は、ネットワーク入力に対応する層を追加または削除する場合は InputNames プロパティも手動で更新する必要があることを意味します。

データ型: cell

ネットワーク出力の名前。文字ベクトルの cell 配列として指定します。

1 つの出力をもつ層の場合、出力の名前は層の名前です。複数の出力をもつ層の場合、出力の名前は "layerName/outputName" です。ここで、layerName は層の名前、outputName は層の出力の名前です。

出力名を指定しなかった場合、ネットワークの作成時に、ソフトウェアによって未接続の出力をもつ層に OutputNames プロパティが設定されます。

複数の出力をもつネットワークの場合、学習関数と予測関数はこのプロパティを使用して出力の順序を決定します。たとえば、predict 関数の出力 Y1,...,YN は、ネットワークの OutputNames プロパティによって指定された出力に対応します。

メモ

OutputNames プロパティをカスタマイズした後、そのニューラル ネットワークに対して層の追加や削除などの編集を行っても、OutputNames プロパティは変わりません。この動作は、ネットワーク出力に対応する層を追加または削除する場合は OutputNames プロパティも手動で更新する必要があることを意味します。

データ型: cell

この プロパティ は読み取り専用です。

ネットワークが初期化済みかどうかのフラグ。次のいずれかの値として指定します。

  • 1 (true) — ネットワークは初期化されており、予測およびカスタム学習ループに使用する準備ができています。学習可能パラメーターまたは状態パラメーターの "値" を変更しても、ネットワークは初期化済みのままになります。

  • 0 (false) — ネットワークは初期化されておらず、予測またはカスタム学習ループに使用する準備ができていません。初期化されていないネットワークを初期化するには、関数 initialize を使用します。

データ型: logical

オブジェクト関数

addInputLayerAdd input layer to network
addLayersニューラル ネットワークへの層の追加
removeLayersニューラル ネットワークからの層の削除
connectLayersニューラル ネットワークの層の結合
disconnectLayersニューラル ネットワークの層の切り離し
replaceLayerニューラル ネットワークの層の置き換え
getLayerLook up a layer by name or path
expandLayersExpand network layers
groupLayersGroup layers into network layers
summaryネットワークの概要の出力
plotニューラル ネットワーク アーキテクチャのプロット
initializedlnetwork の学習可能なパラメーターと状態パラメーターの初期化
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 - 深層学習ニューラル ネットワーク - MATLAB- MathWorks 日本 (1)

層配列からニューラル ネットワークへの変換

ライブ スクリプトを開く

層が、完全な単入力ニューラル ネットワークを定義し、直列に配置された層をもち、入力層をもつ場合、層配列を 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);

拡張機能

バージョン履歴

R2019b で導入

すべて展開する

InputNames プロパティを設定して、ニューラル ネットワーク入力の順序をカスタマイズします。

入力引数を指定せずに関数 dlnetwork を使用し、空のニューラル ネットワークを作成します。空のニューラル ネットワークを出発点として、ニューラル ネットワークをゼロから構築します。

参考

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 コマンドをサポートしていません。

dlnetwork - 深層学習ニューラル ネットワーク - MATLAB- MathWorks 日本 (2)

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

dlnetwork - 深層学習ニューラル ネットワーク - MATLAB
- MathWorks 日本 (2024)
Top Articles
Latest Posts
Recommended Articles
Article information

Author: Nathanial Hackett

Last Updated:

Views: 5714

Rating: 4.1 / 5 (52 voted)

Reviews: 91% of readers found this page helpful

Author information

Name: Nathanial Hackett

Birthday: 1997-10-09

Address: Apt. 935 264 Abshire Canyon, South Nerissachester, NM 01800

Phone: +9752624861224

Job: Forward Technology Assistant

Hobby: Listening to music, Shopping, Vacation, Baton twirling, Flower arranging, Blacksmithing, Do it yourself

Introduction: My name is Nathanial Hackett, I am a lovely, curious, smiling, lively, thoughtful, courageous, lively person who loves writing and wants to share my knowledge and understanding with you.