Main Content

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.

Descripción

net = trainNetwork(images,layers,options) entrena la red neuronal especificada por layers para tareas de clasificación y regresión de imágenes utilizando las imágenes y respuestas especificadas por images y las opciones de entrenamiento definidas por options.

net = trainNetwork(images,responses,layers,options) entrena utilizando las imágenes especificadas por images y las respuestas especificadas por responses.

net = trainNetwork(sequences,layers,options) entrena una red neuronal para tareas de clasificación y regresión de secuencia y series de tiempo (por ejemplo, una red neuronal de LSTM o GRU) utilizando las secuencias y respuestas especificadas por sequences.

ejemplo

net = trainNetwork(sequences,responses,layers,options) entrena utilizando las secuencias especificadas por sequences y las respuestas especificadas por responses.

net = trainNetwork(features,layers,options) entrena una red neuronal para tareas de clasificación y de regresión de características (por ejemplo, una red neuronal de perceptrón multicapa [MLP]) utilizando los datos de características y las respuestas especificados por features.

net = trainNetwork(features,responses,layers,options) entrena utilizando los datos de características especificados por features y las respuestas especificadas por responses.

net = trainNetwork(mixed,layers,options) entrena una red neuronal con varias entradas con tipos de datos mezclados utilizando los datos y las respuestas especificados por mixed.

[net,info] = trainNetwork(___) también devuelve información sobre el entrenamiento utilizando cualquiera de las sintaxis anteriores.

Ejemplos

contraer todo

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

contraer todo

Datos de imágenes, especificados como uno de los siguientes:

Tipo de datosDescripciónEjemplo de uso
Almacén de datosImageDatastoreAlmacé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 AugmentedImageDatastore.

Los objetos ImageDatastore solo admiten tareas de clasificación de imágenes. Para utilizar almacenes de datos de imágenes para redes neuronales de regresión, cree un almacén de datos transformado o combinado que contenga las imágenes y las respuestas utilizando las funciones transform y combine, respectivamente.

AugmentedImageDatastoreAlmacén de datos que aplica transformaciones geométricas afines aleatorias, incluyendo cambio de tamaño, rotación, reflexión, estiramiento y traslación.

  • Entrenar redes neuronales de clasificación de imágenes con imágenes guardadas en disco, donde las imágenes tienen distintos tamaños.

  • Entrenar redes neuronales de clasificación de imágenes y generar nuevos datos utilizando aumentos.

TransformedDatastoreAlmacé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.

  • Entrenar redes neuronales de regresión de imágenes.

  • Entrenar redes neuronales con varias entradas.

  • Transformar almacenes de datos con salidas no compatibles con trainNetwork.

  • Aplicar transformaciones personalizadas a la salida del almacén de datos.

CombinedDatastoreAlmacén de datos que lee de dos o más almacenes de datos subyacentes.

  • Entrenar redes neuronales de regresión de imágenes.

  • Entrenar redes neuronales con varias entradas.

  • Combinar predictores y respuestas de diferentes fuentes de datos.

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 personalizadoAlmacé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éricoImá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.
TablaImá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.

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 neuronalSalida del almacén de datosEjemplo 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 (numInputs + 1) columnas, donde numInputs es el número de entradas de red neuronal.

Las primeras numInputs columnas especifican los predictores de cada entrada y la última columna especifica los objetivos.

El orden de las entradas se indica mediante la propiedad InputNames de la gráfica de capas layers.

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.

DatosFormato
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 3DArreglo 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.

TareaFormato de respuesta
Clasificación de imágenesEscalar categórico
Regresión de imágenes
  • Escalar numérico

  • Vector numérico

  • Arreglo numérico 3D que representa una imagen 2D

  • Arreglo numérico 4D que representa una imagen 3D

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.

DatosFormato
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 3DArreglo 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.

