Hauptinhalt

SeriesNetwork

(Nicht empfohlen) Seriennetz für Deep Learning

SeriesNetwork-Objekte werden nicht empfohlen. Verwenden Sie stattdessen dlnetwork-Objekte. Weitere Informationen finden Sie unter Versionsverlauf.

Beschreibung

Ein Seriennetz ist ein neuronales Netz für Deep Learning, bei dem die Schichten nacheinander angeordnet sind. Es weist eine Eingangsschicht und eine Ausgangsschicht auf.

Erstellung

Es gibt mehre Methoden zur Erstellung eines SeriesNetwork-Objekts:

Hinweis

Weitere Informationen über vortrainierte Netze, wie googlenet und resnet50, finden Sie unter Pretrained Deep Neural Networks.

Eigenschaften

alle erweitern

Diese Eigenschaft ist schreibgeschützt.

Netzschichten, angegeben als Layer-Array.

Diese Eigenschaft ist schreibgeschützt.

Namen der Eingangsschichten, angegeben als Zellen-Array aus Zeichenvektoren.

Datentypen: cell

Diese Eigenschaft ist schreibgeschützt.

Namen der Ausgangsschichten, angegeben als Zellen-Array aus Zeichenvektoren.

Datentypen: cell

Objektfunktionen

activations(Not recommended) Compute deep learning network layer activations
classify(Not recommended) Classify data using trained deep learning neural network
predict(Not recommended) Predict responses using trained deep learning neural network
predictAndUpdateState(Not recommended) Predict responses using a trained recurrent neural network and update the network state
classifyAndUpdateState(Not recommended) Classify data using a trained recurrent neural network and update the network state
resetStateReset state parameters of neural network
plotPlot neural network architecture

Beispiele

alle reduzieren

Trainieren Sie ein Netz für die Bildklassifizierung.

Laden Sie die Daten als ImageDatastore-Objekt.

digitDatasetPath = fullfile(matlabroot,'toolbox','nnet', ...
    'nndemos','nndatasets','DigitDataset');
imds = imageDatastore(digitDatasetPath, ...
    'IncludeSubfolders',true, ...
    'LabelSource','foldernames');

Der Datastore umfasst 10.000 synthetische Bilder der Ziffern 0 bis 9. Die Bilder werden generiert, indem zufällige Transformationen auf Bilder von Ziffern mit verschiedenen Schriftarten angewendet werden. Jedes Bild ist 28 mal 28 Pixel groß. Der Datastore enthält für jede Kategorie dieselbe Anzahl Bilder.

Zeigen Sie einige der Bilder im Datastore an.

figure
numImages = 10000;
perm = randperm(numImages,20);
for i = 1:20
    subplot(4,5,i);
    imshow(imds.Files{perm(i)});
    drawnow;
end

Figure contains 20 axes objects. Axes object 1 contains an object of type image. Axes object 2 contains an object of type image. Axes object 3 contains an object of type image. Axes object 4 contains an object of type image. Axes object 5 contains an object of type image. Axes object 6 contains an object of type image. Axes object 7 contains an object of type image. Axes object 8 contains an object of type image. Axes object 9 contains an object of type image. Axes object 10 contains an object of type image. Axes object 11 contains an object of type image. Axes object 12 contains an object of type image. Axes object 13 contains an object of type image. Axes object 14 contains an object of type image. Axes object 15 contains an object of type image. Axes object 16 contains an object of type image. Axes object 17 contains an object of type image. Axes object 18 contains an object of type image. Axes object 19 contains an object of type image. Axes object 20 contains an object of type image.

Teilen Sie den Datastore so auf, dass jede Kategorie im Trainingssatz 750 Bilder umfasst und der Testsatz die restlichen Bilder jeder Kennzeichnung umfasst.

numTrainingFiles = 750;
[imdsTrain,imdsTest] = splitEachLabel(imds,numTrainingFiles, ...
    'randomize');

splitEachLabel teilt die Bilddateien in digitData auf zwei neue Datastores imdsTrain und imdsTest auf.

Definieren Sie die Architektur des Convolutional Neural Network.

layers = [ ...
    imageInputLayer([28 28 1])
    convolution2dLayer(5,20)
    reluLayer
    maxPooling2dLayer(2,'Stride',2)
    fullyConnectedLayer(10)
    softmaxLayer
    classificationLayer];

Setzen Sie die Optionen auf die Standardeinstellungen für den stochastischen Gradientenabstieg mit Momentum. Setzen Sie die maximale Anzahl Epochen auf 20 und starten Sie das Training mit einer anfänglichen Lerngeschwindigkeit von 0,0001.

options = trainingOptions('sgdm', ...
    'MaxEpochs',20,...
    'InitialLearnRate',1e-4, ...
    'Verbose',false, ...
    'Plots','training-progress');

Trainieren Sie das Netz.

net = trainNetwork(imdsTrain,layers,options);

Figure Training Progress (15-Aug-2023 20:45:20) contains 2 axes objects and another object of type uigridlayout. Axes object 1 with xlabel Iteration, ylabel Loss contains 6 objects of type patch, text, line. Axes object 2 with xlabel Iteration, ylabel Accuracy (%) contains 6 objects of type patch, text, line.

Führen Sie das trainierte Netz mit dem Testset aus, das nicht zum Training des Netzes verwendet wurde, und sagen Sie die Bildkennzeichnungen (Ziffern) vorher.

YPred = classify(net,imdsTest);
YTest = imdsTest.Labels;

Berechnen Sie die Genauigkeit. Die Genauigkeit ist das Verhältnis der Anzahl korrekter Kennzeichnungen in den Testdaten, die den Klassifizierungen von classify entsprechen, zur Anzahl Bilder in den Testdaten.

accuracy = sum(YPred == YTest)/numel(YTest)
accuracy = 0.9416

Erweiterte Fähigkeiten

alle erweitern

Versionsverlauf

Eingeführt in R2016a

alle reduzieren