Importar datos en Deep Network Designer
Nota
No se recomienda usar Deep Network Designer para importar datos y entrenar una red.
Para importar y visualizar datos de entrenamiento y validación en Deep Network Designer, use la sintaxis heredada deepNetworkDesigner("-v1")
.
Importar datos
En Deep Network Designer, puede importar datos de clasificación de imágenes desde un almacén de datos de imágenes o desde una carpeta que contenga subcarpetas de imágenes de cada clase. Seleccione un método de importación en función del tipo de almacén de datos que esté usando.
Importar un objeto ImageDatastore | Importar cualquier otro objeto de almacén de datos (no recomendado para ImageDatastore ) |
---|---|
Seleccione Import Data > Import Image Classification Data.
| Seleccione Import Data > Import Custom Data.
|
Importar datos por tarea
Tarea | Tipo de datos | Método de importación de datos |
---|---|---|
Clasificación de imágenes | Carpeta con subcarpetas que contienen imágenes para cada clase. Las etiquetas de clase se extraen de los nombres de las subcarpetas. | Seleccione Import Data > Import Image Classification Data. |
Por ejemplo, cree un almacén de datos de imágenes que contenga datos de dígitos. dataFolder = fullfile(toolboxdir('nnet'),'nndemos', ... 'nndatasets','DigitDataset'); imds = imageDatastore(dataFolder, ... 'IncludeSubfolders',true, ... 'LabelSource','foldernames'); | ||
Por ejemplo, cree un almacén de datos de imágenes aumentado que contenga datos de dígitos. 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); | Seleccione Import Data > Import Custom Data. | |
Segmentación semántica | Por ejemplo, combine un objeto 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); | Seleccione Import Data > Import Custom Data. |
Regresión imagen a imagen | Por ejemplo, combine imágenes de entrada con ruido e imágenes de salida nítidas para crear datos adecuados para la regresión entre imágenes. 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); | Seleccione Import Data > Import Custom Data. |
Regresión | Cree datos adecuados para entrenar redes de regresión combinando objetos de almacén de datos de arreglos. [XTrain,~,YTrain] = digitTrain4DArrayData; ads = arrayDatastore(XTrain,'IterationDimension',4, ... 'OutputType','cell'); adsAngles = arrayDatastore(YTrain,'OutputType','cell'); cds = combine(ads,adsAngles); | Seleccione Import Data > Import Custom Data. |
Secuencias y series de tiempo | Para introducir los datos de secuencias del almacén de datos de predictores en una red de deep learning, los minilotes de las secuencias deben tener la misma longitud. Puede usar la función Por ejemplo, rellene las secuencias para que todas tengan la misma longitud que la secuencia más larga. [XTrain,YTrain] = japaneseVowelsTrainData;
XTrain = padsequences(XTrain,2);
adsXTrain = arrayDatastore(XTrain,'IterationDimension',3);
adsYTrain = arrayDatastore(YTrain);
cdsTrain = combine(adsXTrain,adsYTrain); Para reducir la cantidad de relleno, puede usar un almacén de datos de transformadas y una función de ayuda. Por ejemplo, rellene las secuencias de modo que todas las de un minilote tengan la misma longitud que la secuencia más larga del minilote. También debe usar el mismo tamaño de minilote en las opciones de entrenamiento. [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 También puede reducir la cantidad de relleno ordenando los datos del más corto al más largo y reducir el impacto del relleno especificando su dirección. Para más información sobre el relleno de datos de secuencias, consulte Relleno y truncado de secuencias. También puede importar datos de secuencia usando un objeto de almacén de datos personalizado. Para ver un ejemplo de cómo crear un almacén de datos de secuencias personalizado, consulte Train Network Using Custom Mini-Batch Datastore for Sequence Data. | Seleccione Import Data > Import Custom Data. |
Otros flujos de trabajo ampliados (como la entrada de características numéricas, los datos fuera de memoria y el procesamiento de imágenes, audio y voz) | Almacén de datos Para seleccionar otros flujos de trabajo ampliados, utilice el objeto de almacén de datos correspondiente. Por ejemplo, un almacén de datos personalizado, Por ejemplo, cree un objeto dataFolder = fullfile(toolboxdir('images'),'imdata'); imds = imageDatastore(dataFolder,'FileExtensions',{'.jpg'}); dnds = denoisingImageDatastore(imds,... 'PatchesPerImage',512,... 'PatchSize',50,... 'GaussianNoiseLevel',[0.01 0.1]); En el caso de los datos de arreglos de tablas, debe convertir sus datos en un almacén de datos adecuado para entrenarlos con Deep Network Designer. Por ejemplo, empiece por convertir su tabla en arreglos que contengan los predictores y las respuestas. A continuación, convierta los arreglos en objetos | Seleccione Import Data > Import Custom Data. |
Aumento de imágenes
Para solucionar problemas de clasificación de imágenes, Deep Network Designer ofrece opciones sencillas de aumento para aplicar a los datos de entrenamiento. Abra el cuadro de diálogo Import Image Classification Data seleccionando Import Data > Import Image Classification Data. Puede seleccionar opciones para aplicar una combinación aleatoria de operaciones de reflexión, rotación, reescalado y traslación a los datos de entrenamiento.
Para realizar operaciones de preprocesamiento de imágenes más generales y complejas que las que ofrece Deep Network Designer, use los objetos TransformedDatastore
y CombinedDatastore
. Para importar objetos CombinedDatastore
y TransformedDatastore
, seleccione Import Data > Import Custom Data.
Para obtener más información sobre el aumento de imágenes, consulte Preprocesar imágenes para deep learning.
Datos de validación
En Deep Network Designer, puede importar datos de validación para usarlos durante el entrenamiento. Puede monitorizar las métricas de validación, como la pérdida y la precisión, para evaluar si la red se está sobreajustando o subajustando y corregir las opciones de entrenamiento según sea necesario. Por ejemplo, si la pérdida de validación es mucho mayor que la pérdida de entrenamiento, la red podría estar sobreajustándose.
En Deep Network Designer, puede importar datos de validación de las siguientes formas:
Desde un almacén de datos del área de trabajo.
Desde una carpeta que contenga subcarpetas de imágenes para cada clase (solo datos de clasificación de imágenes).
Dividiendo una parte de los datos de entrenamiento para usarlos como datos de validación (solo datos de clasificación de imágenes). Los datos se dividen en conjuntos de validación y de entrenamiento una sola vez antes del entrenamiento. Este método se conoce como validación por retención.
Dividir datos de validación de datos de entrenamiento
Al dividir los datos de validación por retención de los datos de entrenamiento, Deep Network Designer separa un porcentaje de los datos de entrenamiento de cada clase. Por ejemplo, supongamos que tiene un conjunto de datos con dos clases, gato y perro, y decide usar el 30% de los datos de entrenamiento para la validación. Deep Network Designer usa el último 30% de las imágenes con la etiqueta "cat" y el último 30% con la etiqueta "dog" como conjunto de validación.
En lugar de usar el último 30% de los datos de entrenamiento como datos de validación, puede optar por asignar de forma aleatoria las observaciones a los conjuntos de entrenamiento y validación seleccionando la casilla de verificación Randomize en el cuadro de diálogo Import Image Data. Aleatorizar las imágenes puede mejorar la precisión de las redes entrenadas con datos almacenados en un orden no aleatorio. Por ejemplo, el conjunto de datos de dígitos está compuesto de 10.000 imágenes sintéticas a escala de grises de dígitos manuscritos. Este conjunto de datos tiene un orden subyacente en el que las imágenes con el mismo estilo de escritura aparecen unas junto a otras dentro de cada clase. A continuación, se muestra un ejemplo de visualización.
Consulte también
Deep Network Designer | TransformedDatastore
| CombinedDatastore
| imageDatastore
| augmentedImageDatastore
| splitEachLabel