TareaFormato de respuesta
Clasificación de imágenesEscalar categórico
Regresión de imágenes
  • Escalar numérico

  • Dos o más columnas de valores escalares

  • Arreglo de celdas de 1 por 1 que contiene un arreglo numérico de h por w por c que representa una imagen 2D

  • Arreglo de celdas de 1 por 1 que contiene un arreglo numérico de h por w por d por c que representa una imagen 3D

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ón SplitComplexInputs de la capa de entrada debe ser 1 (true).

Secuencia o datos de series de tiempo, especificados como uno de los siguientes:

Tipo de datosDescripciónEjemplo de uso
Almacén de datosTransformedDatastoreAlmacé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.

  • Transformar almacenes de datos con salidas no compatibles con trainNetwork.

  • Aplicar transformaciones personalizadas a la salida del almacén de datos.

CombinedDatastoreAlmacé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 personalizadoAlmacé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 celdasUna ú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.

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 datosEjemplo 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.

DatosFormato 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.

TareaFormato de las respuestas
Clasificación secuencia a etiquetaEscalar categórico
Regresión de secuencia a uno

Escalar

Regresión de secuencia a vector

Vector fila numérico

Clasificación secuencia a secuencia

  • Secuencia de 1 por s de etiquetas categóricas, donde s es la longitud de secuencia de la secuencia de predictor correspondiente.

  • Secuencia de h por w por s de etiquetas categóricas, donde h, w y s son la altura, la anchura y la longitud de secuencia de la secuencia de predictor correspondiente, respectivamente.

  • Secuencia de h por w por d por s de etiquetas categóricas, donde h, w, d y s son la altura, la anchura, la profundidad y la longitud de secuencia de la secuencia de predictor correspondiente, respectivamente.

Cada secuencia del minilote debe tener la misma longitud de secuencia.

Regresión secuencia a secuencia
  • Matriz de R por s, donde R es el número de respuestas y s es la longitud de secuencia de la secuencia de predictor correspondiente.

  • Secuencia de h por w por R por s de respuestas numéricas, donde R es el número de respuestas y h, w y s son la altura, la anchura y la longitud de secuencia de la secuencia de predictor correspondiente, respectivamente.

  • Secuencia de h por w por d por R por s de respuestas numéricas, donde R es el número de respuestas y h, w, d y s son la altura, la anchura, la profundidad y la longitud de secuencia de la secuencia de predictor correspondiente, respectivamente.

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.

EntradaDescripción
Secuencias de vectoresMatrices 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 1DArreglos 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 2DArreglos 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 3DArreglos 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ón SplitComplexInputs de la capa de entrada debe ser 1 (true).

Datos de características, especificados como uno de los siguientes:

Tipo de datosDescripciónEjemplo de uso
Almacén de datosTransformedDatastoreAlmacé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.

  • Entrenar redes neuronales con varias entradas.

  • Transformar almacenes de datos con salidas no compatibles con trainNetwork.

  • Aplicar transformaciones personalizadas a la salida del almacén de datos.

CombinedDatastoreAlmacén de datos que lee de dos o más almacenes de datos subyacentes.

  • Entrenar redes neuronales con varias entradas.

  • Combinar predictores y respuestas de diferentes fuentes de datos.

Almacén de datos de minilotes personalizadoAlmacé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.

TablaDatos 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éricoDatos 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.

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 neuronalSalida del almacén de datosEjemplo 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 (numInputs + 1) columnas, donde numInputs es el número de entradas de red neuronal.

Las primeras numInputs columnas especifican los predictores de cada entrada y la última columna especifica las respuestas.

El orden de las entradas se indica mediante la propiedad InputNames de la gráfica de capas layers.

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.

TareaFormato de las respuestas
ClasificaciónEscalar categórico
Regresión

  • Escalar

  • Vector numérico

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.

TareaPredictoresRespuestas
Clasificación de características

Características especificadas en una o más columnas como escalares.

Si no especifica el argumento responses, los predictores deberán estar en las primeras columnas numFeatures de la tabla, donde numFeatures es el número de características de los datos de entrada.

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 valores NaN, 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ón SplitComplexInputs de la capa de entrada debe ser 1 (true).

