Main Content

Monitorizar el progreso del entrenamiento de deep learning

Este ejemplo muestra cómo monitorizar el proceso de entrenamiento en redes de deep learning.

Cuando entrena redes para deep learning, puede comprobar cómo progresa el entrenamiento representando varias métricas durante el proceso. Por ejemplo, puede determinar si la precisión de la red está mejorando y con qué rapidez, y si la red está empezando a sobreajustar los datos de entrenamiento.

En este ejemplo se muestra cómo monitorizar el progreso de entrenamiento para redes entrenadas usando la función trainnet. Para redes entrenadas con un bucle de entrenamiento personalizado, utilice un objeto trainingProgressMonitor para representar métricas durante el entrenamiento. Para obtener más información, consulte Monitor Custom Training Loop Progress.

Cuando establece la opción de entrenamiento Plots en "training-progress" para trainingOptions y comienza el entrenamiento de la red, la función trainnet crea una figura y muestra las métricas de entrenamiento en cada iteración. Cada iteración es una estimación del gradiente y una actualización de los parámetros de la red. Si se especifican los datos de validación en trainingOptions, la figura muestra las métricas de validación cada vez que trainnet valida la red. La figura representa la pérdida y cualquier métrica especificada por la opción nombre-valor Metrics. De manera predeterminada, el software utiliza una escala lineal para las gráficas. Para especificar una escala logarítmica para el eje y, seleccione el botón de escala logarítmica en la barra de herramientas de los ejes.

Durante el entrenamiento, puede detenerlo y devolver el estado actual de la red haciendo clic en el botón de stop de la esquina superior derecha. Una vez que haya hecho clic en el botón de stop, el entrenamiento podría tardar un poco antes de completarse. Una vez completado, trainnet devuelve la red entrenada.

Especifique la opción de entrenamiento OutputNetwork como "best-validation" para obtener valores finales que correspondan a la iteración con el mejor valor de métrica de validación, donde las opciones de entrenamiento ObjectiveMetricName especifican la métrica optimizada. Especifique la opción de entrenamiento OutputNetwork como "last-iteration" para obtener métricas finalizadas que correspondan a la última iteración de entrenamiento.

A la derecha del panel, vea la información sobre el tiempo de entrenamiento y los ajustes. Para obtener más información sobre las opciones de entrenamiento, consulte Configurar parámetros y entrenar una red neuronal convolucional.

Para guardar la gráfica del progreso de entrenamiento, haga clic en Export as Image en la ventana del entrenamiento. Puede guardar la gráfica como archivo PNG, JEPG, TIFF o PDF. También puede guardar de forma individual las gráficas con la barra de herramientas de los ejes.

Representar el progreso del entrenamiento durante el mismo

Entrene una red y represente el progreso de entrenamiento durante el mismo.

Cargue los datos de entrenamiento y de prueba de los archivos MAT DigitsDataTrain.mat y DigitsDataTest.mat, respectivamente. Cada conjunto de datos de entrenamiento y de prueba contiene 5000 imágenes.

load DigitsDataTrain.mat
load DigitsDataTest.mat

Cree un objeto dlnetwork.

net = dlnetwork;

Especifique las capas de la rama de clasificación y añádalas a la red.

layers = [
    imageInputLayer([28 28 1])
    convolution2dLayer(3,8,Padding="same")
    batchNormalizationLayer
    reluLayer   
    maxPooling2dLayer(2,Stride=2)
    convolution2dLayer(3,16,Padding="same")
    batchNormalizationLayer
    reluLayer
    maxPooling2dLayer(2,Stride=2)
    convolution2dLayer(3,32,Padding="same")
    batchNormalizationLayer
    reluLayer
    fullyConnectedLayer(10)
    softmaxLayer];

net = addLayers(net,layers);

Especifique opciones para el entrenamiento de la red. Para validar la red a intervalos regulares durante el entrenamiento, especifique los datos de validación. Registre los valores métricos para la precisión en una puntuación F. Para representar el progreso del entrenamiento durante el mismo, establezca la opción de entrenamiento Plots en "training-progress".

options = trainingOptions("sgdm", ...
    MaxEpochs=8, ...
    Metrics = ["accuracy","fscore"], ...
    ValidationData={XTest,labelsTest}, ...
    ValidationFrequency=30, ...
    Verbose=false, ...
    Plots="training-progress");

Entrene la red.

net = trainnet(XTrain,labelsTrain,net,"crossentropy",options);

Consulte también

| |

Temas relacionados