主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

深層学習用のネットワーク層

説明

深層学習用のニューラルネットワークのアーキテクチャを定義する層。

作成

MATLAB®の深層学習層の一覧については,深層学習層の一覧を参照してください。すべての層が順に結合されたニューラル ネットワークのアーキテクチャを指定するには、層の配列を直接作成します。層に複数の入力または出力がある可能性があるネットワークのアーキテクチャを指定するには、LayerGraphオブジェクトを使用します。

または,それぞれimportCaffeLayersimportKerasLayers,およびimportONNXLayersを使用して,咖啡、KerasおよびONNXから層をインポートできます。

独自のカスタム層を作成する方法については,カスタム深層学習層の定義を参照してください。

オブジェクト関数

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

すべて折りたたむ

1つの畳み込み層,ReLU層,全結合層がある分類用の畳み込みニューラルネットワークアーキテクチャを定義します。

层= [...imageInputLayer([28 28 3]) convolution2dLayer([5 5],10) reluLayer fulllyconnectedlayer (10) softmaxLayer classificationLayer
层= 6 x1层与层:数组1”的形象输入28 x28x3图像zerocenter正常化2”10 5 x5的卷积,卷积步伐[1]和填充[0 0 0 0]3”ReLU ReLU 4”完全连接10完全连接层5”Softmax Softmax 6”crossentropyex分类输出

オブジェクトです。

または,層を個別に作成してから連結することもできます。

input = imageInputLayer([28 28 3]);conv =卷积2dlayer ([5 5],10);relu = reluLayer;fc = fullyConnectedLayer (10);sm = softmaxLayer;有限公司= classificationLayer;层= [...输入控制
层= 6 x1层与层:数组1”的形象输入28 x28x3图像zerocenter正常化2”10 5 x5的卷积,卷积步伐[1]和填充[0 0 0 0]3”ReLU ReLU 4”完全连接10完全连接层5”Softmax Softmax 6”crossentropyex分类输出

1つの畳み込み層,ReLU層,全結合層がある分類用の畳み込みニューラルネットワークアーキテクチャを定義します。

层= [...imageInputLayer([28 28 3]) convolution2dLayer([5 5],10) reluLayer fulllyconnectedlayer (10) softmaxLayer classificationLayer;

最初の層を選択して,イメージ入力層を表示します。

层(1)
ans = ImageInputLayer with properties: Name: " InputSize: [28 28 3] Hyperparameters dataugmentation: 'none' Normalization: 'zerocenter' NormalizationDimension: 'auto' Mean: []

イメージ入力層の入力サイズを表示します。

层(1)。InputSize
ans =1×328日28日3

畳み込み層のストライドを表示します。

层(2)。步
ans =1×21 1

全結合層のバイアス学習率係数にアクセスします。

层(4)。BiasLearnRateFactor
ans = 1

深層学習用のシンプルな有向非循環グラフ(DAG)ネットワークを作成します。数字のイメージを分類するようネットワークに学習させます。この例のシンプルなネットワークは,以下から構成されます。

  • 逐次結合層による主分岐。

  • 単一の1 x 1畳み込み層を含む“ショートカット結合”。ショートカット結合は,パラメーターの勾配がネットワークの出力層からより初期の層へとよりスムーズに流れるようにします。

ネットワークの主分岐を層配列として作成します。加算層では複数の入力が要素単位で合計されます。加算層で合計する入力数を指定します。すべての層に名前があり、すべての名前が一意でなければなりません。

[imageInputLayer([28 28 1],]),“名字”“输入”16) convolution2dLayer(5日,“填充”“相同”“名字”“conv_1”) batchNormalizationLayer (“名字”“BN_1”) reluLayer (“名字”“relu_1”32岁的)convolution2dLayer (3“填充”“相同”“步”2,“名字”“conv_2”) batchNormalizationLayer (“名字”“BN_2”) reluLayer (“名字”“relu_2”32岁的)convolution2dLayer (3“填充”“相同”“名字”“conv_3”) batchNormalizationLayer (“名字”“BN_3”) reluLayer (“名字”“relu_3”) additionLayer (2“名字”“添加”) averagePooling2dLayer (2“步”2,“名字”“avpool”) fullyConnectedLayer (10“名字”“俱乐部”) softmaxLayer (“名字”“softmax”) classificationLayer (“名字”“classOutput”));

層配列から層グラフを作成します。layerGraphのすべての層を順に結合します。層グラフをプロットします。

lgraph = layerGraph(层);图绘制(lgraph)

1 x 1畳み込み層を作成し,層グラフに追加します。活性化のサイズが“relu_3”層の活性化のサイズと一致するように,畳み込みフィルターの数とストライドを指定します。この方法により,加算層で“skipConv”層と“relu_3”層の出力を加算できます。層がグラフに含まれることを確認するには,層グラフをプロットします。

32岁的skipConv = convolution2dLayer (1“步”2,“名字”“skipConv”);lgraph = addLayers (lgraph skipConv);图绘制(lgraph)

“relu_1”層から“添加”層へのショートカット結合を作成します。層の作成時に加算層への入力数を 2 に指定しているため、層には“三机”および“in2”という名前の2つの入力があります。“relu_3”層は既に“三机”入力に結合されています。“relu_1”層を“skipConv”層に結合し,“skipConv”層を“添加”層の“in2”入力に結合します。ここで加算層は“relu_3”層と“skipConv”層の出力を合計します。層が正しく結合されていることを確認するには,層グラフをプロットします。

lgraph = connectLayers (lgraph,“relu_1”“skipConv”);lgraph = connectLayers (lgraph,“skipConv”“添加/ in2”);图绘制(lgraph);

数字の28 x 28のグレースケールイメージで構成される学習データと検証データを読み込みます。

[XTrain, YTrain] = digitTrain4DArrayData;[XValidation, YValidation] = digitTest4DArrayData;

学習オプションを指定してネットワークに学習させます。trainNetworkは,ValidationFrequency回の反復ごとに検証データを使用してネットワークを検証します。

选择= trainingOptions (“个”...“MaxEpochs”8...“洗牌”“every-epoch”...“ValidationData”{XValidation, YValidation},...“ValidationFrequency”30岁的...“详细”假的,...“阴谋”“训练进步”);网= trainNetwork (XTrain YTrain、lgraph选项);

学習済みネットワークのプロパティを表示します。ネットワークはDAGNetworkオブジェクトになります。

net = DAGNetwork with properties: Layers: [16×1 net.cnn.layer. layer] Connections: [16×2 table] InputNames: {'input'} OutputNames: {'classOutput'}

検証イメージを分類し,精度を計算します。ネットワークは非常に正確になっています。

YPredicted =分类(净,XValidation);精度=平均值(YPredicted == YValidation)
精度= 0.9930
R2016aで導入