Datos mezclados y respuestas, especificados como uno de los siguientes:

Tipo de datosDescripciónEjemplo de uso
TransformedDatastoreAlmacé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.

  • Entrenar redes neuronales con varias entradas.

  • Transformar salidas de almacenes de datos no compatibles con trainNetwork para que tengan el formato requerido.

  • Aplicar transformaciones personalizadas a la salida del almacén de datos.

CombinedDatastoreAlmacén de datos que lee de dos o más almacenes de datos subyacentes.

  • Entrenar redes neuronales con varias entradas.

  • Combinar predictores y respuestas de diferentes fuentes de datos.

Almacén de datos de minilotes personalizadoAlmacé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 datosEjemplo de salida

Arreglo de celdas con (numInputs + 1) columnas, donde numInputs es el número de entradas de red neuronal.

Las primeras numInputs columnas especifican los predictores de cada entrada y la última columna especifica las respuestas.

El orden de las entradas se indica mediante la propiedad InputNames de la gráfica de capas layers.

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ón SplitComplexInputs de la capa de entrada debe ser 1 (true).

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.

TareaFormato
ClasificaciónClasificación de imágenesVector 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, sequences también puede ser un vector. En ese caso, responses debe ser un vector fila categórico de etiquetas.

RegresiónRegresión de imágenes 2D
  • Matriz de N por R, en la que N es el número de observaciones y R es el número de respuestas.

  • 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.

Regresión de imágenes 3D
  • Matriz de N por R, en la que N es el número de observaciones y R es el número de respuestas.

  • 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.

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 unoMatriz 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:

  • Matriz de R por s, donde R es el número de respuestas y s es la longitud de secuencia de la secuencia de predictor correspondiente.

  • Arreglo de h por w por R por s, donde h y w son la altura y la anchura de la salida, respectivamente, R es el número de respuestas y s es la longitud de secuencia de la secuencia de predictor correspondiente.

  • Arreglo de h por w por d por R por s, donde h, w y d son la altura, la anchura y la profundidad de la salida, respectivamente, R es el número de respuestas y s es la longitud de secuencia de la secuencia de predictor correspondiente.

Para tareas de regresión secuencia a secuencia con una observación, sequences puede ser un arreglo numérico. En ese caso, responses debe ser un arreglo numérico de respuestas.

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.

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.

Opciones de entrenamiento, especificadas como objeto TrainingOptionsSGDM, TrainingOptionsRMSProp o TrainingOptionsADAM devuelto por la función trainingOptions.

Argumentos de salida

contraer todo

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.

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érdida

  • TrainingAccuracy: precisiones de entrenamiento

  • ValidationLoss: valores de función de pérdida

  • ValidationAccuracy: precisiones de validación

  • BaseLearnRate: tasas de aprendizaje

  • FinalValidationLoss: pérdida de validación de la red neuronal devuelta

  • FinalValidationAccuracy: precisión de validación de la red neuronal devuelta

  • OutputNetworkIteration: 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érdida

  • TrainingRMSE: valores RMSE de entrenamiento

  • ValidationLoss: valores de función de pérdida

  • ValidationRMSE: valores RMSE de validación

  • BaseLearnRate: tasas de aprendizaje

  • FinalValidationLoss: pérdida de validación de la red neuronal devuelta

  • FinalValidationRMSE: RMSE de validación de la red neuronal devuelta

  • OutputNetworkIteration: 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

contraer todo

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
Puede retomar el entrenamiento utilizando las capas de la red neuronal como argumento de entrada para trainNetwork. Por ejemplo:

trainNetwork(XTrain,TTrain,net.Layers,options)
Debe especificar manualmente las opciones de entrenamiento y los datos de entrada, ya que la red neuronal de puntos de control no contiene esta información.

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

Historial de versiones

Introducido en R2016a

expandir todo

R2024a: 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 objetos dlnetwork, 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 objeto dlnetwork, 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 que trainNetwork.

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 recomendadoRecomendado
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.