trainnet
Entrenar redes neuronales de deep learning
Desde R2023b. Recomendado en lugar de trainNetwork.
Sintaxis
Descripción
entrena la red neuronal especificada por netTrained = trainnet(images,net,lossFcn,options)net para tareas de imágenes utilizando las imágenes y objetivos especificados por images y las opciones de entrenamiento definidas por options.
entrena una red neuronal para tareas de secuencias o series de tiempo (por ejemplo, una red neuronal de LSTM o GRU) utilizando las secuencias y objetivos especificados por netTrained = trainnet(sequences,net,lossFcn,options)sequences.
entrena una red neuronal para tareas de características (por ejemplo, una red neuronal de perceptrón multicapa [MLP]) utilizando los datos de características y los objetivos especificados por netTrained = trainnet(features,net,lossFcn,options)features.
entrena una red neuronal con otras disposiciones de datos o combinaciones de diferentes tipos de datos.netTrained = trainnet(data,net,lossFcn,options)
[ también devuelve información sobre el entrenamiento utilizando cualquiera de las sintaxis anteriores.netTrained,info] = trainnet(___)
Ejemplos
Si tiene un conjunto de datos de imágenes, puede entrenar una red neuronal profunda utilizando una capa de entrada de imagen.
Descomprima los datos de dígitos de muestra y cree un almacén de datos de imágenes. La función imageDatastore etiqueta automáticamente las imágenes en función de los nombres de carpeta.
unzip("DigitsData.zip") imds = imageDatastore("DigitsData", ... IncludeSubfolders=true, ... LabelSource="foldernames");
Divida los datos en conjuntos de datos de entrenamiento y de prueba, 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. splitEachLabel divide el almacén de datos de imágenes en dos nuevos almacenes de datos para el entrenamiento y la prueba.
numTrainFiles = 750;
[imdsTrain,imdsTest] = splitEachLabel(imds,numTrainFiles,"randomized");Defina la arquitectura de la red neuronal convolucional. Especifique el tamaño de las imágenes de la capa de entrada de la red y el número de clases de la capa final totalmente conectada. Cada imagen tiene un tamaño de 28 por 28 por 1 píxeles.
inputSize = [28 28 1];
classNames = categories(imds.Labels);
numClasses = numel(classNames);
layers = [
imageInputLayer(inputSize)
convolution2dLayer(5,20)
batchNormalizationLayer
reluLayer
fullyConnectedLayer(numClasses)
softmaxLayer];Especifique las opciones de entrenamiento.
Entrene usando el solver SGDM.
Entrene durante cuatro épocas.
Monitorice el progreso del entrenamiento en una gráfica y monitorice la métrica de precisión.
Deshabilite la salida detallada.
options = trainingOptions("sgdm", ... MaxEpochs=4, ... Verbose=false, ... Plots="training-progress", ... Metrics="accuracy");
Entrene la red neuronal. Para la clasificación, utilice la pérdida de entropía cruzada.
net = trainnet(imdsTrain,layers,"crossentropy",options);
Pruebe la red con el conjunto de pruebas con etiquetas. Evalúe la precisión de la clasificación de una sola etiqueta. La precisión es el porcentaje de etiquetas que la red predice correctamente.
accuracy = testnet(net,imdsTest,"accuracy")accuracy = 98.2400
Prediga las puntuaciones de clasificación utilizando la red entrenada y, luego, convierta las etiquetas en predicciones con la función scores2label.
scoresTest = minibatchpredict(net,imdsTest); YTest = scores2label(scoresTest,classNames);
Visualice las predicciones en una gráfica de confusión.
confusionchart(imdsTest.Labels,YTest)

