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-Objekts | Importieren anderer Datastore-Objekte (nicht für ImageDatastore empfohlen) |
|---|---|
Wählen Sie Import Data > Import Image Classification Data aus.
| Wählen Sie Import Data > Import Custom Data aus.
|
Importieren von Daten nach Aufgabe
| Aufgabe | Datentyp | Daten-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. |
Erstellen Sie beispielsweise einen Bild-Datastore mit Zifferndaten. dataFolder = fullfile(toolboxdir('nnet'),'nndemos', ... 'nndatasets','DigitDataset'); imds = imageDatastore(dataFolder, ... 'IncludeSubfolders',true, ... 'LabelSource','foldernames'); | ||
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 | Kombinieren Sie beispielsweise 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 | 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 | 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 | 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 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, Erstellen Sie beispielsweise mithilfe von Image Processing Toolbox™ ein 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 | 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.

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.

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.

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.

Siehe auch
Deep Network Designer | TransformedDatastore | CombinedDatastore | imageDatastore | augmentedImageDatastore | splitEachLabel