Main Content

Configurar parámetros y entrenar una red neuronal convolucional

Para especificar las opciones de entrenamiento para la función trainnet, utilice la función trainingOptions. Pase el objeto de opciones resultante a la función trainnet.

Por ejemplo, para crear un objeto de opciones de entrenamiento que especifique:

  • Entrenar con el solver de estimación de momento adaptativo (Adam).

  • Entrenar durante un máximo de cuatro épocas.

  • Monitorizar el progreso del entrenamiento en una gráfica y monitorizar la métrica de precisión.

  • Deshabilitar la salida detallada.

utilice:

options = trainingOptions("adam", ...
    MaxEpochs=4, ...
    Plots="training-progress", ...
    Metrics="accuracy", ...
    Verbose=false);

Para entrenar la red con estas opciones de entrenamiento, utilice:

net = trainnet(data,layers,lossFcn,options);

Nota

Este tema describe algunas de las opciones de entrenamiento que se suelen usar. Las opciones incluidas en esta lista son únicamente un subconjunto. Para obtener una lista completa, consulte trainingOptions.

Solvers

El solver es el algoritmo que utiliza la función de entrenamiento para optimizar los parámetros que se pueden aprender. Especifique el solver usando el primer argumento de la función trainingOptions. Por ejemplo, para crear un objeto de opciones de entrenamiento con la configuración predeterminada del optimizador Adam, utilice:

options = trainingOptions("adam");

Para obtener más información, consulte trainingOptions.

Sugerencia

Hay diferentes solvers que son más adecuados para distintas tareas. El solver Adam suele ser un buen optimizador con el que probar primero.

Opciones de monitorización

Para monitorizar el progreso del entrenamiento, puede mostrar las métricas de entrenamiento en una gráfica. Por ejemplo, para monitorizar la precisión en una gráfica y deshabilitar la salida detallada, utilice:

options = trainingOptions("adam", ...
    Plots="training-progress", ...
    Metrics="accuracy", ...
    Verbose=false);

Para obtener más información, consulte trainingOptions.

Opciones de formato de datos

La mayoría de las redes y funciones de deep learning operan de forma distinta en diferentes dimensiones de los datos de entrada.

Por ejemplo, una operación de LSTM itera sobre la dimensión de tiempo de los datos de entrada, mientras que una operación de normalización de lote normaliza sobre la dimensión de lote de los datos de entrada.

En la mayoría de los casos, puede pasar sus datos de entrenamiento directamente a la red. Si tiene datos dispuestos en una distribución diferente a la que la red espera, puede especificar la distribución de los datos usando los formatos de datos.

Un formato de datos es una cadena de caracteres, en la que cada carácter describe el tipo de la dimensión de datos correspondiente.

Los caracteres son los siguientes:

  • "S": espacial

  • "C": canal

  • "B": lote

  • "T": tiempo

  • "U": sin especificar

Por ejemplo, considere un arreglo que contiene un lote de secuencias, donde la primera, la segunda y la tercera dimensión corresponden a canales, observaciones y unidades de tiempo, respectivamente. Puede especificar que este arreglo tenga el formato "CBT" (canal, lote, tiempo).

Si tiene datos que tienen una distribución diferente a la que la red espera, generalmente es más fácil proporcionar la información del formato de los datos que remodelar y preprocesar sus datos. Por ejemplo, para especificar que tiene datos secuenciales, donde la primera, la segunda y la tercera dimensión corresponden a canales, observaciones y unidades de tiempo respectivamente, especifique que los datos de entrada tienen el formato "CBT" (canal, lote, tiempo) usando:

options = trainingOptions("adam", ...
    InputDataFormats="CBT");

Para obtener más información, consulte trainingOptions.

Opciones de solvers estocásticos

Los solvers estocásticos entrenan redes neuronales iterando sobre minilotes de datos y actualizando los parámetros de la red neuronal que se pueden aprender. Puede especificar opciones de solvers estocásticos que controlen los minilotes, épocas (pases completos por los datos de entrenamiento), tasa de aprendizaje y otras configuraciones específicas del solver, como el momento para el solver de gradiente descendente estocástico con momento (SGDM). Por ejemplo, para especificar un tamaño de minilote de 16 con una tasa de aprendizaje inicial de 0,01, utilice:

options = trainingOptions("adam", ...
    MiniBatchSiize=16, ...
    InitialLearnRate=0.01);

Para obtener más información, consulte trainingOptions.

Sugerencia

Si, durante el entrenamiento, la pérdida del minilote se vuelve NaN, la tasa de aprendizaje es demasiado alta. Pruebe a reducir la tasa de aprendizaje, como por un factor de 3, y a continuación reinicie el entrenamiento de la red.

