Main Content

Diese Seite ist für die vorige Version. Die entsprechende englische Seite wurde in der aktuellen Version entfernt.

Erstellen eines einfachen Netzes zur Sequenzklassifizierung mithilfe von Deep Network Designer

Dieses Beispiel veranschaulicht, wie Sie ein einfaches Long-Short-Term-Memory(LSTM)-Klassifizierungsnetz (Klassifizierungsnetz mit langem Kurzzeitgedächtnis) mithilfe von Deep Network Designer erstellen können.

Zum Trainieren eines tiefen neuronalen Netzes für die Klassifizierung von Sequenzdaten können Sie ein LSTM-Netz verwenden. Ein LSTM-Netz ist eine Art rekurrentes neuronales Netz (RNN-Netz), das langfristige Abhängigkeiten zwischen Zeitschritten von Sequenzdaten erlernt.

Das Beispiel veranschaulicht, wie Sie vorgehen müssen:

  • Laden von Sequenzdaten.

  • Konstruieren der Netzarchitektur.

  • Angeben der Trainingsoptionen.

  • Trainieren des Netzes.

  • Vorhersage der Bezeichnungen neuer Daten und Berechnung der Klassifizierungsgenauigkeit.

Laden der Daten

Laden Sie den Datensatz „Japanese Vowels“ wie in [1] und [2] beschrieben. Die Prädiktoren sind Zellen-Arrays, die Sequenzen unterschiedlicher Längen mit einer Merkmalsdimension von 12 enthalten. Die Bezeichnungen sind kategorische Vektoren mit den Bezeichnungen 1, 2...9.

load JapaneseVowelsTrainData
load JapaneseVowelsTestData

Sehen Sie sich die Größen der ersten Trainingssequenzen an. Die Sequenzen sind Matrizen mit 12 Zeilen (eine Zeile für jedes Merkmal) und einer unterschiedlichen Anzahl von Spalten (eine Spalte für jeden Zeitschritt).

XTrain(1:5)
ans=5×1 cell array
    {12×20 double}
    {12×26 double}
    {12×22 double}
    {12×20 double}
    {12×21 double}

Definieren der Netzarchitektur

Öffnen Sie Deep Network Designer.

deepNetworkDesigner

Zeigen Sie mit der Maus auf Sequence-to-Label (Zu benennende Sequenz) und klicken Sie auf Open. Dadurch wird ein vorgefertigtes Netz geöffnet, das für Sequenzklassifizierungsprobleme geeignet ist.

Deep Network Designer zeigt das vorgefertigte Netz an.

Sie können dieses Sequenznetz für den Datensatz „Japanese Vowels“ ganz einfach anpassen.

Wählen Sie sequenceInputLayer aus und vergewissern Sie sich, dass InputSize entsprechend der Merkmalsdimension auf 12 festgelegt ist.

Wählen Sie lstmLayer aus und setzen Sie NumHiddenUnits auf 100.

Wählen Sie fullyConnectedLayer aus und vergewissern Sie sich, dass OutputSize entsprechend der Anzahl der Klassen auf 9 festgelegt ist.

Überprüfen der Netzarchitektur

Zum Überprüfen der Netzarchitektur und Untersuchen weiterer Details der Schichten klicken Sie auf Analyze.

Exportieren der Netzarchitektur

Um die Netzarchitektur in den Arbeitsbereich zu exportieren, klicken Sie auf der Registerkarte Designer auf Export. Deep Network Designer speichert das Netz als Variable layers_1.

Sie können auch Code generieren, um die Netzarchitektur zu konstruieren. Wählen Sie dazu Export > Generate Network Code Without Parameters aus.

Trainieren des Netzes

Geben Sie die Trainingsoptionen an und trainieren Sie das Netz.

Da die Mini-Batches klein sind und kurze Sequenzen enthalten, ist der Prozessor für das Training besser geeignet. Legen Sie 'ExecutionEnvironment' auf 'cpu' fest. Zum Trainieren mit einer Grafikkarte, sofern verfügbar, legen Sie 'ExecutionEnvironment' auf 'auto' (Standardwert) fest.

miniBatchSize = 27;
options = trainingOptions('adam', ...
    'ExecutionEnvironment','cpu', ...
    'MaxEpochs',100, ...
    'MiniBatchSize',miniBatchSize, ...
    'ValidationData',{XValidation,TValidation}, ...
    'GradientThreshold',2, ...
    'Shuffle','every-epoch', ...
    'Verbose',false, ...
    'Plots','training-progress');

Trainieren des Netzes.

net = trainNetwork(XTrain,TTrain,layers_1,options);

Sie können dieses Netz auch mithilfe von Deep Network Designer und datastore-Objekten trainieren. Ein Beispiel, das zeigt, wie ein Netz mit einer Sequenz-zu-Sequenz-Regression in Deep Network Designer trainiert wird, finden Sie unter Build Time Series Forecasting Network Using Deep Network Designer.

Testen des Netzes

Klassifizieren Sie die Testdaten und berechnen Sie die Klassifizierungsgenauigkeit. Geben Sie für das Mini-Batch die gleiche Größe an, die auch für das Training verwendet wurde.

YPred = classify(net,XValidation,'MiniBatchSize',miniBatchSize);
acc = mean(YPred == TValidation)
acc = 0.9405

Mit den nächsten Schritten können Sie versuchen, die Genauigkeit zu verbessern, indem Sie bidirektionale LSTM-Schichten (BiLSTM-Schichten) verwenden oder ein tieferes Netz erstellen. Weitere Informationen finden Sie unter Long Short-Term Memory Neural Networks.

Ein Beispiel, das die Verwendung von faltenden Netzen für die Klassifizierung von Sequenzdaten veranschaulicht, finden Sie unter Train Speech Command Recognition Model Using Deep Learning.

Referenzen

[1] Kudo, Mineichi, Jun Toyama und Masaru Shimbo. „Multidimensional Curve Classification Using Passing-through Regions.“ Pattern Recognition Letters 20, Nr. 11–13 (November 1999): 1103–11. https://doi.org/10.1016/S0167-8655(99)00077-X.

[2] Kudo, Mineichi, Jun Toyama und Masaru Shimbo. Japanese Vowels Data Set. Bereitgestellt vom UCI Machine Learning Repository. https://archive.ics.uci.edu/ml/datasets/Japanese+Vowels

Siehe auch

| |

Verwandte Themen