Hauptinhalt

Importieren von Daten in den Deep Network Designer

Hinweis

Die Verwendung von Deep Network Designer zum Import von Daten und Training eines Netzes wird nicht empfohlen.

Verwenden Sie die Legacy-Syntax deepNetworkDesigner("-v1"), um Trainings- und Validierungsdaten in Deep Network Designer zu importieren und zu visualisieren.

Importieren von Daten

In Deep Network Designer können Sie Bildklassifizierungsdaten aus einem Bild-Datastore oder Ordner mit Unterordnern, die Bilder jeder Klasse enthalten, importieren. Wählen Sie eine passende Importmethode für den Typ des von Ihnen verwendeten Datastores aus.

Importieren eines ImageDatastore-ObjektsImportieren anderer Datastore-Objekte (nicht für ImageDatastore empfohlen)

Wählen Sie Import Data > Import Image Classification Data aus.

Import Image Classification Data dialog. Using this dialog, you can select the source of image classification data, specify augmentation options, and split validation data.

Wählen Sie Import Data > Import Custom Data aus.

Import Custom Data dialog. Using this dialog, you can import training and validation data sets.

Importieren von Daten nach Aufgabe

AufgabeDatentypDaten-Importmethode
Bildklassifizierung

Ordner mit Unterordnern, die Bilder jeder Klasse enthalten. Die Klassen-Kennzeichnungen werden den Namen der Unterordnern entnommen.

Wählen Sie Import Data > Import Image Classification Data aus.

ImageDatastore

Erstellen Sie beispielsweise einen Bild-Datastore mit Zifferndaten.

dataFolder = fullfile(toolboxdir('nnet'),'nndemos', ... 
'nndatasets','DigitDataset');

imds = imageDatastore(dataFolder, ...
    'IncludeSubfolders',true, ...
    'LabelSource','foldernames');

augmentedImageDatastore

Erstellen Sie beispielsweise einen Datastore für erweiterte Bilder mit Zifferndaten.

dataFolder = fullfile(toolboxdir('nnet'),'nndemos', ... 
'nndatasets','DigitDataset');

imds = imageDatastore(dataFolder, ...
    'IncludeSubfolders',true, ...
    'LabelSource','foldernames');

imageAugmenter = imageDataAugmenter( ...
    'RandRotation',[1,2]);
augimds = augmentedImageDatastore([28 28],imds, ...
'DataAugmentation',imageAugmenter);

augimds = shuffle(augimds);

Wählen Sie Import Data > Import Custom Data aus.

Semantische Segmentierung

CombinedDatastore

Kombinieren Sie beispielsweise ImageDatastore mit einem PixelLabelDatastore (Computer Vision Toolbox).

dataFolder  = fullfile(toolboxdir('vision'), ...
'visiondata','triangleImages');

imageDir = fullfile(dataFolder,'trainingImages');
labelDir = fullfile(dataFolder,'trainingLabels');

imds = imageDatastore(imageDir);
classNames = ["triangle","background"];
labelIDs   = [255 0];

pxds = pixelLabelDatastore(labelDir,classNames,labelIDs);
cds = combine(imds,pxds);

Wählen Sie Import Data > Import Custom Data aus.

Bild-Bild-Regression

CombinedDatastore

Kombinieren Sie beispielsweise verrauschte Eingangsbilder und saubere Ausgangsbilder, um für Bild-Bild-Regression geeignete Daten zu erzeugen.

dataFolder = fullfile(toolboxdir('nnet'),'nndemos', ... 
'nndatasets','DigitDataset');

imds = imageDatastore(dataFolder, ...
    'IncludeSubfolders',true, ....
    'LabelSource','foldernames');

imds = transform(imds,@(x) rescale(x));
imdsNoise = transform(imds,@(x) {imnoise(x,'Gaussian',0.2)});

cds = combine(imdsNoise,imds);
cds = shuffle(cds);

Wählen Sie Import Data > Import Custom Data aus.

Regression

CombinedDatastore

Kombinieren Sie Array-Datastore-Objekte, um für das Training von Regressionsnetzen geeignete Daten zu erzeugen.

[XTrain,~,YTrain] = digitTrain4DArrayData;

ads = arrayDatastore(XTrain,'IterationDimension',4, ...
 'OutputType','cell');
