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]; numClasses = numel(categories(imds.Labels)); 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.
Extraiga los datos de imágenes y las etiquetas del almacén de datos de prueba.
XTest = readall(imdsTest); TTest = imdsTest.Labels; classNames = categories(TTest);
Concatene las imágenes en un arreglo numérico y conviértalo en único.
XTest = cat(4,XTest{:}); XTest = single(XTest);
Prediga las puntuaciones de clasificación utilizando la red entrenada y luego convierta las predicciones en etiquetas con la función onehotdecode
.
YTest = minibatchpredict(net,XTest); YTest = onehotdecode(YTest,classNames,2);
Visualice las predicciones en una gráfica de confusión.
confusionchart(TTest,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 = 2x1 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);
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 onehotdecode
.
YTest = minibatchpredict(net,XTest); YTest = onehotdecode(YTest,classNames,2);
Visualice las predicciones en una gráfica de confusión.
confusionchart(TTest,YTest)
Calcule la precisión de clasificación. La precisión es la proporción de etiquetas que la red predice correctamente.
accuracy = mean(YTest == TTest)
accuracy = 1
Argumentos de entrada
Datos
Datos de imágenes, especificados como un arreglo numérico, objeto dlarray
, almacén de datos u objeto minibatchqueue
.
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 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. La mayoría de las redes neuronales tienen 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 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 generar 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 ImageDatastore
permiten 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 objeto augmentedImageDatastore
. No use la propiedad ReadFcn
de objetos ImageDatastore
. Si establece la propiedad ReadFcn
como una función personalizada, el objeto ImageDatastore
no realiza la precarga de archivos de imágenes y suele ser bastante más lenta.
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, 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 o un objeto dlarray
, o un conjunto de datos de secuencias como un arreglo de celdas de arreglos numéricos u objetos dlarray
. Si especifica secuencias como un arreglo numé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 u objetos dlarray
, donde N es el número de observaciones. El tamaño y la forma de los arreglos numéricos u objetos dlarray
que representan secuencias dependen del tipo de datos de secuencia y deben ser coherentes con la opción de entrenamiento InputDataFormats
.
Esta tabla describe la distribución esperada de los datos para una red neuronal con una capa de entrada de secuencias.
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 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. |
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 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 generar 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.
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 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 canales de los datos de entrada. 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 generar 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.
Objetos numéricos o dlarray
Para datos 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
.
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.
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 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 generar 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 un objeto dlarray
con formato. Para obtener más información, consulte Deep Learning Data Formats.
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."index-crossentropy"
(desde R2024b): índice de pérdida de entropía cruzada para tareas de clasificación. Utilice esta opción para ahorrar memoria cuando haya muchas clases categóricas."binary-crossentropy"
: pérdida de entropía cruzada binaria para tareas de clasificación binarias y multietiqueta."mae"
/"mean-absolute-error"
/"l1loss"
: error medio absoluto para tareas de regresión."mse"
/"mean-squared-error"
/"l2loss"
: error cuadrático medio para tareas de regresión."huber"
: pérdida de Huber para tareas de regresiónIdentificador de función con la sintaxis
loss = f(Y1,...,Yn,T1,...,Tm)
, dondeY1,...,Yn
son objetosdlarray
que se corresponden con las predicciones de la redn
yT1,...,Tm
son objetosdlarray
que 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
PreprocessingEnvironment
en"background"
o"parallel"
.Los datos de entrenamiento sean un objeto
minibatchqueue
con la propiedadPreprocessingEnvironment
establecida 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
FunctionLayer
o 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 í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:
trainnet
admite los objetosdlnetwork
, que admiten una gama más amplia de arquitecturas de red que puede crear o importar desde plataformas externas.trainnet
le 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.trainnet
produce 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.trainnet
suele 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
.
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)