Opciones del solver L-BFGS

El solver Broyden–Fletcher–Goldfarb–Shanno de memoria limitada (L-BFGS) es un solver de lote completo, lo que significa que procesa el conjunto de entrenamiento completo en una única iteración. Puede especificar opciones de solvers L-BFGS que controlan las iteraciones (pases completos de entrenamiento de los datos), la búsqueda lineal y otras configuraciones específicas del solver. Por ejemplo, para especificar un entrenamiento de 2000 iteraciones con el L-BFGS y buscar una tasa de aprendizaje que satisfaga las condiciones fuertes de Wolfe, utilice:

options = trainingOptions("lbfgs", ...
    MaxIterations=2000, ...
    LineSearchMethod="strong-wolfe");

Para obtener más información, consulte trainingOptions.

Opciones de validación

Puede monitorizar el progreso del entrenamiento utilizando un conjunto de datos de validación retenidos. Ejecutar la validación en intervalos regulares durante el entrenamiento le ayuda a determinar si su red se está sobreajustando a los datos de entrenamiento. Para comprobar si su red se está sobreajustando, compare las métricas de entrenamiento con las métricas de validación correspondientes. Si las métricas de entrenamiento son significativamente mejores que las métricas de validación, entonces la red podría estar sobreajustándose. Por ejemplo, para especificar un conjunto de datos de validación y validar la red cada 100 iteraciones, utilice:

options = trainingOptions("adam", ...
    ValidationData={XValidation,TValidation}, ...
    ValidationFrequency=100);

Si su red tiene capas que se comportan de forma diferente durante la predicción y durante el entrenamiento (por ejemplo, capas de abandono), entonces las métricas de validación pueden ser mejores que las métricas de entrenamiento.

Para obtener más información, consulte trainingOptions.

Opciones de regularización y normalización

Puede evitar el sobreajuste y mejorar la convergencia mediante la regularización y la normalización. La regularización puede ayudar a evitar el sobreajuste añadiendo un término de penalización a la función de pérdida. La normalización puede mejorar la convergencia y la estabilidad al escalar los datos de entrada a un intervalo estándar. Por ejemplo, para especificar un factor de regularización L2 de 0,0002, utilice:

options = trainingOptions("adam", ...
    L2Regularization=0.0002);

Para obtener más información, consulte trainingOptions.

Opciones de recorte de gradiente

Para evitar que un gradiente grande introduzca errores en el proceso de entrenamiento, puede limitar la magnitud de los gradientes. Por ejemplo, para escalar los gradientes para que tengan una magnitud igual a 2, utilice:

options = trainingOptions("adam", ...
    GradientThresholdMethod="absolute-value", ...
    GradientThreshold=2);

Para obtener más información, consulte trainingOptions.

Opciones de secuencia

El entrenamiento de una red neuronal generalmente requiere datos con tamaños fijos, por ejemplo, secuencias con el mismo número de canales y unidades de tiempo. Para transformar lotes de secuencias para que tengan la misma longitud, puede especificar opciones de relleno y truncamiento. Por ejemplo, para rellenar a la izquierda los minilotes para que las secuencias de cada minilote tengan la misma longitud, utilice:

options = trainingOptions("adam", ...
    SequencePaddingDirection="left");

Para obtener más información, consulte trainingOptions.

Opciones de hardware y aceleración

De forma predeterminada, el software se entrena con una GPU compatible, si se dispone de ella. Para utilizar una GPU se requiere una licencia de Parallel Computing Toolbox™. Para obtener información sobre los dispositivos compatibles, consulte GPU Computing Requirements (Parallel Computing Toolbox). Puede especificar opciones de hardware y aceleración adicionales. Por ejemplo, para especificar el uso de varias GPU en una máquina, empleando un grupo paralelo local basado en su perfil de cluster predeterminado, utilice:

options = trainingOptions("adam", ...
    ExecutionEnvironment="multi-gpu");

Para obtener más información, consulte trainingOptions.

Opciones de punto de control

Para redes grandes y conjuntos de datos grandes, la ejecución del entrenamiento puede llevar mucho tiempo. Para guardar periódicamente la red durante el entrenamiento, puede guardar redes de puntos de control. Por ejemplo, para guardar una red de puntos de control cada 5 épocas en la carpeta denominada "checkpoints", utilice:

options = trainingOptions("adam", ...
    CheckpointPath="checkpoints", ...
    CheckpointFrequency=5);

Si el entrenamiento se ve interrumpido por alguna razón, podrá retomarlo a partir de la última red neuronal de puntos de control guardada.

Para obtener más información, consulte trainingOptions.

Consulte también

| |

Temas relacionados