Main Content

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 ImageDatastoreImportar cualquier otro objeto de almacén de datos (no recomendado para ImageDatastore)

Seleccione Import Data > Import Image Classification Data.

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

Seleccione Import Data > Import Custom Data.

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

Importar datos por tarea

TareaTipo de datosMé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.

ImageDatastore

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');

AugmentedImageDatastore

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

CombinedDatastore

Por ejemplo, combine un objeto ImageDatastore y un objeto 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);

Seleccione Import Data > Import Custom Data.

Regresión imagen a imagen

CombinedDatastore

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

CombinedDatastore

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

CombinedDatastore

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 padsequences para rellenar o truncar secuencias y que tengan una longitud específica.

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, randomPatchExtractionDatastore (Image Processing Toolbox), denoisingImageDatastore (Image Processing Toolbox) o audioDatastore (Audio Toolbox). Para obtener más información, consulte Datastores for Deep Learning.

Por ejemplo, cree un objeto denoisingImageDatastore con Image Processing Toolbox™.

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 arrayDatastore. Por último, combine los almacenes de datos de arreglos de predictores y respuestas en un objeto CombinedDatastore. A continuación, puede usar el almacén de datos combinado para entrenar en Deep Network Designer. Para obtener más información sobre los almacenes de datos adecuados, consulte Datastores for Deep Learning.

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.

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

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.

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

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.

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

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.

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

Consulte también

| | | | |

Temas relacionados