trainNetwork
(No recomendado) Entrenar una red neuronal
No se recomienda el uso de trainNetwork
. Utilice la función trainnet
en su lugar. Para obtener más información, consulte Historial de versiones.
Sintaxis
Descripción
Ejemplos
Entrenar la red para clasificar secuencias
Entrene una red de LSTM de deep learning para la clasificación secuencia a etiqueta.
Cargue los datos de ejemplo de WaveformData.mat
. Los datos son un arreglo de celdas de numObservations
por 1 de secuencias, donde numObservations
es el número de secuencias. Cada secuencia es un arreglo numérico de numChannels
por -numTimeSteps
, donde numChannels
es el número de canales de la secuencia y numTimeSteps
es el número de unidades de tiempo de la secuencia.
load WaveformData
Visualice algunas de las secuencias en una gráfica.
numChannels = size(data{1},1); idx = [3 4 5 12]; figure tiledlayout(2,2) for i = 1:4 nexttile stackedplot(data{idx(i)}', ... DisplayLabels="Channel " + string(1:numChannels)) xlabel("Time Step") title("Class: " + string(labels(idx(i)))) end
Reserve datos para pruebas. Divida los datos en un conjunto de entrenamiento que contenga el 90% de los datos y en un conjunto de prueba que contenga el 10% 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 = numel(data); [idxTrain,idxTest] = trainingPartitions(numObservations, [0.9 0.1]); XTrain = data(idxTrain); TTrain = labels(idxTrain); XTest = data(idxTest); TTest = labels(idxTest);
Defina la arquitectura de la red de LSTM. Especifique el tamaño de la entrada como el número de canales de los datos de entrada. Especifique una capa de LSTM con 120 unidades ocultas y que genere el último elemento de la secuencia. Por último, incluya una totalmente conectada con un tamaño de salida que coincida con el número de clases, seguida de una capa softmax y de una de clasificación.
numHiddenUnits = 120; numClasses = numel(categories(TTrain)); layers = [ ... sequenceInputLayer(numChannels) lstmLayer(numHiddenUnits,OutputMode="last") fullyConnectedLayer(numClasses) softmaxLayer classificationLayer]
layers = 5×1 Layer array with layers: 1 '' Sequence Input Sequence input with 3 dimensions 2 '' LSTM LSTM with 120 hidden units 3 '' Fully Connected 4 fully connected layer 4 '' Softmax softmax 5 '' Classification Output crossentropyex
Especifique las opciones de entrenamiento. Entrene usando el solver Adam con una tasa de aprendizaje del 0.01 y un umbral de gradiente de 1. Establezca el número máximo de épocas en 150 y redistribuya el orden de cada época. De forma predeterminada, el software se entrena en una GPU, si se dispone de ella. Utilizar una GPU requiere Parallel Computing Toolbox™ y un dispositivo GPU compatible. Para obtener información sobre los dispositivos compatibles, consulte GPU Computing Requirements (Parallel Computing Toolbox).
options = trainingOptions("adam", ... MaxEpochs=150, ... InitialLearnRate=0.01,... Shuffle="every-epoch", ... GradientThreshold=1, ... Verbose=false, ... Plots="training-progress");
Entrene la red de LSTM con las opciones de entrenamiento especificadas.
net = trainNetwork(XTrain,TTrain,layers,options);
Clasifique los datos de prueba. Especifique el mismo tamaño de minilote utilizado para el entrenamiento.
YTest = classify(net,XTest);
Calcule la precisión de clasificación de las predicciones.
acc = mean(YTest == TTest)
acc = 0.8400
Muestre los resultados de la clasificación en una gráfica de confusión.
figure confusionchart(TTest,YTest)
Argumentos de entrada
images
— Datos de imágenes
almacén de datos | Arreglo numérico | tabla
Datos de imágenes, especificados como uno de los siguientes:
Tipo de datos | Descripción | Ejemplo de uso | |
---|---|---|---|
Almacén de datos | ImageDatastore | Almacén de datos de imágenes guardadas en disco. | Entrenar redes neuronales de clasificación de imágenes con imágenes guardadas en disco, donde las imágenes tienen el mismo tamaño. Si las imágenes tienen diferentes tamaños, use un objeto Los objetos |
AugmentedImageDatastore | Almacén de datos que aplica transformaciones geométricas afines aleatorias, incluyendo cambio de tamaño, rotación, reflexión, estiramiento y traslación. |
| |
TransformedDatastore | Almacén de datos que transforma lotes de datos leídos de un almacén de datos subyacente mediante una función de transformación personalizada. |
| |
CombinedDatastore | Almacén de datos que lee de dos o más almacenes de datos subyacentes. |
| |
PixelLabelImageDatastore (Computer Vision Toolbox) | Almacén de datos que aplica transformaciones geométricas afines idénticas a imágenes y etiquetas de píxeles correspondientes. | Entrenar redes neuronales para la segmentación semántica. | |
RandomPatchExtractionDatastore (Image Processing Toolbox) | Almacén de datos que extrae pares de zonas aleatorias de imágenes o imágenes de etiquetas de píxeles y aplica opcionalmente transformaciones geométricas afines aleatorias idénticas a los pares. | Entrenar redes neuronales para la detección de objetos. | |
DenoisingImageDatastore (Image Processing Toolbox) | Almacén de datos que aplica ruido gaussiano generado aleatoriamente. | Entrenar redes neuronales para eliminar el ruido de una imagen. | |
Almacén de datos de minilotes personalizado | Almacén de datos personalizado que devuelve minilotes de datos. | Entrenar redes neuronales usando datos en un formato no compatible con otros almacenes de datos. Para obtener más detalles, consulte Develop Custom Mini-Batch Datastore. | |
Arreglo numérico | Imágenes especificadas como arreglo numérico. Si especifica imágenes como arreglo numérico, también debe especificar el argumento responses . | Entrenar redes neuronales usando datos que quepan en la memoria y no requieran procesamiento adicional, como un aumento. | |
Tabla | Imágenes especificadas como tabla. Si especifica imágenes como tabla, también puede especificar qué columnas contienen las respuestas utilizando el argumento responses . | Entrenar redes neuronales usando datos guardados en una tabla. |
Para redes neuronales con varias entradas, el almacén de datos debe ser un objeto TransformedDatastore
o CombinedDatastore
.
Sugerencia
Para secuencias de imágenes, por ejemplo, datos de vídeo, use el argumento de entrada sequences
.
Almacén de datos
Los almacenes de datos leen minilotes de imágenes y respuestas. Los almacenes de datos son más adecuados cuando tiene datos que no caben en la memoria o cuando quiera aplicar aumentos o transformaciones a los datos.
La siguiente lista enumera almacenes de datos que son directamente compatibles con trainNetwork
para datos de imágenes.
PixelLabelImageDatastore
(Computer Vision Toolbox)RandomPatchExtractionDatastore
(Image Processing Toolbox)DenoisingImageDatastore
(Image Processing Toolbox)Almacén de datos de minilotes personalizado. Para obtener más detalles, consulte Develop Custom Mini-Batch Datastore.
Por ejemplo, puede crear un almacén de datos de imágenes utilizando la función imageDatastore
y usar los nombres de las carpetas que contienen las imágenes como etiquetas estableciendo la opción 'LabelSource'
en 'foldernames'
. Como alternativa, puede especificar las etiquetas manualmente con la propiedad Labels
del almacén de datos de imágenes.
Sugerencia
Use augmentedImageDatastore
para preprocesar eficiente de las imágenes para deep learning, incluyendo el cambio de tamaño de las imágenes. No use la opción ReadFcn
de objetos ImageDatastore
.
ImageDatastore
permite leer lotes de archivos de imágenes JPG o PNG mediante precarga. Si establece la opción ReadFcn
como una función personalizada, ImageDatastore
no realiza la precarga y suele ser bastante más lenta.
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 requerido por trainNetwork
.
Para redes neuronales con varias entradas, el almacén de datos debe ser un objeto TransformedDatastore
o CombinedDatastore
.
El formato requerido de la salida del almacén de datos depende de la arquitectura de red neuronal.
Arquitectura de red neuronal | Salida del almacén de datos | Ejemplo de salida |
---|---|---|
Capa de entrada única | Tabla o arreglo de celdas con dos columnas. La primera y la segunda columna especifican los predictores y 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. | 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 |
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]} | ||
Capas de entrada múltiples | Arreglo de celdas con ( Las primeras El orden de las entradas se indica mediante la propiedad | Arreglo de celdas para red neuronal con dos entradas y una salida. data = read(ds) data = 4×3 cell array {224×224×3 double} {128×128×3 double} {[2]} {224×224×3 double} {128×128×3 double} {[2]} {224×224×3 double} {128×128×3 double} {[9]} {224×224×3 double} {128×128×3 double} {[9]} |
El formato de los predictores depende del tipo de datos.
Datos | Formato |
---|---|
Imágenes 2D | Arreglo numérico de h por w por c, donde h, w y c son la altura, la anchura y el número de canales de las imágenes, respectivamente. |
Imágenes 3D | Arreglo numérico de h por w por d por c, donde h, w, d y c son la altura, la anchura, la profundidad y el número de canales de las imágenes, respectivamente. |
Para predictores devueltos en tablas, los elementos deben contener un escalar numérico, un vector fila numérico o un arreglo de celdas de 1 por 1 con el arreglo numérico.
El formato de las respuestas depende del tipo de tarea.
Tarea | Formato de respuesta |
---|---|
Clasificación de imágenes | Escalar categórico |
Regresión de imágenes |
|
Para respuestas devueltas en tablas, los elementos deben ser un escalar categórico, un escalar numérico, un vector fila numérico o un arreglo de celdas de 1 por 1 con un arreglo numérico.
Para obtener más información, consulte Datastores for Deep Learning.
Arreglo numérico
Para datos que quepan en la memoria y no requieran procesamiento adicional, como aumento, puede especificar un conjunto de datos de imágenes como arreglo numérico. Si especifica imágenes como arreglo numérico, también debe especificar el argumento responses
.
El tamaño y la forma del arreglo numérico dependen del tipo de datos de imágenes.
Datos | Formato |
---|---|
Imágenes 2D | Arreglo numérico de h por w por c por N, en el que h, w y c son la altura, la anchura y el número de canales de las imágenes, respectivamente, y N es el número de imágenes. |
Imágenes 3D | Arreglo numérico de h por w por d por c por N, en el que h, w, d y c son la altura, la anchura, la profundidad y el número de canales de las imágenes, respectivamente, y N es el número de imágenes. |
Tabla
Como alternativa a los almacenes de datos o arreglos numéricos, también puede especificar imágenes y respuestas en una tabla. Si especifica imágenes como tabla, también puede especificar qué columnas contienen las respuestas utilizando el argumento responses
.
Cuando se especifican imágenes y respuestas en una tabla, cada fila de la tabla corresponde a una observación.
Para entradas de imagen, los predictores deben estar en la primera columna de la tabla, especificados como una de las siguientes opciones:
Ruta de archivo absoluta o relativa a una imagen, especificada como vector de caracteres.
Arreglo de celdas de 1 por 1 que contiene un arreglo numérico de h por w por c que representa una imagen 2D, donde h, w y c corresponden a la altura, la anchura y el número de canales de la imagen, respectivamente.
El formato de las respuestas depende del tipo de tarea.
Tarea | Formato de respuesta |
---|---|
Clasificación de imágenes | Escalar categórico |
Regresión de imágenes |
|
Para redes neuronales con entrada de imágenes, si no especifica responses
, la función, de forma predeterminada, utilizará la primera columna tbl
para los predictores y las columnas posteriores como respuestas.
Sugerencia
Si los predictores o las respuestas contienen valores
NaN
, estos se propagan a lo largo de la red neuronal durante el entrenamiento. En esos casos, normalmente el entrenamiento no converge.Para las tareas de regresión, normalizar las respuestas suele ayudar a estabilizar y acelerar el entrenamiento de las redes neuronales para la regresión. Para obtener más información, consulte Entrenar una red neuronal convolucional para regresión.
Este argumento admite predictores de valores complejos. Para entrenar una red con predictores de valores complejos mediante la función
trainNetwork
, la opciónSplitComplexInputs
de la capa de entrada debe ser1
(true
).
sequences
— Secuencia o datos de series de tiempo
almacén de datos | arreglo de celdas de arreglos numéricos | Arreglo numérico
Secuencia o datos de series de tiempo, especificados como uno de los siguientes:
Tipo de datos | Descripción | Ejemplo de uso | |
---|---|---|---|
Almacén de datos | TransformedDatastore | Almacén de datos que transforma lotes de datos leídos de un almacén de datos subyacente mediante una función de transformación personalizada. |
|
CombinedDatastore | Almacén de datos que lee de dos o más almacenes de datos subyacentes. | Combinar predictores y respuestas de diferentes fuentes de datos. | |
Almacén de datos de minilotes personalizado | Almacén de datos personalizado que devuelve minilotes de datos. | Entrenar redes neuronales usando datos en un formato no compatible con otros almacenes de datos. Para obtener más detalles, consulte Develop Custom Mini-Batch Datastore. | |
Arreglo numérico o de celdas | Una única secuencia especificada como arreglo numérico o un conjunto de datos de secuencias especificado como arreglo de celdas de arreglos numéricos. Si especifica secuencias como arreglo numérico o de celdas, también debe especificar el argumento responses . | Entrenar redes neuronales usando datos que quepan en la memoria y no requieran procesamiento adicional, como transformaciones personalizadas. |
Almacén de datos
Los almacenes de datos leen minilotes de secuencias y respuestas. Los almacenes de datos son más adecuados cuando tiene datos que no caben en la memoria o cuando quiera aplicar transformaciones a los datos.
La siguiente lista enumera almacenes de datos que son directamente compatibles con trainNetwork
para datos secuenciales.
Almacén de datos de minilotes personalizado. Para obtener más detalles, consulte Develop Custom Mini-Batch Datastore.
Puede utilizar otros almacenes de datos integrados para entrenar redes 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 trainNetwork
. Por ejemplo, puede transformar y combinar datos leídos de arreglos en memoria y archivos CVS mediante objetos ArrayDatastore
y TabularTextDatastore
, respectivamente.
El almacén de datos debe devolver datos en una tabla o arreglo de celdas. Los almacenes de datos de minilotes personalizados deben producir tablas como salida.
Salida del almacén de datos | Ejemplo de salida |
---|---|
Tabla | data = read(ds) data = 4×2 table Predictors Response __________________ ________ {12×50 double} 2 {12×50 double} 7 {12×50 double} 9 {12×50 double} 9 |
Arreglo de celdas | data = read(ds) data = 4×2 cell array {12×50 double} {[2]} {12×50 double} {[7]} {12×50 double} {[9]} {12×50 double} {[9]} |
El formato de los predictores depende del tipo de datos.
Datos | Formato de los predictores |
---|---|
Secuencia de vector | Matriz de c por s, donde c es el número de características de la secuencia y s es la longitud de la secuencia. |
Secuencia de imágenes 1D | Arreglo de h por c por s, donde h y c corresponden a la altura y el número de canales de la imagen, respectivamente, y s es la longitud de la secuencia. Cada secuencia del minilote debe tener la misma longitud de secuencia. |
Secuencia de imágenes 2D | Arreglo de h por w por c por s, donde h, w y c corresponden a la altura, la anchura y el número de canales de la imagen, respectivamente, y s es la longitud de la secuencia. Cada secuencia del minilote debe tener la misma longitud de secuencia. |
Secuencia de imágenes 3D | Arreglo de h por w por d por c por s, donde h, w, d y c corresponden a la altura, la anchura, la profundidad y el número de canales de la imagen, respectivamente, y s es la longitud de la secuencia. Cada secuencia del minilote debe tener la misma longitud de secuencia. |
Para predictores devueltos en tablas, los elementos deben contener un escalar numérico, un vector fila numérico o un arreglo de celdas de 1 por 1 con un arreglo numérico.
El formato de las respuestas depende del tipo de tarea.
Tarea | Formato de las respuestas |
---|---|
Clasificación secuencia a etiqueta | Escalar categórico |
Regresión de secuencia a uno | Escalar |
Regresión de secuencia a vector | Vector fila numérico |
Clasificación secuencia a secuencia |
Cada secuencia del minilote debe tener la misma longitud de secuencia. |
Regresión secuencia a secuencia |
Cada secuencia del minilote debe tener la misma longitud de secuencia. |
Para respuestas devueltas en tablas, los elementos deben ser un escalar categórico, un escalar numérico, un vector fila numérico o un arreglo de celdas de 1 por 1 con un arreglo numérico.
Para obtener más información, consulte Datastores for Deep Learning.
Arreglo numérico o de celdas
Para datos que quepan en la memoria y no requieran procesamiento adicional, como transformaciones personalizadas, puede especificar una única secuencia como arreglo numérico o un conjunto de datos de secuencias como un arreglo de celdas de arreglos numéricos. Si especifica secuencias como arreglo de celdas o numérico, también debe especificar el argumento responses
.
Para entradas en forma de arreglo de celdas, el arreglo de celdas debe ser un arreglo de celdas de N por 1 de arreglos numéricos, donde N es el número de observaciones. El tamaño y la forma del arreglo numérico que representa una secuencia depende del tipo de datos secuenciales.
Entrada | Descripción |
---|---|
Secuencias de vectores | Matrices de c por s, donde c es el número de características de las secuencias y s es la longitud de la secuencia. |
Secuencias de imágenes 1D | Arreglos de h por c por s, donde h y c corresponden a la altura y el número de canales de las imágenes, respectivamente, y s es la longitud de la secuencia. |
Secuencias de imágenes 2D | Arreglos de h por w por c por s, donde h, w y c corresponden a la altura, la anchura y el número de canales de las imágenes, respectivamente, y s es la longitud de la secuencia. |
Secuencias de imágenes 3D | Arreglos de h por w por d por c por s, donde h, w, d y c corresponden a la altura, la anchura, la profundidad y el número de canales de las imágenes 3D, respectivamente, y s es la longitud de la secuencia. |
La función trainNetwork
admite redes neuronales con al menos una capa de entrada de secuencias.
Sugerencia
Si los predictores o las respuestas contienen valores
NaN
, estos se propagan a lo largo de la red neuronal durante el entrenamiento. En esos casos, normalmente el entrenamiento no converge.Para tareas de regresión, normalizar las respuestas suele ayudar a estabilizar y acelerar el entrenamiento. Para obtener más información, consulte Entrenar una red neuronal convolucional para regresión.
Este argumento admite predictores de valores complejos. Para entrenar una red con predictores de valores complejos mediante la función
trainNetwork
, la opciónSplitComplexInputs
de la capa de entrada debe ser1
(true
).
features
— Datos de características
almacén de datos | Arreglo numérico | tabla
Datos de características, especificados como uno de los siguientes:
Tipo de datos | Descripción | Ejemplo de uso | |
---|---|---|---|
Almacén de datos | TransformedDatastore | Almacén de datos que transforma lotes de datos leídos de un almacén de datos subyacente mediante una función de transformación personalizada. |
|
CombinedDatastore | Almacén de datos que lee de dos o más almacenes de datos subyacentes. |
| |
Almacén de datos de minilotes personalizado | Almacén de datos personalizado que devuelve minilotes de datos. | Entrenar redes neuronales usando datos en un formato no compatible con otros almacenes de datos. Para obtener más detalles, consulte Develop Custom Mini-Batch Datastore. | |
Tabla | Datos de características especificados como una tabla. Si especifica características como tabla, también puede especificar qué columnas contienen las respuestas utilizando el argumento responses . | Entrenar redes neuronales usando datos guardados en una tabla. | |
Arreglo numérico | Datos de características especificados como un arreglo numérico. Si especifica características como arreglo numérico, también debe especificar el argumento responses . | Entrenar redes neuronales usando datos que quepan en la memoria y no requieran procesamiento adicional, como transformaciones personalizadas. |
Almacén de datos
Los almacenes de datos leen minilotes de datos de características y respuestas. Los almacenes de datos son más adecuados cuando tiene datos que no caben en la memoria o cuando quiera aplicar transformaciones a los datos.
La siguiente lista enumera almacenes de datos que son directamente compatibles con trainNetwork
para datos de características.
Almacén de datos de minilotes personalizado. Para obtener más detalles, consulte Develop Custom Mini-Batch Datastore.
Puede utilizar otros almacenes de datos integrados para entrenar redes 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 trainNetwork
. Para obtener más información, consulte Datastores for Deep Learning.
Para redes neuronales con varias entradas, el almacén de datos debe ser un objeto TransformedDatastore
o CombinedDatastore
.
El almacén de datos debe devolver datos en una tabla o arreglo de celdas. Los almacenes de datos de minilotes personalizados deben producir tablas como salida. El formato de la salida del almacén de datos depende de la arquitectura de red neuronal.
Arquitectura de red neuronal | Salida del almacén de datos | Ejemplo de salida |
---|---|---|
Capa de entrada única | Tabla o arreglo de celdas con dos columnas. La primera y la segunda columna especifican los predictores y la respuesta, respectivamente. Los elementos de la tabla deben ser escalares, vectores fila o arreglos de celdas de 1 por 1 que contengan un arreglo numérico. Los almacenes de datos de minilotes personalizados deben producir tablas como salida. | Tabla para red neuronal con una entrada y una salida: data = read(ds) data = 4×2 table Predictors Response __________________ ________ {24×1 double} 2 {24×1 double} 7 {24×1 double} 9 {24×1 double} 9 |
Arreglo de celdas para red neuronal con una entrada y una salida:
data = read(ds) data = 4×2 cell array {24×1 double} {[2]} {24×1 double} {[7]} {24×1 double} {[9]} {24×1 double} {[9]} | ||
Capas de entrada múltiples | Arreglo de celdas con ( Las primeras El orden de las entradas se indica mediante la propiedad | Arreglo de celdas para red neuronal con dos entradas y una salida: data = read(ds) data = 4×3 cell array {24×1 double} {28×1 double} {[2]} {24×1 double} {28×1 double} {[2]} {24×1 double} {28×1 double} {[9]} {24×1 double} {28×1 double} {[9]} |
Los predictores deben ser vectores columna de c por 1, donde c es el número de características.
El formato de las respuestas depende del tipo de tarea.
Tarea | Formato de las respuestas |
---|---|
Clasificación | Escalar categórico |
Regresión |
|
Para obtener más información, consulte Datastores for Deep Learning.
Tabla
Para datos de características que quepan en la memoria y no requieran procesamiento adicional, como transformaciones personalizadas, puede especificar datos de características y respuestas como una tabla.
Cada fila de la tabla corresponde a una observación. El ajuste de predictores y respuestas en las columnas de la tabla depende del tipo de tarea.
Tarea | Predictores | Respuestas |
---|---|---|
Clasificación de características | Características especificadas en una o más columnas como escalares. Si no especifica el argumento | Etiqueta categórica |
Regresión de características | Una o más columnas de valores escalares |
Para redes neuronales de clasificación con entrada de características, si no especifica el argumento responses
, la función, de forma predeterminada, utilizará las primeras columnas (numColumns - 1
) de tbl
para los predictores y la última columna para las etiquetas, donde numFeatures
es el número de características de los datos de entrada.
Para redes neuronales de regresión con entrada de características, si no especifica el argumento responseNames
, la función, de forma predeterminada, utilizará las primeras columnas numFeatures
para los predictores y las columnas posteriores para las respuestas, donde numFeatures
es el número de características de los datos de entrada.
Arreglo numérico
Para datos de características que quepan en la memoria y no requieran procesamiento adicional, como transformaciones personalizadas, puede especificar datos de características como un arreglo numérico. Si especifica datos de características como arreglo numérico, también debe especificar el argumento responses
.
El arreglo numérico debe ser un arreglo numérico de N por numFeatures
, donde N es el número de observaciones y numFeatures
es el número de características de los datos de entrada.
Sugerencia
Normalizar las respuestas suele ayudar a estabilizar y acelerar el entrenamiento de las redes neuronales para la regresión. Para obtener más información, consulte Entrenar una red neuronal convolucional para regresión.
Las respuestas no pueden contener valores
NaN
. Si los datos del predictor contienen valoresNaN
, estos se propagan a lo largo de la red. Sin embargo, en la mayoría de los casos, el entrenamiento no converge.Este argumento admite predictores de valores complejos. Para entrenar una red con predictores de valores complejos mediante la función
trainNetwork
, la opciónSplitComplexInputs
de la capa de entrada debe ser1
(true
).
mixed
— Datos mezclados
almacén de datos
Datos mezclados y respuestas, especificados como uno de los siguientes:
Tipo de datos | Descripción | Ejemplo de uso |
---|---|---|
TransformedDatastore | Almacén de datos que transforma lotes de datos leídos de un almacén de datos subyacente mediante una función de transformación personalizada. |
|
CombinedDatastore | Almacén de datos que lee de dos o más almacenes de datos subyacentes. |
|
Almacén de datos de minilotes personalizado | Almacén de datos personalizado que devuelve minilotes de datos. | Entrenar redes neuronales usando datos en un formato no compatible con otros almacenes de datos. Para obtener más detalles, consulte Develop Custom Mini-Batch Datastore. |
Puede utilizar otros almacenes de datos integrados para entrenar redes 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 trainNetwork
. Para obtener más información, consulte Datastores for Deep Learning.
El almacén de datos debe devolver datos en una tabla o arreglo de celdas. Los almacenes de datos de minilotes personalizados deben producir tablas como salida. El formato de la salida del almacén de datos depende de la arquitectura de red neuronal.
Salida del almacén de datos | Ejemplo de salida |
---|---|
Arreglo de celdas con ( Las primeras El orden de las entradas se indica mediante la propiedad | data = read(ds) data = 4×3 cell array {24×1 double} {28×1 double} {[2]} {24×1 double} {28×1 double} {[2]} {24×1 double} {28×1 double} {[9]} {24×1 double} {28×1 double} {[9]} |
Para entradas de predictor de imagen, secuencia y característica, el formato de los predictores debe coincidir con los formatos descritos en las descripciones de los argumentos images
, sequences
o features
, respectivamente. Del mismo modo, el formato de las respuestas debe coincidir con los formatos descritos en las descripciones de los argumentos images
, sequences
o features
que se corresponden con el tipo de tarea.
La función trainNetwork
admite redes neuronales con al menos una capa de entrada de secuencias.
Para ver un ejemplo de cómo entrenar una red neuronal con varias entradas, consulte Entrenar una red con datos de características y de imagen.
Sugerencia
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.Este argumento admite predictores de valores complejos. Para entrenar una red con predictores de valores complejos mediante la función
trainNetwork
, la opciónSplitComplexInputs
de la capa de entrada debe ser1
(true
).
responses
— Respuestas
vector categórico | Arreglo numérico | arreglo de celdas de secuencias | vector de caracteres | arreglo de celdas de vectores de caracteres | arreglo de cadena
Respuestas.
Cuando los datos de entrada son un arreglo numérico o un arreglo de celdas, especifique las respuestas como uno de los siguientes elementos.
vector categórico de etiquetas
arreglo numérico de respuestas numéricas
arreglo de celdas de secuencias categóricas o numéricas
Cuando los datos de entrada son una tabla, puede especificar opcionalmente qué columnas de la tabla contienen las respuestas como uno de los siguientes elementos:
vector de caracteres
arreglo de celdas de vectores de caracteres
arreglo de cadena
Cuando los datos de entrada son un arreglo numérico o un arreglo de celdas, el formato de las respuestas depende del tipo de tarea.
Tarea | Formato | |
---|---|---|
Clasificación | Clasificación de imágenes | Vector categórico de etiquetas de N por 1, en el que N es el número de observaciones. |
Clasificación de características | ||
Clasificación secuencia a etiqueta | ||
Clasificación secuencia a secuencia | Arreglo de celdas de N por 1 de secuencias categóricas de etiquetas, en el que N es el número de observaciones. Cada secuencia debe tener el mismo número de unidades de tiempo que la secuencia de predictor correspondiente. Para tareas de clasificación secuencia a secuencia con una observación, | |
Regresión | Regresión de imágenes 2D |
|
Regresión de imágenes 3D |
| |
Regresión de características | Matriz de N por R, en la que N es el número de observaciones y R es el número de respuestas. | |
Regresión de secuencia a uno | Matriz de N por R, en la que N es el número de secuencias y R es el número de respuestas. | |
Regresión secuencia a secuencia | Arreglo de celdas de N por 1 de secuencias numéricas, donde N es el número de secuencias, con secuencias dadas por uno de los siguientes elementos:
Para tareas de regresión secuencia a secuencia con una observación, |
Sugerencia
Normalizar las respuestas suele ayudar a estabilizar y acelerar el entrenamiento de las redes neuronales para la regresión. Para obtener más información, consulte Entrenar una red neuronal convolucional para regresión.
Sugerencia
Las respuestas no pueden contener valores NaN
. Si los datos del predictor contienen valores NaN
, estos se propagan a lo largo de la red. Sin embargo, en la mayoría de los casos, el entrenamiento no converge.
layers
— Capas de red neuronal
arreglo Layer
| objeto LayerGraph
Capas de red neuronal, especificadas como arreglo Layer
u objeto LayerGraph
.
Para crear una red neuronal con todas las capas conectadas secuencialmente, puede utilizar un arreglo Layer
como argumento de entrada. En ese caso, la red neuronal devuelta es un objeto SeriesNetwork
.
Una red neuronal gráfica acíclica dirigida (DAG) presenta una estructura compleja en la que las capas tienen varias entradas y salidas. Para crear una red neuronal DAG, especifique la arquitectura de red neuronal como objeto LayerGraph
y utilice esa gráfica de capas como argumento de entrada para trainNetwork
.
La función trainNetwork
admite redes neuronales con al menos una capa de entrada de secuencias.
Para ver una lista de capas integradas, consulte Lista de capas de deep learning.
options
— Opciones de entrenamiento
TrainingOptionsSGDM
| TrainingOptionsRMSProp
| TrainingOptionsADAM
Opciones de entrenamiento, especificadas como objeto TrainingOptionsSGDM
, TrainingOptionsRMSProp
o TrainingOptionsADAM
devuelto por la función trainingOptions
.
Argumentos de salida
net
— Redes neuronales entrenadas
objeto SeriesNetwork
| objeto DAGNetwork
Red neuronal entrenada, devuelta como objeto SeriesNetwork
o DAGNetwork
.
Si entrena la red neuronal con un arreglo Layer
, net
es un objeto SeriesNetwork
. Si entrena la red neuronal con un objeto LayerGraph
, net
es un objeto DAGNetwork
.
info
— Información de entrenamiento
Estructura
Información de entrenamiento, devuelta como estructura, donde cada campo es un escalar o un vector numérico con un elemento por iteración de entrenamiento.
Para tareas de clasificación, info
contiene los siguientes campos:
TrainingLoss
: valores de función de pérdidaTrainingAccuracy
: precisiones de entrenamientoValidationLoss
: valores de función de pérdidaValidationAccuracy
: precisiones de validaciónBaseLearnRate
: tasas de aprendizajeFinalValidationLoss
: pérdida de validación de la red neuronal devueltaFinalValidationAccuracy
: precisión de validación de la red neuronal devueltaOutputNetworkIteration
: número de iteración de la red neuronal devuelta
Para tareas de regresión, info
contiene los siguientes campos:
TrainingLoss
: valores de función de pérdidaTrainingRMSE
: valores RMSE de entrenamientoValidationLoss
: valores de función de pérdidaValidationRMSE
: valores RMSE de validaciónBaseLearnRate
: tasas de aprendizajeFinalValidationLoss
: pérdida de validación de la red neuronal devueltaFinalValidationRMSE
: RMSE de validación de la red neuronal devueltaOutputNetworkIteration
: número de iteración de la red neuronal devuelta
La estructura solo contiene los campos ValidationLoss
, ValidationAccuracy
, ValidationRMSE
, FinalValidationLoss
, FinalValidationAccuracy
y FinalValidationRMSE
cuando options
especifica datos de validación. La opción de entrenamiento ValidationFrequency
determina en qué iteraciones calcula el software las métricas de validación. Las métricas de validación finales son un escalar. Los otros campos de la estructura son vectores fila, donde cada elemento se corresponde con una iteración de entrenamiento. Para iteraciones en las que el software no calcula las métricas de validación, los valores correspondientes en la estructura son valores NaN
.
Para redes neuronales que contienen capas de normalización de lotes, si la opción de entrenamiento BatchNormalizationStatistics
es 'population'
, las métricas de validación finales suelen ser diferentes de las métricas de validación evaluadas durante el entrenamiento. Esto se debe a que las capas de normalización de lotes en la red neuronal final llevan a cabo operaciones distintas de las que se realizan durante el entrenamiento. Para obtener más información, consulte batchNormalizationLayer
.
Más acerca de
Guardar redes neuronales de puntos de control y retomar el entrenamiento
Deep Learning Toolbox™ permite guardar redes neuronales como archivos .mat durante el entrenamiento. Este guardado periódico resulta especialmente útil cuando tiene una red neuronal o un conjunto de datos grandes y el entrenamiento lleva mucho tiempo. Si el entrenamiento se ve interrumpido por alguna razón, podrá retomarlo a partir de la última red neuronal de puntos de control guardada. Si desea que la función trainNetwork
guarde redes neuronales de puntos de control, debe especificar el nombre de la ruta usando la opción CheckpointPath
de trainingOptions
. Si la ruta que especifica no existe, trainingOptions
devuelve un error.
El software asigna automáticamente nombres únicos a los archivos de redes neuronales de puntos de control. En el nombre de ejemplo, net_checkpoint__351__2018_04_12__18_09_52.mat
, 351 es el número de iteración, 2018_04_12
es la fecha y 18_09_52
es la hora a la que el software guarda la red neuronal. Puede cargar un archivo de redes neuronales de puntos de control haciendo doble clic sobre él o utilizando el comando de carga en la línea de comandos. Por ejemplo:
load net_checkpoint__351__2018_04_12__18_09_52.mat
trainNetwork
. Por ejemplo:trainNetwork(XTrain,TTrain,net.Layers,options)
Aritmética de punto flotante
Cuando entrena una red neuronal mediante las funciones trainnet
o trainNetwork
o cuando usa las funciones de predicción o validación con objetos DAGNetwork
y SeriesNetwork
, el software realiza estos cálculos utilizando aritmética de precisión simple y de punto flotante. Las funciones para predicción y validación incluyen predict
, classify
y activations
. El software utiliza aritmética de precisión simple cuando entrena redes neuronales usando tanto CPU como GPU.
Reproducibilidad
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.
Capacidades ampliadas
Soporte paralelo automático
Acelere código mediante la ejecución automática de cálculo paralelo mediante Parallel Computing Toolbox™.
Para ejecutar el cálculo en paralelo, establezca la opción de entrenamiento ExecutionEnvironment
en "multi-gpu"
o "parallel"
.
Utilice trainingOptions
para establecer la opción de entrenamiento ExecutionEnvironment
y proporcionar las opciones a trainNetwork
. Si no establece ExecutionEnvironment
, trainNetwork
se ejecuta en una GPU si esta está disponible.
Para obtener más detalles, consulte Scale Up Deep Learning in Parallel, on GPUs, and in the Cloud.
Arreglos GPU
Acelere código mediante la ejecución en una unidad de procesamiento gráfico (GPU) mediante Parallel Computing Toolbox™.
Para evitar errores de falta de memoria, la práctica recomendada es no mover grandes conjuntos de datos de entrenamiento a la GPU. En su lugar, entrene la red neuronal en una GPU utilizando
trainingOptions
para establecer el entornoExecutionEnvironment
en"auto"
o"gpu"
y proporcionar las opciones atrainNetwork
.La opción
ExecutionEnvironment
debe ser"auto"
o"gpu"
cuando los datos de entrada son:Un
gpuArray
Un arreglo de celdas que contiene objetos
gpuArray
Una tabla que contiene objetos
gpuArray
Un almacén de datos que produce como salida arreglos de celdas que contienen objetos
gpuArray
Un almacén de datos que produce como salida tablas que contienen objetos
gpuArray
Para obtener más información, consulte Run MATLAB Functions on a GPU (Parallel Computing Toolbox).
Historial de versiones
Introducido en R2016aR2024a: No recomendado
A partir de la versión R2024a, la función trainNetwork
no está recomendada. En su lugar, utilice la función trainnet
.
No está previsto eliminar el soporte para la función trainNetwork
. Sin embargo, en su lugar se recomienda la función trainnet
, 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
.
Esta tabla muestra algunos usos habituales de la función trainNetwork
y cómo actualizar el código para usar la función trainnet
en su lugar.
No recomendado | Recomendado |
---|---|
net = trainNetwork(data,layers,options); | net = trainnet(data,layers,lossFcn,options); |
net = trainNetwork(X,T,layers,options); | net = trainnet(X,T,layers,lossFcn,options); |
En lugar de utilizar una capa de salida, especifique una función de pérdida con lossFcn
.
R2022b: trainNetwork
rellena minilotes hasta la longitud de la secuencia más larga antes de dividirla cuando se especifica la opción de entrenamiento SequenceLength
como un número entero
A partir de la versión R2022b, cuando se entrena una red neuronal con datos secuenciales utilizando la función trainNetwork
y la opción SequenceLength
es un número entero, el software rellena las secuencias hasta la longitud de la secuencia más larga en cada minilote y, luego, divide las secuencias en minilotes con la longitud de secuencia especificada. Si SequenceLength
no divide uniformemente la longitud de la secuencia del minilote, entonces el último minilote dividido tiene una longitud más corta que SequenceLength
. Este comportamiento evita el entrenamiento de la red neuronal en unidades de tiempo que contengan solo valores de relleno.
En versiones anteriores, el software rellena los minilotes de secuencias para que tengan una longitud que coincida con el múltiplo más cercano de SequenceLength
que sea mayor o igual a la longitud del minilote y, luego, divide los datos. Para reproducir este comportamiento, utilice un ciclo de entrenamiento personalizado e implemente este comportamiento al preprocesar minilotes de datos.
R2021b: trainNetwork
detiene automáticamente el entrenamiento cuando la pérdida es un valor NaN
Cuando entrena una red neuronal mediante la función trainNetwork
, el entrenamiento se detiene automáticamente cuando la pérdida es un valor NaN
. Normalmente, un valor de pérdida de NaN
introduce valores NaN
en los parámetros de la red neuronal que se pueden aprender, lo cual a su vez puede provocar que la red neuronal no sea capaz de entrenarse o de hacer predicciones válidas. Este cambio ayuda a identificar problemas con la red neuronal antes de que se complete el entrenamiento.
En versiones anteriores, la red neuronal sigue entrenándose cuando la pérdida es un valor NaN
.
R2021a: Se eliminará el soporte para especificar tablas de rutas de archivo MAT
Cuando especifique datos secuenciales para la función trainNetwork
, el soporte para especificar tablas de rutas de archivo MAT se eliminará en una versión futura.
Para entrenar redes neuronales con secuencias que no caben en la memoria, utilice un almacén de datos. Puede utilizar cualquier almacén de datos para leer sus datos y después utilizar la función transform
para transformar la salida del almacén de datos al formato que requiere la función trainNetwork
. Por ejemplo, puede leer datos utilizando un objeto FileDatastore
o TabularTextDatastore
y después transformar la salida utilizando la función transform
.
Consulte también
trainnet
| trainingOptions
| dlnetwork
| minibatchpredict
| scores2label
| predict
| analyzeNetwork
| Deep Network Designer
Temas
- Crear una red neuronal de deep learning sencilla para clasificación
- Retrain Neural Network to Classify New Images
- Entrenar una red neuronal convolucional para regresión
- Clasificación de secuencias mediante deep learning
- Entrenar una red con datos de características y de imagen
- Deep learning en MATLAB
- Definir capas de deep learning personalizadas
- Lista de capas de deep learning
Comando de MATLAB
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)