adsAngles = arrayDatastore(YTrain,'OutputType','cell');

cds = combine(ads,adsAngles);

Wählen Sie Import Data > Import Custom Data aus.

Sequenzen und Zeitreihen

CombinedDatastore

Um die Sequenzdaten des Prädiktoren-Datastore einem Deep-Learning-Netz zu übergeben, müssen die Mini-Batches der Sequenzen identische Längen aufweisen. Mithilfe der padsequences-Funktion können Sie Sequenzen auf eine bestimmte Länge auffüllen oder kürzen.

Sie können die Sequenzen beispielsweise auf die Länge der längsten Sequenz auffüllen.

[XTrain,YTrain] = japaneseVowelsTrainData;

XTrain = padsequences(XTrain,2);

adsXTrain = arrayDatastore(XTrain,'IterationDimension',3);
adsYTrain = arrayDatastore(YTrain);

cdsTrain = combine(adsXTrain,adsYTrain);

Um das Ausmaß der Auffüllung zu reduzieren, können Sie einen Transform-Datastore und eine Hilfsfunktion verwenden. Sie können die Sequenzen beispielsweise auffüllen, sodass alle Sequenzen in einem Mini-Batch dieselbe Länge wie die längste Sequenz im Mini-Batch aufweisen. Zudem müssen Sie in den Trainingsoptionen dieselbe Mini-Batch-Größe verwenden.

[XTrain,TTrain] = japaneseVowelsTrainData; 

miniBatchSize = 27;
adsXTrain = arrayDatastore(XTrain,'OutputType',"same",'ReadSize',miniBatchSize);
adsTTrain = arrayDatastore(TTrain,'ReadSize',miniBatchSize);

tdsXTrain = transform(adsXTrain,@padToLongest);
cdsTrain = combine(tdsXTrain,adsTTrain);
function data = padToLongest(data)
sequence = padsequences(data,2,Direction="left");
for n = 1:numel(data)
    data{n} = sequence(:,:,n);
end
end

Zudem können Sie das Ausmaß der Auffüllung reduzieren, indem Sie Ihre Daten aufsteigend nach Länge sortieren und die Richtung der Auffüllung festlegen. Weitere Informationen zum Auffüllen von Sequenzdaten finden Sie unter Sequence Padding and Truncation.

Sie können Sequenzdaten auch mithilfe eines benutzerdefinierten Datastore-Objekts importieren. Ein Beispiel zur Erstellung eines benutzerdefinierten Sequenz-Datastores finden Sie unter Train Network Using Custom Mini-Batch Datastore for Sequence Data.

Wählen Sie Import Data > Import Custom Data aus.

Weitere erweiterte Workflows (wie numerische Eingabe von Merkmalen, Out-of-Memory-Daten, Bildverarbeitung und Ton- und Sprachverarbeitung)

Datastore

Verwenden Sie für andere erweiterte Workflows ein geeignetes Datastore-Objekt. Hierzu zählen beispielsweise benutzerdefinierte Datastores, randomPatchExtractionDatastore (Image Processing Toolbox), denoisingImageDatastore (Image Processing Toolbox) oder audioDatastore (Audio Toolbox). Weitere Informationen finden Sie unter Datastores for Deep Learning.

Erstellen Sie beispielsweise mithilfe von Image Processing Toolbox™ ein denoisingImageDatastore-Objekt.

dataFolder = fullfile(toolboxdir('images'),'imdata');

imds = imageDatastore(dataFolder,'FileExtensions',{'.jpg'});

dnds = denoisingImageDatastore(imds,...
    'PatchesPerImage',512,...
    'PatchSize',50,...
    'GaussianNoiseLevel',[0.01 0.1]);

Bei Tabellen-Arraydaten müssen Sie Ihre Daten in einen geeigneten Datastore konvertieren, um ein Training mit Deep Network Designer durchzuführen. Beginnen Sie beispielsweise, indem Sie Ihre Tabelle in Arrays mit den Prädiktoren und Antworten konvertieren. Konvertieren Sie die Arrays daraufhin in arrayDatastore-Objekte. Kombinieren Sie schließlich die Prädiktor- und Antwort-Array-Datastores zu einem CombinedDatastore-Objekt. Den kombinierten Datastore können Sie daraufhin zum Training in Deep Network Designer verwenden. Weitere Informationen zu geeigneten Datastores finden Sie unter Datastores for Deep Learning.

