trainNetwork
Entrenar redes neuronales de deep learning
Sintaxis
Descripción
Para tareas de clasificación y regresión, puede entrenar varios tipos de redes neuronales utilizando la función trainNetwork
.
Por ejemplo, puede entrenar:
una red neuronal convolucional (ConvNet, CNN) para datos de imágenes
una red neuronal recurrente (RNN) como una memoria de corto-largo plazo (LSTM) o una unidad recurrente cerrada (GRU) para datos de secuencia y series de tiempo
una red de perceptrón multicapa (MLP) para datos de características numéricas
Puede entrenar tanto en una CPU como en una GPU. Para la clasificación y la regresión de imágenes, puede entrenar una sola red en paralelo utilizando varias GPU o un grupo paralelo local o remoto. Para entrenar una red en una GPU o en paralelo, es necesario utilizar Parallel Computing Toolbox™. Para utilizar una GPU para deep learning, debe también disponer de un dispositivo GPU compatible. Para obtener información sobre los dispositivos compatibles, consulte GPU Computing Requirements (Parallel Computing Toolbox). Para especificar opciones de entrenamiento, incluidas opciones para el entorno de ejecución, utilice la función trainingOptions
.
Cuando entrena una red neuronal, puede especificar los predictores y las respuestas como una sola entrada o en dos entradas independientes.
Ejemplos
Entrenar la red para clasificar imágenes
Cargue los datos como un objeto ImageDatastore
.
digitDatasetPath = fullfile(matlabroot,'toolbox','nnet', ... 'nndemos','nndatasets','DigitDataset'); imds = imageDatastore(digitDatasetPath, ... 'IncludeSubfolders',true, ... 'LabelSource','foldernames');
El almacén de datos contiene 10.000 imágenes sintéticas con dígitos del 0 al 9. Las imágenes se generan aplicando transformaciones al azar a imágenes de dígitos creadas con diferentes fuentes. Cada imagen de dígito tiene 28 por 28 píxeles. El almacén de datos contiene la misma cantidad de imágenes por categoría.
Muestre algunas de las imágenes del almacén de datos.
figure numImages = 10000; perm = randperm(numImages,20); for i = 1:20 subplot(4,5,i); imshow(imds.Files{perm(i)}); drawnow; end
Divida el almacén de datos de forma que cada categoría del conjunto de entrenamiento contenga 750 imágenes y el conjunto de prueba contenga el resto de las imágenes de cada etiqueta.
numTrainingFiles = 750;
[imdsTrain,imdsTest] = splitEachLabel(imds,numTrainingFiles,'randomize');
splitEachLabel
divide los archivos de imagen de digitData
en dos nuevos almacenes de datos, imdsTrain
y imdsTest
.
Defina la arquitectura de la red neuronal convolucional.
layers = [ ... imageInputLayer([28 28 1]) convolution2dLayer(5,20) reluLayer maxPooling2dLayer(2,'Stride',2) fullyConnectedLayer(10) softmaxLayer classificationLayer];
Establezca la configuración predeterminada de las opciones del gradiente descendente estocástico con momento. Establezca el número máximo de épocas en 20 y comience el entrenamiento con una tasa de aprendizaje inicial de 0,0001.
options = trainingOptions('sgdm', ... 'MaxEpochs',20,... 'InitialLearnRate',1e-4, ... 'Verbose',false, ... 'Plots','training-progress');
Entrene la red.
net = trainNetwork(imdsTrain,layers,options);
Ejecute la red entrenada en el conjunto de pruebas, que no se ha utilizado para entrenar la red, y prediga las etiquetas de imagen (dígitos).
YPred = classify(net,imdsTest); YTest = imdsTest.Labels;
Calcule la precisión. La precisión es la relación entre el número de etiquetas verdaderas de los datos de prueba que coinciden con las clasificaciones de classify
y el número de imágenes de los datos de prueba.
accuracy = sum(YPred == YTest)/numel(YTest)
accuracy = 0.9408
Entrenar una red con imágenes aumentadas
Entrene una red neuronal convolucional con datos de imágenes aumentadas. El aumento de datos ayuda a evitar que la red se sobreajuste y memorice los detalles exactos de las imágenes de entrenamiento.
Cargue los datos de muestra, que están formados por imágenes sintéticas de dígitos manuscritos.
[XTrain,YTrain] = digitTrain4DArrayData;
digitTrain4DArrayData
carga el conjunto de entrenamiento de dígitos como datos de un arreglo 4D. XTrain
es un arreglo de 28 por 28 por 1 por 5000, donde:
28 es la altura y la anchura de las imágenes.
1 es el número de canales.
5000 es el número de imágenes sintéticas de dígitos manuscritos.
YTrain
es un vector categórico que contiene las etiquetas para cada observación.
Reserve 1000 de las imágenes para la validación de la red.
idx = randperm(size(XTrain,4),1000); XValidation = XTrain(:,:,:,idx); XTrain(:,:,:,idx) = []; YValidation = YTrain(idx); YTrain(idx) = [];
Cree un objeto imageDataAugmenter
que especifique las opciones de preprocesamiento para el aumento de imágenes, como el cambio de tamaño, la rotación, la traslación y la reflexión. Traslade aleatoriamente las imágenes hasta tres píxeles horizontal y verticalmente, y rote las imágenes con un ángulo de hasta 20 grados.
imageAugmenter = imageDataAugmenter( ... 'RandRotation',[-20,20], ... 'RandXTranslation',[-3 3], ... 'RandYTranslation',[-3 3])
imageAugmenter = imageDataAugmenter with properties: FillValue: 0 RandXReflection: 0 RandYReflection: 0 RandRotation: [-20 20] RandScale: [1 1] RandXScale: [1 1] RandYScale: [1 1] RandXShear: [0 0] RandYShear: [0 0] RandXTranslation: [-3 3] RandYTranslation: [-3 3]
Cree un objeto augmentedImageDatastore
para utilizarlo durante el entrenamiento de la red y especifique el tamaño de salida de la imagen. Durante el entrenamiento, el almacén de datos lleva a cabo el aumento de imágenes y cambia su tamaño. El almacén de datos aumenta las imágenes sin guardar ninguna en la memoria. trainNetwork
actualiza los parámetros de la red y descarta las imágenes aumentadas.
imageSize = [28 28 1];
augimds = augmentedImageDatastore(imageSize,XTrain,YTrain,'DataAugmentation',imageAugmenter);
Especifique la arquitectura de la red neuronal convolucional.
layers = [ imageInputLayer(imageSize) convolution2dLayer(3,8,'Padding','same') batchNormalizationLayer reluLayer maxPooling2dLayer(2,'Stride',2) convolution2dLayer(3,16,'Padding','same') batchNormalizationLayer reluLayer maxPooling2dLayer(2,'Stride',2) convolution2dLayer(3,32,'Padding','same') batchNormalizationLayer reluLayer fullyConnectedLayer(10) softmaxLayer classificationLayer];
Especifique las opciones de entrenamiento para el gradiente descendente estocástico con momento.
opts = trainingOptions('sgdm', ... 'MaxEpochs',15, ... 'Shuffle','every-epoch', ... 'Plots','training-progress', ... 'Verbose',false, ... 'ValidationData',{XValidation,YValidation});
Entrene la red. Puesto que las imágenes de validación no son aumentadas, la precisión de validación es superior a la precisión de entrenamiento.
net = trainNetwork(augimds,layers,opts);
Entrenar la red para la regresión de imágenes
Cargue los datos de muestra, que están formados por imágenes sintéticas de dígitos manuscritos. La tercera salida contiene los ángulos correspondientes en grados en los que se ha rotado cada imagen.
Cargue las imágenes de entrenamiento como arreglos 4D mediante digitTrain4DArrayData
. La salida XTrain
es un arreglo de 28 por 28 por 1 por 5000, donde:
28 es la altura y la anchura de las imágenes.
1 es el número de canales.
5000 es el número de imágenes sintéticas de dígitos manuscritos.
YTrain
contiene los ángulos de rotación en grados.
[XTrain,~,YTrain] = digitTrain4DArrayData;
Muestre 20 imágenes aleatorias de entrenamiento mediante imshow
.
figure numTrainImages = numel(YTrain); idx = randperm(numTrainImages,20); for i = 1:numel(idx) subplot(4,5,i) imshow(XTrain(:,:,:,idx(i))) drawnow; end
Especifique la arquitectura de la red neuronal convolucional. Para problemas de regresión, incluya una capa de regresión al final de la red.
layers = [ ...
imageInputLayer([28 28 1])
convolution2dLayer(12,25)
reluLayer
fullyConnectedLayer(1)
regressionLayer];
Especifique las opciones de entrenamiento de la red. Establezca la tasa de aprendizaje inicial en 0.001.
options = trainingOptions('sgdm', ... 'InitialLearnRate',0.001, ... 'Verbose',false, ... 'Plots','training-progress');
Entrene la red.
net = trainNetwork(XTrain,YTrain,layers,options);
Pruebe el rendimiento de la red evaluando la precisión de predicción de los datos de prueba. Utilice predict
para predecir los ángulos de rotación de las imágenes de validación.
[XTest,~,YTest] = digitTest4DArrayData; YPred = predict(net,XTest);
Evalúe el rendimiento del modelo calculando el error cuadrático medio raíz (RMSE) del ángulo de rotación predicho y del real.
rmse = sqrt(mean((YTest - YPred).^2))
rmse = single
6.0355
Entrenar la red para clasificar secuencias
Entrene una red de LSTM de deep learning para la clasificación secuencia a etiqueta.
Cargue el conjunto de datos de las vocales japonesas tal y como se describe en [1] y [2]. XTrain
es un arreglo de celdas que contiene 270 secuencias de diferentes longitudes con 12 características que se corresponden con coeficientes cepstrales LPC. Y
es un vector categórico de las etiquetas 1,2,...,9. Las entradas de XTrain
son matrices con 12 filas (una fila por característica) y un número variable de columnas (una columna por unidad de tiempo).
[XTrain,YTrain] = japaneseVowelsTrainData;
Visualice la primera serie de tiempo en una gráfica. Cada línea se corresponde con una característica.
figure plot(XTrain{1}') title("Training Observation 1") numFeatures = size(XTrain{1},1); legend("Feature " + string(1:numFeatures),'Location','northeastoutside')
Defina la arquitectura de la red de LSTM. Especifique el tamaño de la entrada como 12 (el número de características de los datos de entrada). Especifique una capa de LSTM con 100 unidades ocultas y que genere el último elemento de la secuencia. Por último, especifique nueve clases incluyendo una capa totalmente conectada de tamaño 9, seguida de una capa softmax y una capa de clasificación.
inputSize = 12; numHiddenUnits = 100; numClasses = 9; layers = [ ... sequenceInputLayer(inputSize) lstmLayer(numHiddenUnits,'OutputMode','last') fullyConnectedLayer(numClasses) softmaxLayer classificationLayer]
layers = 5x1 Layer array with layers: 1 '' Sequence Input Sequence input with 12 dimensions 2 '' LSTM LSTM with 100 hidden units 3 '' Fully Connected 9 fully connected layer 4 '' Softmax softmax 5 '' Classification Output crossentropyex
Especifique las opciones de entrenamiento. Especifique el solver como 'adam'
y 'GradientThreshold'
como 1. Establezca el tamaño del minilote en 27 y el número máximo de épocas en 70.
Dado que los minilotes son pequeños y tienen secuencias cortas, la CPU es más adecuada para el entrenamiento. Establezca 'ExecutionEnvironment'
en 'cpu'
. Para realizar un entrenamiento en una GPU, si está disponible, establezca 'ExecutionEnvironment'
en 'auto'
(el valor por defecto).
maxEpochs = 70; miniBatchSize = 27; options = trainingOptions('adam', ... 'ExecutionEnvironment','cpu', ... 'MaxEpochs',maxEpochs, ... 'MiniBatchSize',miniBatchSize, ... 'GradientThreshold',1, ... 'Verbose',false, ... 'Plots','training-progress');
Entrene la red de LSTM con las opciones de entrenamiento especificadas.
net = trainNetwork(XTrain,YTrain,layers,options);
Cargue el conjunto de prueba y clasifique las secuencias por hablantes.
[XTest,YTest] = japaneseVowelsTestData;
Clasifique los datos de prueba. Especifique el mismo tamaño de minilote utilizado para el entrenamiento.
YPred = classify(net,XTest,'MiniBatchSize',miniBatchSize);
Calcule la precisión de clasificación de las predicciones.
acc = sum(YPred == YTest)./numel(YTest)
acc = 0.9459
Entrenar una red con características numéricas
Si tiene un conjunto de datos de características numéricas (por ejemplo, una colección de datos numéricos sin dimensiones espaciales ni temporales), puede entrenar una red de deep learning utilizando una capa de entrada de características.
Lea los datos de la caja de engranajes del archivo CSV "transmissionCasingData.csv"
.
filename = "transmissionCasingData.csv"; tbl = readtable(filename,'TextType','String');
Convierta las etiquetas para la predicción en categóricas utilizando la función convertvars
.
labelName = "GearToothCondition"; tbl = convertvars(tbl,labelName,'categorical');
Para entrenar una red utilizando características categóricas, primero debe convertir las características categóricas en numéricas. Primero, convierta los predictores categóricos en numéricos con la función convertvars
especificando un arreglo de cadena que contenga los nombres de todas las variables de entrada categórica. En este conjunto de datos, hay dos características categóricas con los nombres "SensorCondition"
y "ShaftCondition"
.
categoricalInputNames = ["SensorCondition" "ShaftCondition"]; tbl = convertvars(tbl,categoricalInputNames,'categorical');
Forme un lazo con las variables de entrada categórica. Para cada variable:
Convierta los valores categóricos en vectores codificados one-hot usando la función
onehotencode
.Añada los vectores one-hot a la tabla utilizando la función
addvars
. Especifique que los vectores se inserten después de la columna que contiene los datos categóricos correspondientes.Elimine la columna correspondiente que contiene los datos categóricos.
for i = 1:numel(categoricalInputNames) name = categoricalInputNames(i); oh = onehotencode(tbl(:,name)); tbl = addvars(tbl,oh,'After',name); tbl(:,name) = []; end
Divida los vectores en columnas independientes utilizando la función splitvars
.
tbl = splitvars(tbl);
Visualice las primeras filas de la tabla. Observe que los predictores categóricos se han dividido en varias columnas con los valores categóricos como los nombres de las variables.
head(tbl)
SigMean SigMedian SigRMS SigVar SigPeak SigPeak2Peak SigSkewness SigKurtosis SigCrestFactor SigMAD SigRangeCumSum SigCorrDimension SigApproxEntropy SigLyapExponent PeakFreq HighFreqPower EnvPower PeakSpecKurtosis No Sensor Drift Sensor Drift No Shaft Wear Shaft Wear GearToothCondition ________ _________ ______ _______ _______ ____________ ___________ ___________ ______________ _______ ______________ ________________ ________________ _______________ ________ _____________ ________ ________________ _______________ ____________ _____________ __________ __________________ -0.94876 -0.9722 1.3726 0.98387 0.81571 3.6314 -0.041525 2.2666 2.0514 0.8081 28562 1.1429 0.031581 79.931 0 6.75e-06 3.23e-07 162.13 0 1 1 0 No Tooth Fault -0.97537 -0.98958 1.3937 0.99105 0.81571 3.6314 -0.023777 2.2598 2.0203 0.81017 29418 1.1362 0.037835 70.325 0 5.08e-08 9.16e-08 226.12 0 1 1 0 No Tooth Fault 1.0502 1.0267 1.4449 0.98491 2.8157 3.6314 -0.04162 2.2658 1.9487 0.80853 31710 1.1479 0.031565 125.19 0 6.74e-06 2.85e-07 162.13 0 1 0 1 No Tooth Fault 1.0227 1.0045 1.4288 0.99553 2.8157 3.6314 -0.016356 2.2483 1.9707 0.81324 30984 1.1472 0.032088 112.5 0 4.99e-06 2.4e-07 162.13 0 1 0 1 No Tooth Fault 1.0123 1.0024 1.4202 0.99233 2.8157 3.6314 -0.014701 2.2542 1.9826 0.81156 30661 1.1469 0.03287 108.86 0 3.62e-06 2.28e-07 230.39 0 1 0 1 No Tooth Fault 1.0275 1.0102 1.4338 1.0001 2.8157 3.6314 -0.02659 2.2439 1.9638 0.81589 31102 1.0985 0.033427 64.576 0 2.55e-06 1.65e-07 230.39 0 1 0 1 No Tooth Fault 1.0464 1.0275 1.4477 1.0011 2.8157 3.6314 -0.042849 2.2455 1.9449 0.81595 31665 1.1417 0.034159 98.838 0 1.73e-06 1.55e-07 230.39 0 1 0 1 No Tooth Fault 1.0459 1.0257 1.4402 0.98047 2.8157 3.6314 -0.035405 2.2757 1.955 0.80583 31554 1.1345 0.0353 44.223 0 1.11e-06 1.39e-07 230.39 0 1 0 1 No Tooth Fault
Visualice los nombres de las clases del conjunto de datos.
classNames = categories(tbl{:,labelName})
classNames = 2x1 cell
{'No Tooth Fault'}
{'Tooth Fault' }
A continuación, divida el conjunto de datos en particiones de entrenamiento y de prueba. Reserve el 15% de los datos para las pruebas.
Determine el número de observaciones para cada partición.
numObservations = size(tbl,1); numObservationsTrain = floor(0.85*numObservations); numObservationsTest = numObservations - numObservationsTrain;
Cree un arreglo de índices aleatorios que se corresponda con las observaciones y divídalo utilizando los tamaños de partición.
idx = randperm(numObservations); idxTrain = idx(1:numObservationsTrain); idxTest = idx(numObservationsTrain+1:end);
Divida la tabla de datos en particiones de entrenamiento y de prueba utilizando los índices.
tblTrain = tbl(idxTrain,:); tblTest = tbl(idxTest,:);
Defina una red con una capa de entrada de características y especifique el número de características. Configure también la capa de entrada para normalizar los datos utilizando la normalización de puntuación Z.
numFeatures = size(tbl,2) - 1; numClasses = numel(classNames); layers = [ featureInputLayer(numFeatures,'Normalization', 'zscore') fullyConnectedLayer(50) batchNormalizationLayer reluLayer fullyConnectedLayer(numClasses) softmaxLayer classificationLayer];
Especifique las opciones de entrenamiento.
miniBatchSize = 16; options = trainingOptions('adam', ... 'MiniBatchSize',miniBatchSize, ... 'Shuffle','every-epoch', ... 'Plots','training-progress', ... 'Verbose',false);
Entrene la red con la arquitectura definida por layers
, los datos de entrenamiento y las opciones de entrenamiento.
net = trainNetwork(tblTrain,layers,options);
Prediga las etiquetas de los datos de prueba con la red entrenada y calcule la precisión. La precisión es la proporción de etiquetas que la red predice correctamente.
YPred = classify(net,tblTest,'MiniBatchSize',miniBatchSize);
YTest = tblTest{:,labelName};
accuracy = sum(YPred == YTest)/numel(YTest)
accuracy = 0.9688
Argumentos de entrada
images
— Datos de imágenes
almacén de datos | Arreglo numérico | tabla
Datos de imágenes, especificados como uno de los siguientes:
Tipo de datos | Descripción | Ejemplo de uso | |
---|---|---|---|
Almacén de datos | ImageDatastore | Almacén de datos de imágenes guardadas en disco. | Entrenar redes neuronales de clasificación de imágenes con imágenes guardadas en disco, donde las imágenes tienen el mismo tamaño. Si las imágenes tienen diferentes tamaños, use un objeto Los objetos |
AugmentedImageDatastore | Almacén de datos que aplica transformaciones geométricas afines aleatorias, incluyendo cambio de tamaño, rotación, reflexión, estiramiento y traslación. |
| |
TransformedDatastore | Almacén de datos que transforma lotes de datos leídos de un almacén de datos subyacente mediante una función de transformación personalizada. |
| |
CombinedDatastore | Almacén de datos que lee de dos o más almacenes de datos subyacentes. |
| |
PixelLabelImageDatastore (Computer Vision Toolbox) | Almacén de datos que aplica transformaciones geométricas afines idénticas a imágenes y etiquetas de píxeles correspondientes. | Entrenar redes neuronales para la segmentación semántica. | |
RandomPatchExtractionDatastore (Image Processing Toolbox) | Almacén de datos que extrae pares de zonas aleatorias de imágenes o imágenes de etiquetas de píxeles y aplica opcionalmente transformaciones geométricas afines aleatorias idénticas a los pares. | Entrenar redes neuronales para la detección de objetos. | |
DenoisingImageDatastore (Image Processing Toolbox) | Almacén de datos que aplica ruido gaussiano generado aleatoriamente. | Entrenar redes neuronales para eliminar el ruido de una imagen. | |
Almacén de datos de minilotes personalizado | Almacén de datos personalizado que devuelve minilotes de datos. | Entrenar redes neuronales usando datos en un formato no compatible con otros almacenes de datos. Para obtener más detalles, consulte Develop Custom Mini-Batch Datastore. | |
Arreglo numérico | Imágenes especificadas como arreglo numérico. Si especifica imágenes como arreglo numérico, también debe especificar el argumento responses . | Entrenar redes neuronales usando datos que quepan en la memoria y no requieran procesamiento adicional, como un aumento. | |
Tabla | Imágenes especificadas como tabla. Si especifica imágenes como tabla, también puede especificar qué columnas contienen las respuestas utilizando el argumento responses . | Entrenar redes neuronales usando datos guardados en una tabla. |
Para redes con varias entradas, el almacén de datos debe ser un objeto TransformedDatastore
o CombinedDatastore
.
Sugerencia
Para secuencias de imágenes, por ejemplo, datos de vídeo, use el argumento de entrada sequences
.
Almacén de datos
Los almacenes de datos leen minilotes de imágenes y respuestas. Los almacenes de datos son más adecuados cuando tiene datos que no caben en la memoria o cuando quiera aplicar aumentos o transformaciones a los datos.
La siguiente lista enumera almacenes de datos que son directamente compatibles con trainNetwork
para datos de imágenes.
PixelLabelImageDatastore
(Computer Vision Toolbox)RandomPatchExtractionDatastore
(Image Processing Toolbox)DenoisingImageDatastore
(Image Processing Toolbox)Almacén de datos de minilotes personalizado. Para obtener más detalles, consulte Develop Custom Mini-Batch Datastore.
Por ejemplo, puede crear un almacén de datos de imágenes utilizando la función imageDatastore
y usar los nombres de las carpetas que contienen las imágenes como etiquetas estableciendo la opción 'LabelSource'
en 'foldernames'
. Como alternativa, puede especificar las etiquetas manualmente con la propiedad Labels
del almacén de datos de imágenes.
Tenga en cuenta que los objetos ImageDatastore
permiten leer lotes de archivos de imágenes JPG o PNG mediante precarga. Si utiliza una función personalizada para leer las imágenes, los objetos ImageDatastore
no realizan la precarga.
Sugerencia
Use augmentedImageDatastore
para preprocesar eficiente de las imágenes para deep learning, incluyendo el cambio de tamaño de las imágenes.
No use la opción readFcn
de la función imageDatastore
para preprocesar o cambiar el tamaño, ya que esta opción suele ser bastante más lenta.
Puede utilizar otros almacenes de datos integrados para entrenar redes de deep learning utilizando las funciones transform
y combine
. Estas funciones pueden convertir los datos leídos de almacenes de datos al formato requerido por trainNetwork
.
Para redes con varias entradas, el almacén de datos debe ser un objeto TransformedDatastore
o CombinedDatastore
.
El formato requerido de la salida del almacén de datos depende de la arquitectura de red.
Arquitectura de red | Salida del almacén de datos | Ejemplo de salida |
---|---|---|
Capa de entrada única | Tabla o arreglo de celdas con dos columnas. La primera y la segunda columna especifican los predictores y la respuesta, respectivamente. Los elementos de la tabla deben ser escalares, vectores fila o arreglos de celdas de 1 por 1 que contengan un arreglo numérico. Los almacenes de datos de minilotes personalizados deben producir tablas como salida. | Tabla para red con una entrada y una salida: data = read(ds) data = 4×2 table Predictors Response __________________ ________ {224×224×3 double} 2 {224×224×3 double} 7 {224×224×3 double} 9 {224×224×3 double} 9 |
Arreglo de celdas para red con una entrada y una salida: data = read(ds) data = 4×2 cell array {224×224×3 double} {[2]} {224×224×3 double} {[7]} {224×224×3 double} {[9]} {224×224×3 double} {[9]} | ||
Capas de entrada múltiples | Arreglo de celdas con ( Las primeras El orden de las entradas se indica mediante la propiedad | Arreglo de celdas para red con dos entradas y una salida. data = read(ds) data = 4×3 cell array {224×224×3 double} {128×128×3 double} {[2]} {224×224×3 double} {128×128×3 double} {[2]} {224×224×3 double} {128×128×3 double} {[9]} {224×224×3 double} {128×128×3 double} {[9]} |
El formato de los predictores depende del tipo de datos.
Datos | Formato |
---|---|
Imágenes 2D | Arreglo numérico de h por w por c, donde h, w y c son la altura, la anchura y el número de canales de las imágenes, respectivamente. |
Imágenes 3D | Arreglo numérico de h por w por d por c, donde h, w, d y c son la altura, la anchura, la profundidad y el número de canales de las imágenes, respectivamente. |
Para predictores devueltos en tablas, los elementos deben contener un escalar numérico, un vector fila numérico o un arreglo de celdas de 1 por 1 con el arreglo numérico.
El formato de las respuestas depende del tipo de tarea.
Tarea | Formato de respuesta |
---|---|
Clasificación de imágenes | Escalar categórico |
Regresión de imágenes |
|
Para respuestas devueltas en tablas, los elementos deben ser un escalar categórico, un escalar numérico, un vector fila numérico o un arreglo de celdas de 1 por 1 con un arreglo numérico.
Para obtener más información, consulte Datastores for Deep Learning.
Arreglo numérico
Para datos que quepan en la memoria y no requieran procesamiento adicional, como aumento, puede especificar un conjunto de datos de imágenes como arreglo numérico. Si especifica imágenes como arreglo numérico, también debe especificar el argumento responses
.
El tamaño y la forma del arreglo numérico dependen del tipo de datos de imágenes.
Datos | Formato |
---|---|
Imágenes 2D | Arreglo numérico de h por w por c por N, en el que h, w y c son la altura, la anchura y el número de canales de las imágenes, respectivamente, y N es el número de imágenes. |
Imágenes 3D | Arreglo numérico de h por w por d por c por N, en el que h, w, d y c son la altura, la anchura, la profundidad y el número de canales de las imágenes, respectivamente, y N es el número de imágenes. |
Tabla
Como alternativa a los almacenes de datos o arreglos numéricos, también puede especificar imágenes y respuestas en una tabla. Si especifica imágenes como tabla, también puede especificar qué columnas contienen las respuestas utilizando el argumento responses
.
Cuando se especifican imágenes y respuestas en una tabla, cada fila de la tabla corresponde a una observación.
Para entradas de imagen, los predictores deben estar en la primera columna de la tabla, especificados como una de las siguientes opciones:
Ruta de archivo absoluta o relativa a una imagen, especificada como vector de caracteres.
Arreglo de celdas de 1 por 1 que contiene un arreglo numérico de h por w por c que representa una imagen 2D, donde h, w y c corresponden a la altura, la anchura y el número de canales de la imagen, respectivamente.
El formato de las respuestas depende del tipo de tarea.
Tarea | Formato de respuesta |
---|---|
Clasificación de imágenes | Escalar categórico |
Regresión de imágenes |
|
En el caso de redes neuronales con entrada de imágenes, si no especifica responses
, la función, de forma predeterminada, utilizará la primera columna tbl
para los predictores y las columnas posteriores como respuestas.
Sugerencia
Si los predictores o las respuestas contienen valores
NaN
, estos se propagan a lo largo de la red durante el entrenamiento. En esos casos, normalmente el entrenamiento no converge.Para las tareas de regresión, normalizar las respuestas suele ayudar a estabilizar y acelerar el entrenamiento de las redes neuronales para la regresión. Para obtener más información, consulte Entrenar una red neuronal convolucional para regresión.
Para introducir datos de valores complejos en una red, la opción
SplitComplexInputs
de la capa de entrada debe ser1
.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| table
Soporte de números complejos: Sí
sequences
— Secuencia o datos de series de tiempo
almacén de datos | arreglo de celdas de arreglos numéricos | Arreglo numérico
Secuencia o datos de series de tiempo, especificados como uno de los siguientes:
Tipo de datos | Descripción | Ejemplo de uso | |
---|---|---|---|
Almacén de datos | TransformedDatastore | Almacén de datos que transforma lotes de datos leídos de un almacén de datos subyacente mediante una función de transformación personalizada. |
|
CombinedDatastore | Almacén de datos que lee de dos o más almacenes de datos subyacentes. | Combinar predictores y respuestas de diferentes fuentes de datos. | |
Almacén de datos de minilotes personalizado | Almacén de datos personalizado que devuelve minilotes de datos. | Entrenar redes neuronales usando datos en un formato no compatible con otros almacenes de datos. Para obtener más detalles, consulte Develop Custom Mini-Batch Datastore. | |
Arreglo numérico o de celdas | Una única secuencia especificada como arreglo numérico o un conjunto de datos de secuencias especificado como arreglo de celdas de arreglos numéricos. Si especifica secuencias como arreglo numérico o de celdas, también debe especificar el argumento responses . | Entrenar redes neuronales usando datos que quepan en la memoria y no requieran procesamiento adicional, como transformaciones personalizadas. |
Almacén de datos
Los almacenes de datos leen minilotes de secuencias y respuestas. Los almacenes de datos son más adecuados cuando tiene datos que no caben en la memoria o cuando quiera aplicar transformaciones a los datos.
La siguiente lista enumera almacenes de datos que son directamente compatibles con trainNetwork
para datos secuenciales.
Almacén de datos de minilotes personalizado. Para obtener más detalles, consulte Develop Custom Mini-Batch Datastore.
Puede utilizar otros almacenes de datos integrados para entrenar redes de deep learning utilizando las funciones transform
y combine
. Estas funciones pueden convertir los datos leídos de almacenes de datos al formato de tabla o arreglo de celdas requerido por trainNetwork
. Por ejemplo, puede transformar y combinar datos leídos de arreglos en memoria y archivos CVS mediante objetos ArrayDatastore
y TabularTextDatastore
, respectivamente.
El almacén de datos debe devolver datos en una tabla o arreglo de celdas. Los almacenes de datos de minilotes personalizados deben producir tablas como salida.
Salida del almacén de datos | Ejemplo de salida |
---|---|
Tabla | data = read(ds) data = 4×2 table Predictors Response __________________ ________ {12×50 double} 2 {12×50 double} 7 {12×50 double} 9 {12×50 double} 9 |
Arreglo de celdas | data = read(ds) data = 4×2 cell array {12×50 double} {[2]} {12×50 double} {[7]} {12×50 double} {[9]} {12×50 double} {[9]} |
El formato de los predictores depende del tipo de datos.
Datos | Formato de los predictores |
---|---|
Secuencia de vector | Matriz de c por s, donde c es el número de características de la secuencia y s es la longitud de la secuencia. |
Secuencia de imágenes 1D | Arreglo de h por c por s, donde h y c corresponden a la altura y el número de canales de la imagen, respectivamente, y s es la longitud de la secuencia. Cada secuencia del minilote debe tener la misma longitud de secuencia. |
Secuencia de imágenes 2D | Arreglo de h por w por c por s, donde h, w y c corresponden a la altura, la anchura y el número de canales de la imagen, respectivamente, y s es la longitud de la secuencia. Cada secuencia del minilote debe tener la misma longitud de secuencia. |
Secuencia de imágenes 3D | Arreglo de h por w por d por c por s, donde h, w, d y c corresponden a la altura, la anchura, la profundidad y el número de canales de la imagen, respectivamente, y s es la longitud de la secuencia. Cada secuencia del minilote debe tener la misma longitud de secuencia. |
Para predictores devueltos en tablas, los elementos deben contener un escalar numérico, un vector fila numérico o un arreglo de celdas de 1 por 1 con un arreglo numérico.
El formato de las respuestas depende del tipo de tarea.
Tarea | Formato de las respuestas |
---|---|
Clasificación secuencia a etiqueta | Escalar categórico |
Regresión de secuencia a uno | Escalar |
Regresión de secuencia a vector | Vector fila numérico |
Clasificación secuencia a secuencia |
Cada secuencia del minilote debe tener la misma longitud de secuencia. |
Regresión secuencia a secuencia |
Cada secuencia del minilote debe tener la misma longitud de secuencia. |
Para respuestas devueltas en tablas, los elementos deben ser un escalar categórico, un escalar numérico, un vector fila numérico o un arreglo de celdas de 1 por 1 con un arreglo numérico.
Para obtener más información, consulte Datastores for Deep Learning.
Arreglo numérico o de celdas
Para datos que quepan en la memoria y no requieran procesamiento adicional, como transformaciones personalizadas, puede especificar una única secuencia como arreglo numérico o un conjunto de datos de secuencias como un arreglo de celdas de arreglos numéricos. Si especifica secuencias como arreglo de celdas o numérico, también debe especificar el argumento responses
.
Para entradas en forma de arreglo de celdas, el arreglo de celdas debe ser un arreglo de celdas de N por 1 de arreglos numéricos, donde N es el número de observaciones. El tamaño y la forma del arreglo numérico que representa una secuencia depende del tipo de datos secuenciales.
Entrada | Descripción |
---|---|
Secuencias de vector | Matrices de c por s, donde c es el número de características de las secuencias y s es la longitud de la secuencia. |
Secuencias de imágenes 1D | Arreglos de h por c por s, donde h y c corresponden a la altura y el número de canales de las imágenes, respectivamente, y s es la longitud de la secuencia. |
Secuencias de imágenes 2D | Arreglos de h por w por c por s, donde h, w y c corresponden a la altura, la anchura y el número de canales de las imágenes, respectivamente, y s es la longitud de la secuencia. |
Secuencias de imágenes 3D | Arreglos de h por w por d por c por s, donde h, w, d y c corresponden a la altura, la anchura, la profundidad y el número de canales de las imágenes 3D, respectivamente, y s es la longitud de la secuencia. |
La función trainNetwork
admite redes con al menos una capa de entrada de secuencias.
Sugerencia
Si los predictores o las respuestas contienen valores
NaN
, estos se propagan a lo largo de la red durante el entrenamiento. En esos casos, normalmente el entrenamiento no converge.En el caso de las tareas de regresión, normalizar las respuestas suele ayudar a estabilizar y acelerar el entrenamiento. Para obtener más información, consulte Entrenar una red neuronal convolucional para regresión.
Para introducir datos de valores complejos en una red, la opción
SplitComplexInputs
de la capa de entrada debe ser1
.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| cell
Soporte de números complejos: Sí
features
— Datos de características
almacén de datos | Arreglo numérico | tabla
Datos de características, especificados como uno de los siguientes:
Tipo de datos | Descripción | Ejemplo de uso | |
---|---|---|---|
Almacén de datos | TransformedDatastore | Almacén de datos que transforma lotes de datos leídos de un almacén de datos subyacente mediante una función de transformación personalizada. |
|
CombinedDatastore | Almacén de datos que lee de dos o más almacenes de datos subyacentes. |
| |
Almacén de datos de minilotes personalizado | Almacén de datos personalizado que devuelve minilotes de datos. | Entrenar redes neuronales usando datos en un formato no compatible con otros almacenes de datos. Para obtener más detalles, consulte Develop Custom Mini-Batch Datastore. | |
Tabla | Datos de características especificados como una tabla. Si especifica características como tabla, también puede especificar qué columnas contienen las respuestas utilizando el argumento responses . | Entrenar redes neuronales usando datos guardados en una tabla. | |
Arreglo numérico | Datos de características especificados como un arreglo numérico. Si especifica características como arreglo numérico, también debe especificar el argumento responses . | Entrenar redes neuronales usando datos que quepan en la memoria y no requieran procesamiento adicional, como transformaciones personalizadas. |
Almacén de datos
Los almacenes de datos leen minilotes de datos de características y respuestas. Los almacenes de datos son más adecuados cuando tiene datos que no caben en la memoria o cuando quiera aplicar transformaciones a los datos.
La siguiente lista enumera almacenes de datos que son directamente compatibles con trainNetwork
para datos de características.
Almacén de datos de minilotes personalizado. Para obtener más detalles, consulte Develop Custom Mini-Batch Datastore.
Puede utilizar otros almacenes de datos integrados para entrenar redes de deep learning utilizando las funciones transform
y combine
. Estas funciones pueden convertir los datos leídos de almacenes de datos al formato de tabla o arreglo de celdas requerido por trainNetwork
. Para obtener más información, consulte Datastores for Deep Learning.
Para redes con varias entradas, el almacén de datos debe ser un objeto TransformedDatastore
o CombinedDatastore
.
El almacén de datos debe devolver datos en una tabla o arreglo de celdas. Los almacenes de datos de minilotes personalizados deben producir tablas como salida. El formato de la salida del almacén de datos depende de la arquitectura de red.
Arquitectura de red | Salida del almacén de datos | Ejemplo de salida |
---|---|---|
Capa de entrada única | Tabla o arreglo de celdas con dos columnas. La primera y la segunda columna especifican los predictores y la respuesta, respectivamente. Los elementos de la tabla deben ser escalares, vectores fila o arreglos de celdas de 1 por 1 que contengan un arreglo numérico. Los almacenes de datos de minilotes personalizados deben producir tablas como salida. | Tabla para red con una entrada y una salida: data = read(ds) data = 4×2 table Predictors Response __________________ ________ {24×1 double} 2 {24×1 double} 7 {24×1 double} 9 {24×1 double} 9 |
Arreglo de celdas para red con una entrada y una salida:
data = read(ds) data = 4×2 cell array {24×1 double} {[2]} {24×1 double} {[7]} {24×1 double} {[9]} {24×1 double} {[9]} | ||
Capas de entrada múltiples | Arreglo de celdas con ( Las primeras El orden de las entradas se indica mediante la propiedad | Arreglo de celdas para red con dos entradas y una salida: data = read(ds) data = 4×3 cell array {24×1 double} {28×1 double} {[2]} {24×1 double} {28×1 double} {[2]} {24×1 double} {28×1 double} {[9]} {24×1 double} {28×1 double} {[9]} |
Los predictores deben ser vectores columna de c por 1, donde c es el número de características.
El formato de las respuestas depende del tipo de tarea.
Tarea | Formato de las respuestas |
---|---|
Clasificación | Escalar categórico |
Regresión |
|
Para obtener más información, consulte Datastores for Deep Learning.
Tabla
Para datos de características que quepan en la memoria y no requieran procesamiento adicional, como transformaciones personalizadas, puede especificar datos de características y respuestas como una tabla.
Cada fila de la tabla corresponde a una observación. El ajuste de predictores y respuestas en las columnas de la tabla depende del tipo de tarea.
Tarea | Predictores | Respuestas |
---|---|---|
Clasificación de características | Características especificadas en una o más columnas como escalares. Si no especifica el argumento | Etiqueta categórica |
Regresión de características | Una o más columnas de valores escalares |
En el caso de redes de clasificación con entrada de características, si no especifica el argumento responses
, la función, de forma predeterminada, utilizará las primeras columnas (numColumns - 1
) de tbl
para los predictores y la última columna para las etiquetas, donde numFeatures
es el número de características de los datos de entrada.
En el caso de redes de regresión con entrada de características, si no especifica el argumento responseNames
, la función, de forma predeterminada, utilizará las primeras columnas numFeatures
para los predictores y las columnas posteriores para las respuestas, donde numFeatures
es el número de características de los datos de entrada.
Arreglo numérico
Para datos de características que quepan en la memoria y no requieran procesamiento adicional, como transformaciones personalizadas, puede especificar datos de características como un arreglo numérico. Si especifica datos de características como arreglo numérico, también debe especificar el argumento responses
.
El arreglo numérico debe ser un arreglo numérico de N por numFeatures
, donde N es el número de observaciones y numFeatures
es el número de características de los datos de entrada.
Sugerencia
Normalizar las respuestas suele ayudar a estabilizar y acelerar el entrenamiento de las redes neuronales para la regresión. Para obtener más información, consulte Entrenar una red neuronal convolucional para regresión.
Las respuestas no pueden contener valores
NaN
. Si los datos del predictor contienen valoresNaN
, estos se propagan a lo largo de la red. Sin embargo, en la mayoría de los casos, el entrenamiento no converge.Para introducir datos de valores complejos en una red, la opción
SplitComplexInputs
de la capa de entrada debe ser1
.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| table
Soporte de números complejos: Sí
mixed
— Datos mezclados
almacén de datos
Datos mezclados y respuestas, especificados como uno de los siguientes:
Tipo de datos | Descripción | Ejemplo de uso |
---|---|---|
TransformedDatastore | Almacén de datos que transforma lotes de datos leídos de un almacén de datos subyacente mediante una función de transformación personalizada. |
|
CombinedDatastore | Almacén de datos que lee de dos o más almacenes de datos subyacentes. |
|
Almacén de datos de minilotes personalizado | Almacén de datos personalizado que devuelve minilotes de datos. | Entrenar redes neuronales usando datos en un formato no compatible con otros almacenes de datos. Para obtener más detalles, consulte Develop Custom Mini-Batch Datastore. |
Puede utilizar otros almacenes de datos integrados para entrenar redes de deep learning utilizando las funciones transform
y combine
. Estas funciones pueden convertir los datos leídos de almacenes de datos al formato de tabla o arreglo de celdas requerido por trainNetwork
. Para obtener más información, consulte Datastores for Deep Learning.
El almacén de datos debe devolver datos en una tabla o arreglo de celdas. Los almacenes de datos de minilotes personalizados deben producir tablas como salida. El formato de la salida del almacén de datos depende de la arquitectura de red.
Salida del almacén de datos | Ejemplo de salida |
---|---|
Arreglo de celdas con ( Las primeras El orden de las entradas se indica mediante la propiedad | data = read(ds) data = 4×3 cell array {24×1 double} {28×1 double} {[2]} {24×1 double} {28×1 double} {[2]} {24×1 double} {28×1 double} {[9]} {24×1 double} {28×1 double} {[9]} |
Para entradas de predictor de imagen, secuencia y característica, el formato de los predictores debe coincidir con los formatos descritos en las descripciones de los argumentos images
, sequences
o features
, respectivamente. Del mismo modo, el formato de las respuestas debe coincidir con los formatos descritos en las descripciones de los argumentos images
, sequences
o features
que se corresponden con el tipo de tarea.
La función trainNetwork
admite redes con al menos una capa de entrada de secuencias.
Para ver un ejemplo de cómo entrenar una red con varias entradas, consulte Train Network on Image and Feature Data.
Sugerencia
Para convertir un arreglo numérico a un almacén de datos, use
ArrayDatastore
.Cuando combine capas en una red con tipos de datos mezclados, puede que tenga que volver a establecer el formato de los datos antes de pasarlos a una capa de combinación (como una capa de concatenación o una capa de suma). Para volver a establecer el formato de los datos, puede utilizar una capa aplanada para aplanar las dimensiones espaciales a la dimensión del canal, o crear un objeto
FunctionLayer
o una capa personalizada que vuelva a establecer el formato y cambie la forma.
responses
— Respuestas
vector categórico | Arreglo numérico | arreglo de celdas de secuencias | vector de caracteres | arreglo de celdas de vectores de caracteres | arreglo de cadena
Respuestas.
Cuando los datos de entrada son un arreglo numérico o un arreglo de celdas, especifique las respuestas como uno de los siguientes elementos.
vector categórico de etiquetas
arreglo numérico de respuestas numéricas
arreglo de celdas de secuencias categóricas o numéricas
Cuando los datos de entrada son una tabla, puede especificar opcionalmente qué columnas de la tabla contienen las respuestas como uno de los siguientes elementos:
vector de caracteres
arreglo de celdas de vectores de caracteres
arreglo de cadena
Cuando los datos de entrada son un arreglo numérico o un arreglo de celdas, el formato de las respuestas depende del tipo de tarea.
Tarea | Formato | |
---|---|---|
Clasificación | Clasificación de imágenes | Vector categórico de etiquetas de N por 1, en el que N es el número de observaciones. |
Clasificación de características | ||
Clasificación secuencia a etiqueta | ||
Clasificación secuencia a secuencia | Arreglo de celdas de N por 1 de secuencias categóricas de etiquetas, en el que N es el número de observaciones. Cada secuencia debe tener el mismo número de unidades de tiempo que la secuencia de predictor correspondiente. Para tareas de clasificación secuencia a secuencia con una observación, | |
Regresión | Regresión de imágenes 2D |
|
Regresión de imágenes 3D |
| |
Regresión de características | Matriz de N por R, en la que N es el número de observaciones y R es el número de respuestas. | |
Regresión de secuencia a uno | Matriz de N por R, en la que N es el número de secuencias y R es el número de respuestas. | |
Regresión secuencia a secuencia | Arreglo de celdas de N por 1 de secuencias numéricas, donde N es el número de secuencias, con secuencias dadas por uno de los siguientes elementos:
En el caso de tareas de regresión secuencia a secuencia con una observación, |
Sugerencia
Normalizar las respuestas suele ayudar a estabilizar y acelerar el entrenamiento de las redes neuronales para la regresión. Para obtener más información, consulte Entrenar una red neuronal convolucional para regresión.
Sugerencia
Las respuestas no pueden contener valores NaN
. Si los datos del predictor contienen valores NaN
, estos se propagan a lo largo de la red. Sin embargo, en la mayoría de los casos, el entrenamiento no converge.
layers
— Capas de red
arreglo Layer
| objeto LayerGraph
Capas de red, especificadas como arreglo Layer
u objeto LayerGraph
.
Para crear una red con todas las capas conectadas secuencialmente, puede utilizar un arreglo Layer
como argumento de entrada. En ese caso, la red devuelta es un objeto SeriesNetwork
.
Una red gráfica acíclica dirigida (DAG) presenta una estructura compleja en la que las capas tienen varias entradas y salidas. Para crear una red DAG, especifique la arquitectura de red como objeto LayerGraph
y utilice esa gráfica de capas como argumento de entrada para trainNetwork
.
La función trainNetwork
admite redes con al menos una capa de entrada de secuencias.
Para ver una lista de capas integradas, consulte List of Deep Learning Layers.
options
— Opciones de entrenamiento
TrainingOptionsSGDM
| TrainingOptionsRMSProp
| TrainingOptionsADAM
Opciones de entrenamiento, especificadas como objeto TrainingOptionsSGDM
, TrainingOptionsRMSProp
o TrainingOptionsADAM
devuelto por la función trainingOptions
.
Argumentos de salida
net
— Red entrenada
objeto SeriesNetwork
| objeto DAGNetwork
Red entrenada, devuelta como objeto SeriesNetwork
o DAGNetwork
.
Si entrena la red con un arreglo Layer
, net
es un objeto SeriesNetwork
. Si entrena la red con un objeto LayerGraph
, net
es un objeto DAGNetwork
.
info
— Información de entrenamiento
Estructura
Información de entrenamiento, devuelta como estructura, donde cada campo es un escalar o un vector numérico con un elemento por iteración de entrenamiento.
Para tareas de clasificación, info
contiene los siguientes campos:
TrainingLoss
: valores de función de pérdidaTrainingAccuracy
: precisiones de entrenamientoValidationLoss
: valores de función de pérdidaValidationAccuracy
: precisiones de validaciónBaseLearnRate
: tasas de aprendizajeFinalValidationLoss
: pérdida de validación de la red devueltaFinalValidationAccuracy
: pérdida de validación de la red devueltaOutputNetworkIteration
: número de iteración de la red devuelta
En el caso de tareas de regresión, info
contiene los siguientes campos:
TrainingLoss
: valores de función de pérdidaTrainingRMSE
: valores RMSE de entrenamientoValidationLoss
: valores de función de pérdidaValidationRMSE
: valores RMSE de validaciónBaseLearnRate
: tasas de aprendizajeFinalValidationLoss
: pérdida de validación de la red devueltaFinalValidationRMSE
: RMSE de validación de la red devueltaOutputNetworkIteration
: número de iteración de la red devuelta
La estructura solo contiene los campos ValidationLoss
, ValidationAccuracy
, ValidationRMSE
, FinalValidationLoss
, FinalValidationAccuracy
y FinalValidationRMSE
cuando options
especifica datos de validación. La opción de entrenamiento ValidationFrequency
determina en qué iteraciones calcula el software las métricas de validación. Las métricas de validación finales son un escalar. Los otros campos de la estructura son vectores fila, donde cada elemento se corresponde con una iteración de entrenamiento. En el caso de iteraciones cuando el software no calcula las métricas de validación, los valores correspondientes en la estructura son valores NaN
.
En el caso de redes que contienen capas de normalización de lotes, si la opción de entrenamiento BatchNormalizationStatistics
es 'population'
, las métricas de validación finales suelen ser diferentes de las métricas de validación evaluadas durante el entrenamiento. Esto se debe a que las capas de normalización de lotes en la red final llevan a cabo operaciones distintas de las que se realizan durante el entrenamiento. Para obtener más información, consulte batchNormalizationLayer
.
Más acerca de
Guardar redes de puntos de control y retomar el entrenamiento
Deep Learning Toolbox™ permite guardar redes como archivos .mat durante el entrenamiento. Este guardado periódico resulta especialmente útil cuando tiene una red o un conjunto de datos grandes y el entrenamiento lleva mucho tiempo. Si el entrenamiento se ve interrumpido por alguna razón, podrá retomarlo a partir de la última red de puntos de control guardada. Si desea que trainNetwork
guarde redes de puntos de control, debe especificar el nombre de la ruta utilizando la opción CheckpointPath
de trainingOptions
. Si la ruta que especifica no existe, trainingOptions
devuelve un error.
trainNetwork
asigna automáticamente nombres únicos a los archivos de redes de puntos de control. En el nombre de ejemplo, net_checkpoint__351__2018_04_12__18_09_52.mat
, 351 es el número de iteración, 2018_04_12
es la fecha y 18_09_52
es la hora a la que trainNetwork
guarda la red. Puede cargar un archivo de redes de puntos de control haciendo doble clic sobre él o utilizando el comando de carga en la línea de comandos. Por ejemplo:
load net_checkpoint__351__2018_04_12__18_09_52.mat
trainNetwork
. Por ejemplo:trainNetwork(XTrain,TTrain,net.Layers,options)
Aritmética de coma flotante
Cuando entrena una red mediante la función trainNetwork
o cuando usa las funciones de predicción o validación con objetos DAGNetwork
y SeriesNetwork
, el software realiza estos cálculos utilizando aritmética de precisión simple y de coma flotante. Las funciones para entrenamiento, predicción y validación incluyen trainNetwork
, predict
, classify
y activations
. El software utiliza aritmética de precisión simple cuando entrena redes usando tanto las CPU como las GPU.
Referencias
[1] Kudo, M., J. Toyama, and M. Shimbo. "Multidimensional Curve Classification Using Passing-Through Regions." Pattern Recognition Letters. Vol. 20, No. 11–13, pp. 1103–1111.
[2] Kudo, M., J. Toyama, and M. Shimbo. Japanese Vowels Data Set. https://archive.ics.uci.edu/ml/datasets/Japanese+Vowels
Capacidades ampliadas
Soporte paralelo automático
Acelere código mediante la ejecución automática de cálculo paralelo mediante Parallel Computing Toolbox™.
Para ejecutar el cálculo en paralelo, establezca la opción 'ExecutionEnvironment'
en 'multi-gpu'
o 'parallel'
.
Utilice trainingOptions
para establecer el entorno 'ExecutionEnvironment'
y proporcionar los valores options
a trainNetwork
. Si no establece 'ExecutionEnvironment'
, trainNetwork
se ejecuta en una GPU si esta está disponible.
Para obtener más detalles, consulte Scale Up Deep Learning in Parallel, on GPUs, and in the Cloud.
Arreglos GPU
Acelere código mediante la ejecución en una unidad de procesamiento gráfico (GPU) mediante Parallel Computing Toolbox™.
Para evitar errores de falta de memoria, la práctica recomendada es no mover grandes conjuntos de datos de entrenamiento a la GPU. En su lugar, entrene la red en una GPU utilizando
trainingOptions
para establecer el entorno'ExecutionEnvironment'
en"auto"
o"gpu"
y proporcionar los valoresoptions
atrainNetwork
.La opción
ExecutionEnvironment
debe ser"auto"
o"gpu"
cuando los datos de entrada son:Un
gpuArray
Un arreglo de celdas que contiene objetos
gpuArray
Una tabla que contiene objetos
gpuArray
Un almacén de datos que produce como salida arreglos de celdas que contienen objetos
gpuArray
Un almacén de datos que produce como salida tablas que contienen objetos
gpuArray
Para obtener más información, consulte Run MATLAB Functions on a GPU (Parallel Computing Toolbox).
Historial de versiones
Introducido en R2016aR2021b: trainNetwork
detiene automáticamente el entrenamiento cuando la pérdida es un valor NaN
Cuando entrena una red mediante la función trainNetwork
, el entrenamiento se detiene automáticamente cuando la pérdida es un valor NaN
. Normalmente, un valor de pérdida de NaN
introduce valores NaN
en los parámetros de la red que se pueden aprender, lo cual a su vez puede provocar que la red no sea capaz de entrenarse o de hacer predicciones válidas. Este cambio ayuda a identificar problemas con la red antes de que se complete el entrenamiento.
En versiones anteriores, la red sigue entrenándose cuando la pérdida es un valor NaN
.
R2021a: Se eliminará el soporte para especificar tablas de rutas de archivo MAT
Cuando especifique datos secuenciales para la función trainNetwork
, el soporte para especificar tablas de rutas de archivo MAT se eliminará en una versión futura.
Para entrenar redes con secuencias que no caben en la memoria, utilice un almacén de datos. Puede utilizar cualquier almacén de datos para leer sus datos y después utilizar la función transform
para transformar la salida del almacén de datos al formato que requiere la función trainNetwork
. Por ejemplo, puede leer datos utilizando un objeto FileDatastore
o TabularTextDatastore
y después transformar la salida utilizando la función transform
.
Consulte también
trainingOptions
| SeriesNetwork
| DAGNetwork
| LayerGraph
| classify
| predict
| analyzeNetwork
| assembleNetwork
| Deep Network Designer
Temas
- Crear una red de deep learning sencilla para clasificación
- Transferencia del aprendizaje mediante una red preentrenada
- Entrenar una red neuronal convolucional para regresión
- Clasificación de secuencias mediante deep learning
- Train Network on Image and Feature Data
- Deep Learning in MATLAB
- Define Custom Deep Learning Layers
- List of Deep Learning Layers
Abrir ejemplo
Tiene una versión modificada de este ejemplo. ¿Desea abrir este ejemplo con sus modificaciones?
Comando de MATLAB
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)