Si tiene un conjunto de datos de características numéricas (por ejemplo, datos tabulares sin dimensiones espaciales ni temporales), puede entrenar una red neuronal profunda 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".
categoricalPredictorNames = ["SensorCondition" "ShaftCondition"]; tbl = convertvars(tbl,categoricalPredictorNames,"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.
for i = 1:numel(categoricalPredictorNames) name = categoricalPredictorNames(i); tbl.(name) = onehotencode(tbl.(name),2); end
Visualice las primeras filas de la tabla. Observe que los predictores categóricos se han dividido en varias columnas.
head(tbl)
SigMean SigMedian SigRMS SigVar SigPeak SigPeak2Peak SigSkewness SigKurtosis SigCrestFactor SigMAD SigRangeCumSum SigCorrDimension SigApproxEntropy SigLyapExponent PeakFreq HighFreqPower EnvPower PeakSpecKurtosis SensorCondition ShaftCondition 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 = 2×1 cell
{'No Tooth Fault'}
{'Tooth Fault' }
Reserve datos para pruebas. Divida los datos en un conjunto de entrenamiento que contenga el 85% de los datos y en un conjunto de prueba que contenga el 15% restante. Para dividir los datos, use la función trainingPartitions, incluida en este ejemplo como un archivo de soporte. Para acceder al archivo, abra el ejemplo como un script en vivo.
numObservations = size(tbl,1); [idxTrain,idxTest] = trainingPartitions(numObservations,[0.85 0.15]); tblTrain = tbl(idxTrain,:); tblTest = tbl(idxTest,:);
Convierta los datos a un formato compatible con la función trainnet. Convierta los predictores y objetivos en arreglos numéricos y categóricos, respectivamente. Para la entrada de características, la red espera datos con filas que correspondan a las observaciones y columnas que correspondan a las características. Si los datos tienen un diseño diferente, puede preprocesarlos para que tengan este diseño o puede proporcionar información de diseño utilizando formatos de datos. Para obtener más información, consulte Deep Learning Data Formats.
predictorNames = ["SigMean" "SigMedian" "SigRMS" "SigVar" "SigPeak" "SigPeak2Peak" ... "SigSkewness" "SigKurtosis" "SigCrestFactor" "SigMAD" "SigRangeCumSum" ... "SigCorrDimension" "SigApproxEntropy" "SigLyapExponent" "PeakFreq" ... "HighFreqPower" "EnvPower" "PeakSpecKurtosis" "SensorCondition" "ShaftCondition"]; XTrain = table2array(tblTrain(:,predictorNames)); TTrain = tblTrain.(labelName); XTest = table2array(tblTest(:,predictorNames)); TTest = tblTest.(labelName);
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(XTrain,2);
numClasses = numel(classNames);
layers = [
featureInputLayer(numFeatures,Normalization="zscore")
fullyConnectedLayer(16)
layerNormalizationLayer
reluLayer
fullyConnectedLayer(numClasses)
softmaxLayer];Especifique las opciones de entrenamiento:
Entrenar usando el solver L-BFGS. Este solver es adecuado para tareas con redes pequeñas y cuando los datos caben en la memoria.
Entrenar usando la CPU. Dado que la red y los datos son pequeños, la CPU es más adecuada.
Muestre el progreso del entrenamiento en una gráfica.
Suprimir la salida detallada.
options = trainingOptions("lbfgs", ... ExecutionEnvironment="cpu", ... Plots="training-progress", ... Verbose=false);
Entrene la red con la función trainnet. Para la clasificación, utilice la pérdida de entropía cruzada.
net = trainnet(XTrain,TTrain,layers,"crossentropy",options);
Pruebe la red con el conjunto de pruebas con etiquetas. Evalúe la precisión de la clasificación de una sola etiqueta. La precisión es el porcentaje de etiquetas que la red predice correctamente.
accuracy = testnet(net,XTest,TTest,"accuracy")accuracy = 100
Prediga las etiquetas de los datos de prueba con la red entrenada. Prediga las puntuaciones de clasificación utilizando la red entrenada y luego convierta las predicciones en etiquetas con la función scores2label.
scoresTest = minibatchpredict(net,XTest); YTest = scores2label(scoresTest,classNames);
Visualice las predicciones en una gráfica de confusión.
confusionchart(TTest,YTest)

Argumentos de entrada
Datos
Datos de imágenes, especificados como un arreglo numérico, objeto dlarray, almacén de datos, objeto minibatchqueue o arreglo categórico.
Sugerencia
Para secuencias de imágenes, por ejemplo, datos de vídeo, use el argumento de entrada sequences.
Si tiene datos que caben en la memoria y que no requieren un procesamiento adicional, como el aumento de datos, especificar los datos de entrada como un arreglo numérico o categórico suele ser la opción más sencilla. Si desea entrenar una red con archivos de imagen almacenados en el disco o aplicar un procesamiento adicional como el aumento de datos, el uso de almacenes de datos suele ser la opción más sencilla. Para redes neuronales con varias salidas, debe usar un objeto TransformedDatastore, CombinedDatastore o minibatchqueue.
Sugerencia
Las redes neuronales esperan datos de entrada con una disposición específica. Por ejemplo, las redes de clasificación de imágenes suelen esperar que las representaciones de las imágenes sean arreglos numéricos 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. Las redes neuronales suelen tener una capa de entrada que especifica la disposición esperada de los datos.
La mayoría de los almacenes de datos y funciones generan como salida datos con la disposición que espera la red. Si sus datos tienen una disposición diferente a la que espera la red, indique que sus datos tienen una disposición diferente utilizando la opción de entrenamiento InputDataFormats, especificando los datos como un objeto minibatchqueue y la propiedad MiniBatchFormat o especificando los datos de entrada como un objeto dlarray con formato. Suele ser más fácil especificar los formatos de los datos que preprocesar los datos de entrada. Si especifica tanto la opción de entrenamiento InputDataFormats como la propiedad MiniBatchFormat de minibatchqueue, estas deben coincidir.
Para redes neuronales que no tienen capas de entrada, debe utilizar la opción de entrenamiento InputDataFormats, especificar los datos como un objeto minibatchqueue y utilizar la propiedad InputDataFormats, o utilizar objetos dlarray con formato.
Las funciones de pérdida esperan datos con una disposición específica. Por ejemplo, para las redes de regresión de secuencia a vector, la función de pérdida suele esperar que los vectores objetivo se representen como un vector de 1 por R, donde R es el número de respuestas.
La mayoría de los almacenes de datos y funciones generan datos en la disposición que espera la función de pérdida. Si sus datos objetivo tienen una disposición diferente a la que espera la función de pérdida, indique que sus objetivos tienen una disposición diferente utilizando la opción de entrenamiento TargetDataFormats, especificando los datos como un objeto minibatchqueue y la propiedad TargetDataFormats, o especificando los datos objetivo como un objeto dlarray con formato. Suele ser más fácil especificar los formatos de los datos que preprocesar los datos objetivo. Si especifica tanto la opción de entrenamiento TargetDataFormats como la propiedad TargetDataFormats de minibatchqueue, estas deben coincidir.
Para obtener más información, consulte Deep Learning Data Formats.
Arreglo numérico u objeto dlarray
Para datos que quepan en la memoria y no requieran procesamiento adicional, como aumento, puede especificar un conjunto de datos de imágenes como un arreglo numérico o un objeto dlarray. Si especifica imágenes como un arreglo numérico o un objeto dlarray, también debe especificar el argumento targets.
La disposición de los arreglos numéricos y de los objetos dlarray sin formato depende del tipo de datos de imágenes y debe ser coherente con la opción de entrenamiento InputDataFormats.
La mayoría de las redes esperan datos de imágenes con estas disposiciones.
| Datos | Distribución |
|---|---|
| Imágenes 2D | Arreglo 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. En esta disposición, los datos tienen el formato |
| Imágenes 3D | Arreglo 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. En esta disposición, los datos tienen el formato |
Para los datos con una disposición diferente, indique que los datos tienen una disposición diferente usando la opción de entrenamiento InputDataFormats o utilice, en su lugar, un objeto dlarray con formato. Para obtener más información, consulte Deep Learning Data Formats.
Arreglo categórico (desde R2025a)
Para imágenes de valores categóricos (como mapas de píxeles etiquetados) que quepan en la memoria y no requieran procesamiento adicional, puede especificar las imágenes como arreglos categóricos.
Si especifica imágenes como arreglo categórico, también debe especificar el argumento targets.
El software convierte automáticamente las entradas categóricas a valores numéricos y los pasa a la red neuronal. Para especificar cómo el software convierte las entradas categóricas a valores numéricos, utilice el argumento CategoricalInputEncoding de la función de opciones de entrenamiento. La disposición de los arreglos categóricos depende del tipo de datos de imágenes y debe ser coherente con el argumento InputDataFormats de la función de opciones de entrenamiento.
La mayoría de las redes esperan datos de imágenes categóricas pasados a la función trainnet en las disposiciones de esta tabla.
| Datos | Distribución |
|---|---|
| Imágenes categóricas 2D | Arreglo de h por w por 1 por N, en el que h y w son la altura y la anchura de las imágenes, respectivamente, y N es el número de imágenes. Después de que el software convierta estos datos a arreglos numéricos, los datos de esta disposición tienen el formato |
| Imágenes categóricas 3D | Arreglo de h por w por d por 1 por N, en el que h, w y d son la altura, la anchura y la profundidad de las imágenes, respectivamente, y N es el número de imágenes. En esta disposición, los datos tienen el formato |
Para los datos con una disposición diferente, indique que los datos tienen una disposición diferente usando la opción de entrenamiento InputDataFormats o utilice, en su lugar, un objeto dlarray con formato. Para obtener más información, consulte Deep Learning Data Formats.
Almacén de datos
Los almacenes de datos leen lotes de imágenes y objetivos. 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.
Para datos de imágenes, la función trainnet admite estos almacenes de datos:
| Almacén de datos | Descripción | Ejemplo de uso |
|---|---|---|
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. |
|
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 una disposición no compatible con otros almacenes de datos. Para obtener más detalles, consulte Develop Custom Mini-Batch Datastore. |
Para especificar los objetivos, el almacén de datos debe devolver arreglos de celdas o tablas con numInputs+numOutputs columnas, donde numInputs y numOutputs son el número de entradas y salidas de la red, respectivamente. Las primeras numInputs columnas corresponden a las entradas de la red. Las últimas numOutput columnas corresponden a las salidas de la red. Las propiedades InputNames y OutputNames de la red neuronal especifican el orden de los datos de entrada y salida, respectivamente.
Sugerencia
Los objetos
ImageDatastorepermiten leer lotes de archivos de imágenes JPG o PNG mediante precarga. Para un preprocesamiento eficiente de imágenes para deep learning, incluyendo el cambio de tamaño de las imágenes, utilice un objetoaugmentedImageDatastore. No use la propiedadReadFcnde los objetosImageDatastore. Si establece la propiedadReadFcnen una función personalizada, el objetoImageDatastoreno realiza la precarga de archivos de imágenes y suele ser bastante más lento.Para obtener el mejor rendimiento, si está entrenando una red usando un almacén de datos con una propiedad
ReadSize, comoimageDatastore, establezca la propiedadReadSizey la opción de entrenamientoMiniBatchSizeen el mismo valor. Si está entrenando una red usando un almacén de datos con una propiedadMiniBatchSize, comoaugmentedImageDatastore, establezca la propiedadMiniBatchSizedel almacén de datos y la opción de entrenamientoMiniBatchSizeen el mismo valor.
Puede utilizar otros almacenes de datos integrados para probar redes neuronales de deep learning utilizando las funciones transform y combine. Estas funciones pueden convertir los datos leídos de almacenes de datos a la disposición requerida por trainnet. La disposición requerida de la salida del almacén de datos depende de la arquitectura de la red neuronal. Para obtener más información, consulte Personalización de almacenes de datos.
Objeto minibatchqueue (desde R2024a)
Para un mayor control sobre cómo el software procesa y transforma los minilotes, puede especificar los datos como un objeto minibatchqueue que devuelve los predictores y los objetivos.
Si especifica los datos como un objeto minibatchqueue, la función trainnet ignora la propiedad MiniBatchSize del objeto y utiliza la opción de entrenamiento MiniBatchSize en su lugar.
Para especificar los objetivos, minibatchqueue debe tener numInputs+numOutputs salidas, donde numInputs y numOutputs son el número de entradas y salidas de la red, respectivamente. Las primeras numInputs salidas corresponden a las entradas de la red. Las últimas numOutput salidas corresponden a las salidas de la red. Las propiedades InputNames y OutputNames de la red neuronal especifican el orden de los datos de entrada y salida, respectivamente.
Nota
Este argumento admite predictores y objetivos de valores complejos.
Datos de secuencia o de series de tiempo, especificados como un arreglo numérico, un arreglo de celdas de arreglos numéricos, un objeto dlarray, un arreglo de celdas de objetos dlarray, un almacén de datos o un objeto minibatchqueue.
Si tiene secuencias de la misma longitud que caben en la memoria y que no requieren un procesamiento adicional, especificar los datos de entrada como un arreglo numérico suele ser la opción más sencilla. Si tiene secuencias de distintas longitudes que caben en la memoria y que no requieren procesamiento adicional, especificar los datos de entrada como un arreglo de celdas de arreglos numéricos suele ser la opción más sencilla. Si desea entrenar una red con secuencias almacenadas en el disco o aplicar un procesamiento adicional, como transformaciones personalizadas, el uso de almacenes de datos suele ser la opción más sencilla. Para redes neuronales con varias entradas, debe usar un objeto TransformedDatastore o CombinedDatastore.
Sugerencia
Las redes neuronales esperan datos de entrada con una disposición específica. Por ejemplo, las redes de clasificación de secuencias de vectores suelen esperar que las representaciones de secuencias de vectores sean arreglos de t por c, donde t y c son el número de unidades de tiempo y los canales de las secuencias, respectivamente. Las redes neuronales suelen tener una capa de entrada que especifica la disposición esperada de los datos.
La mayoría de los almacenes de datos y funciones generan como salida datos con la disposición que espera la red. Si sus datos tienen una disposición diferente a la que espera la red, indique que sus datos tienen una disposición diferente utilizando la opción de entrenamiento InputDataFormats, especificando los datos como un objeto minibatchqueue y la propiedad MiniBatchFormat o especificando los datos de entrada como un objeto dlarray con formato. Suele ser más fácil especificar los formatos de los datos que preprocesar los datos de entrada. Si especifica tanto la opción de entrenamiento InputDataFormats como la propiedad MiniBatchFormat de minibatchqueue, estas deben coincidir.
Para redes neuronales que no tienen capas de entrada, debe utilizar la opción de entrenamiento InputDataFormats, especificar los datos como un objeto minibatchqueue y utilizar la propiedad InputDataFormats, o utilizar objetos dlarray con formato.
Las funciones de pérdida esperan datos con una disposición específica. Por ejemplo, para las redes de regresión de secuencia a vector, la función de pérdida suele esperar que los vectores objetivo se representen como un vector de 1 por R, donde R es el número de respuestas.
La mayoría de los almacenes de datos y funciones generan datos en la disposición que espera la función de pérdida. Si sus datos objetivo tienen una disposición diferente a la que espera la función de pérdida, indique que sus objetivos tienen una disposición diferente utilizando la opción de entrenamiento TargetDataFormats, especificando los datos como un objeto minibatchqueue y la propiedad TargetDataFormats, o especificando los datos objetivo como un objeto dlarray con formato. Suele ser más fácil especificar los formatos de los datos que preprocesar los datos objetivo. Si especifica tanto la opción de entrenamiento TargetDataFormats como la propiedad TargetDataFormats de minibatchqueue, estas deben coincidir.
Para obtener más información, consulte Deep Learning Data Formats.
Arreglo numérico, arreglo categórico, objeto dlarray o arreglo de celdas
Para datos que quepan en la memoria y no requieran procesamiento adicional, como transformaciones personalizadas, puede especificar una única secuencia como un arreglo numérico, un arreglo categórico o un objeto dlarray, o un conjunto de datos de secuencias como un arreglo de celdas de arreglos numéricos, arreglos categóricos u objetos dlarray. Si especifica secuencias como un arreglo numérico, un arreglo categórico, un arreglo de celdas o un objeto dlarray, también debe especificar el argumento targets.
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, arreglos categóricos u objetos dlarray, donde N es el número de observaciones.
El software convierte automáticamente las entradas categóricas a valores numéricos y los pasa a la red neuronal. Para especificar cómo el software convierte las entradas categóricas a valores numéricos, utilice el argumento CategoricalInputEncoding de la función de opciones de entrenamiento.
El tamaño y la forma de los arreglos numéricos, arreglos categóricos u objetos dlarray que representan secuencias dependen del tipo de datos secuenciales y deben ser coherentes con la opción de entrenamiento InputDataFormats.
La mayoría de redes con una capa de entrada de secuencias esperan datos secuenciales pasados a la función trainnet en las disposiciones de esta tabla.
| Datos | Distribución |
|---|---|
| Secuencias de vectores | Matrices de s por c, donde s y c son el número de unidades de tiempo y canales (características) de las secuencias, respectivamente. |
| Secuencias de vectores categóricos | Arreglos categóricos de s por 1, donde s es el número de unidades de tiempo de las secuencias. |
| 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 1D categóricas | Arreglos categóricos de h por 1 por s, donde h corresponde a la altura de las imágenes 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 2D categóricas | Arreglos de h por w por 1 por s, donde h y w corresponden a la altura y la anchura 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. |
| Secuencias de imágenes 3D categóricas | Arreglos de h por w por d por 1 por s, donde h, w y d corresponden a la altura, la anchura y la profundidad de las imágenes 3D, respectivamente, y s es la longitud de la secuencia. |
Para los datos con una disposición diferente, indique que los datos tienen una disposición diferente usando la opción de entrenamiento InputDataFormats o utilice, en su lugar, un objeto dlarray con formato. Para obtener más información, consulte Deep Learning Data Formats.
Almacén de datos
Los almacenes de datos leen lotes de secuencias y objetivos. 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.
Para los datos de secuencias y de series de tiempo, la función trainnet admite estos almacenes de datos:
| Almacén 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. | Combinar predictores y objetivos 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 una disposición no compatible con otros almacenes de datos. Para obtener más detalles, consulte Develop Custom Mini-Batch Datastore. |
Para especificar los objetivos, el almacén de datos debe devolver arreglos de celdas o tablas con numInputs+numOutputs columnas, donde numInputs y numOutputs son el número de entradas y salidas de la red, respectivamente. Las primeras numInputs columnas corresponden a las entradas de la red. Las últimas numOutput columnas corresponden a las salidas de la red. Las propiedades InputNames y OutputNames de la red neuronal especifican el orden de los datos de entrada y salida, respectivamente.
Puede utilizar otros almacenes de datos integrados usando las funciones transform y combine. Estas funciones pueden convertir los datos leídos de almacenes de datos a la disposición requerida por trainnet. Por ejemplo, puede transformar y combinar datos leídos de arreglos en memoria y archivos CVS mediante objetos ArrayDatastore y TabularTextDatastore, respectivamente. La disposición requerida de la salida del almacén de datos depende de la arquitectura de la red neuronal. Para obtener más información, consulte Personalización de almacenes de datos.
Objeto minibatchqueue (desde R2024a)
Para un mayor control sobre cómo el software procesa y transforma los minilotes, puede especificar los datos como un objeto minibatchqueue que devuelve los predictores y los objetivos.
Si especifica los datos como un objeto minibatchqueue, la función trainnet ignora la propiedad MiniBatchSize del objeto y utiliza la opción de entrenamiento MiniBatchSize en su lugar.
Para especificar los objetivos, minibatchqueue debe tener numInputs+numOutputs salidas, donde numInputs y numOutputs son el número de entradas y salidas de la red, respectivamente. Las primeras numInputs salidas corresponden a las entradas de la red. Las últimas numOutput salidas corresponden a las salidas de la red. Las propiedades InputNames y OutputNames de la red neuronal especifican el orden de los datos de entrada y salida, respectivamente.
Nota
Este argumento admite predictores y objetivos de valores complejos.
Datos de características o en tablas, especificados como un arreglo numérico, almacén de datos, tabla u objeto minibatchqueue.
Si tiene datos que caben en la memoria y que no requieren un procesamiento adicional, especificar los datos de entrada como un arreglo numérico o tabla suele ser la opción más sencilla. Si desea entrenar una red con datos de características o en tablas almacenados en el disco, o aplicar un procesamiento adicional como transformaciones personalizadas, el uso de almacenes de datos suele ser la opción más sencilla. Para redes neuronales con varias entradas, debe usar un objeto TransformedDatastore o CombinedDatastore.
Sugerencia
Las redes neuronales esperan datos de entrada con una disposición específica. Por ejemplo, las redes de clasificación de características suelen esperar que las representaciones de características y datos en tablas sean vectores de 1 por c, donde c es el número de características de los datos. Las redes neuronales suelen tener una capa de entrada que especifica la disposición esperada de los datos.
La mayoría de los almacenes de datos y funciones generan como salida datos con la disposición que espera la red. Si sus datos tienen una disposición diferente a la que espera la red, indique que sus datos tienen una disposición diferente utilizando la opción de entrenamiento InputDataFormats, especificando los datos como un objeto minibatchqueue y la propiedad MiniBatchFormat o especificando los datos de entrada como un objeto dlarray con formato. Suele ser más fácil especificar los formatos de los datos que preprocesar los datos de entrada. Si especifica tanto la opción de entrenamiento InputDataFormats como la propiedad MiniBatchFormat de minibatchqueue, estas deben coincidir.
Para redes neuronales que no tienen capas de entrada, debe utilizar la opción de entrenamiento InputDataFormats, especificar los datos como un objeto minibatchqueue y utilizar la propiedad InputDataFormats, o utilizar objetos dlarray con formato.
Las funciones de pérdida esperan datos con una disposición específica. Por ejemplo, para las redes de regresión de secuencia a vector, la función de pérdida suele esperar que los vectores objetivo se representen como un vector de 1 por R, donde R es el número de respuestas.
La mayoría de los almacenes de datos y funciones generan datos en la disposición que espera la función de pérdida. Si sus datos objetivo tienen una disposición diferente a la que espera la función de pérdida, indique que sus objetivos tienen una disposición diferente utilizando la opción de entrenamiento TargetDataFormats, especificando los datos como un objeto minibatchqueue y la propiedad TargetDataFormats, o especificando los datos objetivo como un objeto dlarray con formato. Suele ser más fácil especificar los formatos de los datos que preprocesar los datos objetivo. Si especifica tanto la opción de entrenamiento TargetDataFormats como la propiedad TargetDataFormats de minibatchqueue, estas deben coincidir.
Para obtener más información, consulte Deep Learning Data Formats.
Arreglo numérico u objeto dlarray
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 targets.
La disposición de los arreglos numéricos y de los objetos dlarray sin formato debe ser coherente con la opción de entrenamiento InputDataFormats. La mayoría de las redes con entrada de características esperan datos de entrada especificados como un arreglo 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.
Para los datos con una disposición diferente, indique que los datos tienen una disposición diferente usando la opción de entrenamiento InputDataFormats o utilice, en su lugar, un objeto dlarray con formato. Para obtener más información, consulte Deep Learning Data Formats.
Arreglo categórico (desde R2025a)
Para características discretas que quepan en la memoria y no requieran procesamiento adicional, como transformaciones personalizadas, puede especificar datos de características como un arreglo categórico.
Si especifica características como arreglo categórico, también debe especificar el argumento targets.
El software convierte automáticamente las entradas categóricas a valores numéricos y los pasa a la red neuronal. Para especificar cómo el software convierte las entradas categóricas a valores numéricos, utilice el argumento CategoricalInputEncoding de la función de opciones de entrenamiento. La disposición de los arreglos categóricos debe ser coherente con el argumento InputDataFormats de la función de opciones de entrenamiento.
La mayoría de las redes con entrada de características categórica esperan datos de entrada especificados como un vector de N por 1, donde N es el número de observaciones. Después de que el software convierta estos datos a arreglos numéricos, los datos de esta disposición tienen el formato "BC" (lote, canal). El tamaño de la dimensión "C" (canal) depende del argumento CategoricalInputEncoding de la función de opciones de entrenamiento.
Para los datos con una disposición diferente, indique que los datos tienen una disposición diferente usando la opción de entrenamiento InputDataFormats o utilice, en su lugar, un objeto dlarray con formato. Para obtener más información, consulte Deep Learning Data Formats.
Tabla (desde R2024a)
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 una tabla. Si especifica datos de características como una tabla, no debe especificar el argumento targets.
Para especificar datos de características como una tabla, especifique una tabla con numObservations filas y numFeatures+1 columnas, donde numObservations y numFeatures sean el número de observaciones y características de los datos de entrada, respectivamente. La función trainnet utiliza las primeras numFeatures columnas como características de entrada y la última columna como objetivos.
Almacén de datos
Los almacenes de datos leen lotes de datos de características y objetivos. 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.
Para los datos de características y en tablas, la función trainnet admite estos almacenes de datos:
| 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 una disposición no compatible con otros almacenes de datos. Para obtener más detalles, consulte Develop Custom Mini-Batch Datastore. |
Para especificar los objetivos, el almacén de datos debe devolver arreglos de celdas o tablas con numInputs+numOutputs columnas, donde numInputs y numOutputs son el número de entradas y salidas de la red, respectivamente. Las primeras numInputs columnas corresponden a las entradas de la red. Las últimas numOutput columnas corresponden a las salidas de la red. Las propiedades InputNames y OutputNames de la red neuronal especifican el orden de los datos de entrada y salida, respectivamente.
Puede utilizar otros almacenes de datos integrados para entrenar redes neuronales 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 trainnet. Para obtener más información, consulte Personalización de almacenes de datos.
Objeto minibatchqueue (desde R2024a)
Para un mayor control sobre cómo el software procesa y transforma los minilotes, puede especificar los datos como un objeto minibatchqueue que devuelve los predictores y los objetivos.
Si especifica los datos como un objeto minibatchqueue, la función trainnet ignora la propiedad MiniBatchSize del objeto y utiliza la opción de entrenamiento MiniBatchSize en su lugar.
Para especificar los objetivos, minibatchqueue debe tener numInputs+numOutputs salidas, donde numInputs y numOutputs son el número de entradas y salidas de la red, respectivamente. Las primeras numInputs salidas corresponden a las entradas de la red. Las últimas numOutput salidas corresponden a las salidas de la red. Las propiedades InputNames y OutputNames de la red neuronal especifican el orden de los datos de entrada y salida, respectivamente.
Nota
Este argumento admite predictores y objetivos de valores complejos.
Datos genéricos o combinaciones de tipos de datos, especificados como un arreglo numérico, objeto dlarray, almacén de datos u objeto minibatchqueue.
Si tiene datos que caben en la memoria y que no requieren un procesamiento adicional, especificar los datos de entrada como un arreglo numérico suele ser la opción más sencilla. Si desea entrenar una red con datos almacenados en el disco o aplicar un procesamiento adicional, el uso de almacenes de datos suele ser la opción más sencilla. Para redes neuronales con varias entradas, debe usar un objeto TransformedDatastore o CombinedDatastore.
Sugerencia
Las redes neuronales esperan datos de entrada con una disposición específica. Por ejemplo, las redes de clasificación de secuencias de vectores suelen esperar que las representaciones de secuencias de vectores sean arreglos de t por c, donde t y c son el número de unidades de tiempo y los canales de las secuencias, respectivamente. Las redes neuronales suelen tener una capa de entrada que especifica la disposición esperada de los datos.
La mayoría de los almacenes de datos y funciones generan como salida datos con la disposición que espera la red. Si sus datos tienen una disposición diferente a la que espera la red, indique que sus datos tienen una disposición diferente utilizando la opción de entrenamiento InputDataFormats, especificando los datos como un objeto minibatchqueue y la propiedad MiniBatchFormat o especificando los datos de entrada como un objeto dlarray con formato. Suele ser más fácil especificar los formatos de los datos que preprocesar los datos de entrada. Si especifica tanto la opción de entrenamiento InputDataFormats como la propiedad MiniBatchFormat de minibatchqueue, estas deben coincidir.
Para redes neuronales que no tienen capas de entrada, debe utilizar la opción de entrenamiento InputDataFormats, especificar los datos como un objeto minibatchqueue y utilizar la propiedad InputDataFormats, o utilizar objetos dlarray con formato.
Las funciones de pérdida esperan datos con una disposición específica. Por ejemplo, para las redes de regresión de secuencia a vector, la función de pérdida suele esperar que los vectores objetivo se representen como un vector de 1 por R, donde R es el número de respuestas.
La mayoría de los almacenes de datos y funciones generan datos en la disposición que espera la función de pérdida. Si sus datos objetivo tienen una disposición diferente a la que espera la función de pérdida, indique que sus objetivos tienen una disposición diferente utilizando la opción de entrenamiento TargetDataFormats, especificando los datos como un objeto minibatchqueue y la propiedad TargetDataFormats, o especificando los datos objetivo como un objeto dlarray con formato. Suele ser más fácil especificar los formatos de los datos que preprocesar los datos objetivo. Si especifica tanto la opción de entrenamiento TargetDataFormats como la propiedad TargetDataFormats de minibatchqueue, estas deben coincidir.
Para obtener más información, consulte Deep Learning Data Formats.
Arreglos numéricos, arreglos categóricos u objetos dlarray
Para datos que quepan en la memoria y no requieran procesamiento adicional, como transformaciones personalizadas, puede especificar datos como un arreglo numérico, un arreglo categórico o un objeto dlarray. Si especifica datos como arreglo numérico, también debe especificar el argumento targets.
Para una red neuronal con un objeto inputLayer, la disposición esperada de los datos de entrada es una dada por la propiedad InputFormat de la capa.
El software convierte automáticamente las entradas categóricas a valores numéricos y los pasa a la red neuronal. Para especificar cómo el software convierte las entradas categóricas a valores numéricos, utilice el argumento CategoricalInputEncoding de la función de opciones de entrenamiento. La disposición de los arreglos categóricos debe ser coherente con el argumento InputDataFormats de la función de opciones de entrenamiento.
Para los datos con una disposición diferente, indique que los datos tienen una disposición diferente usando la opción de entrenamiento InputDataFormats o utilice, en su lugar, un objeto dlarray con formato. Para obtener más información, consulte Deep Learning Data Formats.
Almacenes de datos
Los almacenes de datos leen lotes de datos y objetivos. 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.
Para datos genéricos o combinaciones de tipos de datos, la función trainnet admite estos almacenes de datos:
| 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. |
Para especificar los objetivos, el almacén de datos debe devolver arreglos de celdas o tablas con numInputs+numOutputs columnas, donde numInputs y numOutputs son el número de entradas y salidas de la red, respectivamente. Las primeras numInputs columnas corresponden a las entradas de la red. Las últimas numOutput columnas corresponden a las salidas de la red. Las propiedades InputNames y OutputNames de la red neuronal especifican el orden de los datos de entrada y salida, respectivamente.
Puede utilizar otros almacenes de datos integrados usando 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 trainnet. Para obtener más información, consulte Personalización de almacenes de datos.
Objeto minibatchqueue (desde R2024a)
Para un mayor control sobre cómo el software procesa y transforma los minilotes, puede especificar los datos como un objeto minibatchqueue que devuelve los predictores y los objetivos.
Si especifica los datos como un objeto minibatchqueue, la función trainnet ignora la propiedad MiniBatchSize del objeto y utiliza la opción de entrenamiento MiniBatchSize en su lugar.
Para especificar los objetivos, minibatchqueue debe tener numInputs+numOutputs salidas, donde numInputs y numOutputs son el número de entradas y salidas de la red, respectivamente. Las primeras numInputs salidas corresponden a las entradas de la red. Las últimas numOutput salidas corresponden a las salidas de la red. Las propiedades InputNames y OutputNames de la red neuronal especifican el orden de los datos de entrada y salida, respectivamente.
Nota
Este argumento admite predictores y objetivos de valores complejos.
Objetivos de entrenamiento, especificados como un arreglo categórico, arreglo numérico o arreglo de celdas de secuencias.
Para especificar objetivos para redes con múltiples salidas, especifique los objetivos utilizando los argumentos images, sequences, features o data.
Sugerencia
Las funciones de pérdida esperan datos con una disposición específica. Por ejemplo, para las redes de regresión de secuencia a vector, la función de pérdida suele esperar que los vectores objetivo se representen como un vector de 1 por R, donde R es el número de respuestas.
La mayoría de los almacenes de datos y funciones generan datos en la disposición que espera la función de pérdida. Si sus datos objetivo tienen una disposición diferente a la que espera la función de pérdida, indique que sus objetivos tienen una disposición diferente utilizando la opción de entrenamiento TargetDataFormats, especificando los datos como un objeto minibatchqueue y la propiedad TargetDataFormats, o especificando los datos objetivo como un objeto dlarray con formato. Suele ser más fácil especificar los formatos de los datos que preprocesar los datos objetivo. Si especifica tanto la opción de entrenamiento TargetDataFormats como la propiedad TargetDataFormats de minibatchqueue, estas deben coincidir.
Para obtener más información, consulte Deep Learning Data Formats.
La disposición esperada de los objetivos depende de la función de pérdida y del tipo de tarea. Los objetivos incluidos en esta lista son únicamente un subconjunto. Las funciones de pérdida pueden admitir objetivos adicionales con disposiciones diferentes, como objetivos con dimensiones adicionales. Para las funciones de pérdida personalizadas, el software utiliza la información de formato de los datos de salida de la red para determinar el tipo de datos objetivo y aplica la disposición correspondiente en esta tabla.
| Función de pérdida | Objetivo | Disposición del objetivo |
|---|---|---|
"crossentropy" | Etiquetas categóricas | Vector categórico de etiquetas de N por 1, en el que N es el número de observaciones. |
| Secuencias de etiquetas categóricas |
| |
"index-crossentropy" | Etiquetas categóricas | Vector categórico de etiquetas de N por 1, en el que N es el número de observaciones. |
| Índices de clase | Vector numérico de N por 1 de índices de clase, donde N es el número de observaciones. | |
| Secuencias de etiquetas categóricas |
| |
| Secuencias de índices de clase |
| |
"binary-crossentropy" | Etiquetas binarias (etiqueta única) | Vector de N por 1, donde N es el número de observaciones. |
| Etiquetas binarias (multietiqueta) | Matriz de N por c, donde N and c son el número de observaciones y clases, respectivamente. | |
| Escalares numéricos | Vector de N por 1, donde N es el número de observaciones. |
| Vectores numéricos | Matriz de N por R, en la que N es el número de observaciones y R es el número de respuestas. | |
| 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 |
| |
| Secuencias numéricas de escalares |
| |
| Secuencias numéricas de vectores |
| |
| Secuencias de imágenes 1D |
| |
| Secuencias de imágenes 2D |
| |
| Secuencias de imágenes 3D |
|
Para los objetivos con una disposición diferente, indique que sus objetivos tienen una disposición diferente usando la opción de entrenamiento TargetDataFormats o utilice, en su lugar, un objeto dlarray con formato. Para obtener más información, consulte Deep Learning Data Formats.
El software convierte automáticamente los objetivos categóricos a valores numéricos y los pasa a las funciones de pérdida y métricas. Si entrena con la función de pérdida "index-crossentropy", el software convierte objetivos categóricos a sus valores enteros. De lo contrario, el software convierte objetivos categóricos a vectores codificados one-hot.
Para especificar cómo el software convierte los objetivos categóricos a valores numéricos, utilice el argumento CategoricalTargetEncoding de la función de opciones de entrenamiento. (desde R2025a)
Sugerencia
Normalizar los objetivos 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.
Detalles de entrenamiento
Arquitectura de red neuronal, especificada como un objeto dlnetwork o un arreglo de capas.
Para ver una lista de capas de red neuronal integradas, consulte Lista de capas de deep learning.
Función de pérdida que se desea usar para el entrenamiento, especificada como uno de estos valores:
"crossentropy": pérdida de entropía cruzada para tareas de clasificación, normalizada dividiendo por el número de elementos que no son canales de la salida de la red."index-crossentropy"(desde R2024b): índice de pérdida de entropía cruzada para tareas de clasificación, normalizada dividiendo por el número de elementos de los objetivos. Utilice esta opción para ahorrar memoria cuando haya muchas clases categóricas."binary-crossentropy": índice de pérdida de entropía cruzada binaria para tareas de clasificación binarias y multietiqueta, normalizada dividiendo por el número de elementos de la salida de la red."mae"/"mean-absolute-error"/"l1loss": error medio absoluto para tareas de regresión, normalizado dividiendo por el número de elementos de la salida de la red."mse"/"mean-squared-error"/"l2loss": error cuadrático medio para tareas de regresión, normalizado dividiendo por el número de elementos de la salida de la red."huber": pérdida de Huber para tareas de regresión, normalizada dividiendo por el número de elementos de la salida de la red.Identificador de función con la sintaxis
loss = f(Y1,...,Yn,T1,...,Tm), dondeY1,...,Ynson objetosdlarrayque se corresponden con las predicciones de la rednyT1,...,Tmson objetosdlarrayque se corresponden con los objetivosm.Objeto
deep.DifferentiableFunction(desde R2024a): objeto de función con una función de retropropagación personalizada.
Sugerencia
Para la entropía cruzada ponderada, utilice el identificador de función @(Y,T)crossentropy(Y,T,weights).
Para obtener más información sobre cómo definir una función personalizada, consulte Define Custom Deep Learning Operations.
Opciones de entrenamiento, especificadas como un objeto TrainingOptionsSGDM, TrainingOptionsRMSProp, TrainingOptionsADAM, TrainingOptionsLBFGS o TrainingOptionsLM, devuelto por la función trainingOptions.
Argumentos de salida
Red entrenada, devuelta como un objeto dlnetwork.
Información de entrenamiento, devuelta como un objeto TrainingInfo con estas propiedades:
TrainingHistory: información sobre las iteraciones de entrenamientoValidationHistory: información sobre las iteraciones de validaciónOutputNetworkIteration: iteración que corresponde a la red entrenadaStopReason: motivo por el que se detuvo el entrenamiento
También puede utilizar info para abrir y cerrar la gráfica de progreso del entrenamiento usando las funciones show y close.
Más acerca de
De forma predeterminada, el software realiza los cálculos utilizando aritmética en punto flotante de precisión simple para entrenar una red neuronal con la función trainnet. La función trainnet devuelve una red con parámetros de aprendizaje y de estado de precisión simple.
Cuando se utilizan funciones de predicción o validación con un objeto dlnetwork con parámetros de aprendizaje y de estado de precisión simple, el software realiza los cálculos utilizando aritmética en punto flotante de precisión simple.
Para proporcionar el mejor rendimiento, no se garantiza que deep learning utilizando una GPU en MATLAB® sea determinista. Según la arquitectura de su red, con ciertas condiciones puede obtener resultados diferentes al usar una GPU para entrenar dos redes idénticas o hacer dos predicciones utilizando la misma red y los mismos datos. Si requiere determinismo cuando realiza operaciones de deep learning con una GPU, use la función deep.gpu.deterministicAlgorithms (desde R2024b).
Si usa la función rng para establecer el mismo generador de números aleatorios y semilla, el entrenamiento usando una CPU es reproducible a menos que:
Establezca la opción de entrenamiento
PreprocessingEnvironmenten"background"o"parallel".Los datos de entrenamiento sean un objeto
minibatchqueuecon la propiedadPreprocessingEnvironmentestablecida en"background"o"parallel".
Sugerencias
Para tareas de regresión, normalizar los objetivos suele ayudar a estabilizar y acelerar el entrenamiento. Para obtener más información, consulte Entrenar una red neuronal convolucional para regresión.
En la mayoría de los casos, si el predictor o los objetivos contienen valores
NaN, estos se propagan por la red y el entrenamiento no converge.Para convertir un arreglo numérico a un almacén de datos, use
ArrayDatastore.Cuando combine capas en una red neuronal 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
FunctionLayero una capa personalizada que vuelva a establecer el formato y cambie la forma de los datos.
Algoritmos
La mayoría de los almacenes de datos genera como salida datos con la disposición que esperan las redes neuronales. Si crea su propio almacén de datos o aplica transformaciones personalizadas a los almacenes de datos, debe asegurarse de que el almacén de datos genere los datos en la disposición admitida.
Hay dos aspectos fundamentales que se deben tener en cuenta:
La estructura del lote de datos. El almacén de datos debe generar una tabla o arreglo de celdas con filas que correspondan a las observaciones y columnas que correspondan a las entradas y los objetivos.
La disposición de los predictores y los objetivos. Por ejemplo, la disposición de los predictores y los objetivos debe ser compatible con la red y la función de pérdida.
Cuando se utiliza un almacén de datos para entrenar una red neuronal, la estructura de la salida del almacén de datos depende de la arquitectura de la red neuronal.
| Arquitectura de red neuronal | Salida del almacén de datos | Ejemplo de salida de arreglo de celdas | Ejemplo de salida de tabla |
|---|---|---|---|
| Una única capa de entrada y una única salida | Tabla o arreglo de celdas con dos columnas. La primera y la segunda columna especifican los predictores y los objetivos, 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. | Arreglo de celdas para red neuronal 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]} | Tabla para red neuronal 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
|
| Varias capas de entrada y varias salidas | Arreglo de celdas con ( Las primeras El orden de las entradas y las salidas se indica mediante las propiedades | Arreglo de celdas para red neuronal con dos entradas y dos salidas. data = read(ds) data =
4×4 cell array
{224×224×3 double} {128×128×3 double} {[2]} {[-42]}
{224×224×3 double} {128×128×3 double} {[2]} {[-15]}
{224×224×3 double} {128×128×3 double} {[9]} {[-24]}
{224×224×3 double} {128×128×3 double} {[9]} {[-44]} | No compatible |
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.
Las redes neuronales y las funciones de pérdida esperan datos de entrada con una disposición específica. Por ejemplo, las redes de clasificación de secuencias de vectores suelen esperar que las secuencias se representen como un arreglo numérico de t por c, donde t y c son el número de unidades de tiempo y los canales de las secuencias, respectivamente. Las redes neuronales suelen tener una capa de entrada que especifica la disposición esperada de los datos.
La mayoría de los almacenes de datos y funciones generan datos con la disposición que esperan las redes y las funciones de pérdida. Si los datos tienen una disposición diferente de lo que espera la red o la función de pérdida, indique que los datos tienen una disposición diferente usando las opciones de entrenamiento InputDataFormats and TargetDataFormats, o especificando los datos como objetos dlarray con formato. Suele ser más fácil ajustar las opciones de entrenamiento InputDataFormats y TargetDataFormats que preprocesar los datos de entrada.
Para redes neuronales que no tengan capas de entrada, debe utilizar la opción de entrenamiento InputDataFormats o usar objetos dlarray con formato.
Para obtener más información, consulte Deep Learning Data Formats.
La mayoría de las redes esperan estas disposiciones de datos de los predictores:
Entrada de imagen
| Datos | Disposición del predictor |
|---|---|
| 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. |
Entrada de secuencias
| Datos | Disposición del predictor |
|---|---|
| Secuencia de vector | Matriz de s por c, donde s es la longitud de la secuencia y c es el número de características 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 lote 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 lote 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 lote debe tener la misma longitud de secuencia. |
Entrada de características
| Datos | Disposición del predictor |
|---|---|
| Características | Vectores columna de c por 1, donde c es el número de características. |
La mayoría de las funciones de pérdida esperan estas disposiciones de datos para los objetivos:
| Objetivo | Disposición del objetivo |
|---|---|
| Etiquetas categóricas | Escalar categórico. |
| Secuencias de etiquetas categóricas | Vector categórico de t por 1, donde t es el número de unidades de tiempo. |
| Etiquetas binarias (etiqueta única) | Escalar numérico |
| Etiquetas binarias (multietiqueta) | Vector de c por 1, donde c es el número de clases. |
| Escalares numéricos | Escalar numérico |
| Vectores numéricos | Vector de 1 por R, donde R es el número de respuestas. |
| 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. |
| Secuencias numéricas de escalares | Vector de t por 1, donde t es el número de unidades de tiempo. |
| Secuencias numéricas de vectores | Arreglo de t por c, donde t y c son el número de unidades de tiempo y de canales, respectivamente. |
| Secuencias de imágenes 1D | Arreglo de h por c por t, donde h, c y t son la altura, el número de canales y el número de unidades de tiempo de las secuencias, respectivamente. |
| Secuencias de imágenes 2D | Arreglo de h por w por c por t, donde h, w, c y t son la altura, la anchura, el número de canales y el número de unidades de tiempo de las secuencias, respectivamente. |
| Secuencias de imágenes 3D | Arreglo de h por w por d por c por t, donde h, w, d, c y t son la altura, la anchura, la profundidad, el número de canales y el número de unidades de tiempo de las secuencias, respectivamente. |
Para obtener más información, consulte Deep Learning Data Formats.
Capacidades ampliadas
Esta función es totalmente compatible con la aceleración por GPU.
De forma predeterminada, la función trainnet usa una GPU en caso de que esté disponible. Puede especificar el hardware que utiliza la función trainnet estableciendo la opción de entrenamiento ExecutionEnvironment mediante la función trainingOptions.
Para obtener más información, consulte Scale Up Deep Learning in Parallel, on GPUs, and in the Cloud.
Historial de versiones
Introducido en R2023bEl software convierte automáticamente los datos de entrada y los objetivos categóricos a valores numéricos y los pasa a la red neuronal y a la función de pérdida, respectivamente. Para especificar cómo el software codifica los datos de entrada y objetivos categóricos, use los argumentos CategoricalInputEncoding y CategoricalTargetEncoding de la función trainingOptions, respectivamente.
El índice de pérdida de entropía cruzada, también conocido como pérdida de entropía cruzada dispersa, es una alternativa más eficiente en términos de memoria y computación al algoritmo de pérdida de entropía cruzada estándar. A diferencia de la función de pérdida "crossentropy", que requiere convertir los objetivos categóricos en vectores codificados one-hot, la función "index-crossentropy" opera directamente sobre los valores enteros de los objetivos categóricos.
El uso del índice de pérdida de entropía cruzada es adecuado para predicciones sobre muchas clases, donde los datos codificados one-hot presentan sobrecargas de memoria innecesarias.
Para especificar el índice de pérdida de entropía cruzada, especifique el argumento lossFcn como "index-crossentropy".
En lugar de la función trainNetwork se recomienda la función trainnet, ya que tiene estas ventajas:
trainnetadmite los objetosdlnetwork, que admiten una gama más amplia de arquitecturas de red que puede crear o importar desde plataformas externas.trainnetle permite especificar fácilmente funciones de pérdida. Puede seleccionar entre funciones de pérdida integradas o especificar una función de pérdida personalizada.trainnetproduce como salida un objetodlnetwork, que es un tipo de datos unificado que admite la creación de redes, la predicción, el entrenamiento integrado, la visualización, la compresión, la verificación y los bucles de entrenamiento personalizados.trainnetsuele ser más rápido quetrainNetwork.
Especifique los datos de características en memoria como un objeto minibatchqueue.
Especifique los datos de características en memoria como una tabla usando el argumento features.
Especifique la función de pérdida como un objeto deep.DifferentiableFunction.
Consulte también
dlnetwork | trainingOptions | testnet | minibatchpredict | scores2label | minibatchqueue | Deep Network Designer
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Seleccione un país/idioma
Seleccione un país/idioma para obtener contenido traducido, si está disponible, y ver eventos y ofertas de productos y servicios locales. Según su ubicación geográfica, recomendamos que seleccione: .
También puede seleccionar uno de estos países/idiomas:
Cómo obtener el mejor rendimiento
Seleccione China (en idioma chino o inglés) para obtener el mejor rendimiento. Los sitios web de otros países no están optimizados para ser accedidos desde su ubicación geográfica.
América
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- 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)