Wählen Sie Import Data > Import Custom Data aus.

Bild-Augmentation

Für Bildklassifizierungsprobleme verfügt Deep Network Designer über einfache Augmentationsoptionen, die auf die Trainingsdaten angewendet werden können. Wählen Sie Import Data > Import Image Classification Data aus, um das Dialogfeld „Import Image Classification Data“ (Bildklassifizierungsdaten importieren) zu öffnen. Sie können Optionen auswählen, um eine zufällige Kombination aus Reflektions-, Rotations-, Neuskalierungs- und Verschiebungsoperationen auf die Trainingsdaten anzuwenden.

Import Image Classification Data dialog. Using this dialog, you can select the source of image classification data, specify augmentation options, and split validation data.

Um allgemeinere und komplexere Bild-Vorverarbeitungsoperationen als die von Deep Network Designer angebotenen Operationen durchzuführen, verwenden Sie Objekte TransformedDatastore und CombinedDatastore. Um CombinedDatastore- und TransformedDatastore-Objekte zu importieren, wählen Sie Import Data > Import Custom Data aus.

Import Custom Data dialog. Using this dialog, you can import training and validation data sets.

Weitere Informationen zur Bild-Augmentation finden Sie unter Preprocess Images for Deep Learning.

Validierungsdaten

Sie können Validierungsdaten zur Verwendung während des Trainings in Deep Network Designer importieren. Sie können Validierungsmetriken wie Verlust und Genauigkeit überwachen, um zu beurteilen, ob das Netz eine Überanpassung oder Unteranpassung vornimmt, und die Trainingsoptionen nach Bedarf zu justieren. Liegt der Validierungsverlust beispielsweise erheblich über dem Trainingsverlust, kann eine Überanpassung im Netz vorliegen.

Loss plot showing the training and validation loss versus iteration number. The validation loss is much higher than the training loss.

In Deep Network Designer können Sie Validierungsdaten aus folgenden Quellen importieren:

  • Aus einem Datastore im Workspace.

  • Aus einem Ordner, der Unterordner mit Bildern für jede Klasse enthält (nur Bildklassifizierungsdaten).

  • Durch Abtrennung eines Teils der Trainingsdaten zur Verwendung als Validierungsdaten (nur Bildklassifizierungsdaten). Die Daten werden einmal vor dem Training in Validierungs- und Trainingsdatensätze aufgeteilt. Diese Methode wird als Holdout-Validierung bezeichnet.

Abtrennen der Validierungsdaten von den Trainingsdaten

Beim Abtrennen der Holdout-Validierungsdaten von den Trainingsdaten trennt Deep Network Designer einen bestimmten Prozentsatz der Trainingsdaten für jede Klasse ab. Gehen wir beispielsweise davon aus, dass Sie einen Datensatz mit den zwei Klassen „Cat“ und „Dog“ haben und festlegen, dass 30 % der Trainingsdaten zur Validierung verwendet werden sollen. Deep Network Designer verwendet die letzten 30 % der Bilder mit der Kennzeichnung „Cat“ und die letzten 30 % mit der Kennzeichnung „Dog“ als Validierungsdatensatz.

Statt die letzten 30 % der Trainingsdaten als Validierungsdaten zu verwenden, können Sie alternativ die Beobachtungen zufällig den Trainings- und Validierungsdatensätzen zuweisen, indem Sie das Kontrollkästchen Randomize im Dialogfeld „Import Image Data“ (Bilddaten importieren) aktivieren. Die Bilder zu randomisieren, kann die Genauigkeit von Netzen, die mit in nicht zufälliger Reihenfolge gespeicherten Daten trainiert wurden, verbessern. Der Zifferndatensatz besteht beispielsweise aus 10.000 synthetischen Graustufenbildern handgeschriebener Ziffern. Dieser Datensatz ist so geordnet, dass Bilder mit derselben handschriftlichen Schreibweise in jeder Klasse nebeneinander erscheinen. Im Folgenden ein Beispiel hierfür.

Six images of a handwritten number three. The first three images share the same handwriting and the latter three images share the same handwriting.

Siehe auch

| | | | |

Themen