Main Content

Esta página es para la versión anterior. La página correspondiente en inglés ha sido eliminada en la versión actual.

Crear una red de clasificación de secuencias sencilla utilizando Deep Network Designer

Este ejemplo muestra cómo crear una red de clasificación de memoria de corto-largo plazo (LSTM) sencilla con Deep Network Designer.

Para entrenar una red neuronal profunda con la que clasificar datos secuenciales, se puede utilizar una red de LSTM. Una red de LSTM es un tipo de red neuronal recurrente (RNN) que aprende dependencias a largo plazo entre unidades de tiempo de datos secuenciales.

Este ejemplo muestra cómo hacer lo siguiente:

  • Cargar datos secuenciales.

  • Construir la arquitectura de red.

  • Especificar las opciones de entrenamiento.

  • Entrenar la red.

  • Predecir las etiquetas de los datos nuevos y calcular la precisión de la clasificación.

Cargar datos

Cargue el conjunto de datos de vocales japonesas como se describe en [1] y [2]. Los predictores son arreglos de celdas que contienen secuencias de longitud variable con una dimensión de característica de 12. Las etiquetas son vectores categóricos de las etiquetas 1 a 9.

load JapaneseVowelsTrainData
load JapaneseVowelsTestData

Visualice los tamaños de las primeras secuencias de entrenamiento. Las secuencias son matrices con 12 filas (una fila por característica) y un número variable de columnas (una columna por unidad de tiempo).

XTrain(1:5)
ans=5×1 cell array
    {12×20 double}
    {12×26 double}
    {12×22 double}
    {12×20 double}
    {12×21 double}

Definir la arquitectura de red

Abra Deep Network Designer.

deepNetworkDesigner

Deténgase en Sequence-to-Label y haga clic en Open. Se abrirá una red preconstruida adecuada para problemas de clasificación de secuencias.

Deep Network Designer muestra la red preconstruida.

Puede adaptar fácilmente esta red de secuencia al conjunto de datos de vocales japonesas.

Seleccione sequenceInputLayer y compruebe que InputSize se ha establecido en 12 para coincidir con la dimensión de característica.

Seleccione lstmLayer y establezca NumHiddenUnits en 100.

Seleccione fullyConnectedLayer y compruebe que OutputSize se ha establecido en 9, el número de clases.

Comprobar la arquitectura de red

Para comprobar la red y obtener más información sobre las capas, haga clic en Analyze.

Exportar la arquitectura de red

Para exportar la arquitectura de red al área de trabajo, vaya a la pestaña Designer y haga clic en Export. Deep Network Designer guarda la red como la variable layers_1.

También puede generar código para crear la arquitectura de red seleccionando Export > Generate Network Code Without Parameters.

Entrenar la red

Especifique las opciones de entrenamiento y entrene la red.

Dado que los minilotes son pequeños y tienen secuencias cortas, la CPU es más adecuada para el entrenamiento. Establezca 'ExecutionEnvironment' en 'cpu'. Para realizar un entrenamiento en una GPU, si está disponible, establezca 'ExecutionEnvironment' en 'auto' (el valor por defecto).

miniBatchSize = 27;
options = trainingOptions('adam', ...
    'ExecutionEnvironment','cpu', ...
    'MaxEpochs',100, ...
    'MiniBatchSize',miniBatchSize, ...
    'ValidationData',{XValidation,TValidation}, ...
    'GradientThreshold',2, ...
    'Shuffle','every-epoch', ...
    'Verbose',false, ...
    'Plots','training-progress');

Entrene la red.

net = trainNetwork(XTrain,TTrain,layers_1,options);

También puede entrenar esta red con Deep Network Designer y objetos de almacén de datos. Para ver un ejemplo de cómo entrenar una red de regresión secuencia a secuencia en Deep Network Designer, consulte Build Time Series Forecasting Network Using Deep Network Designer.

Probar la red

Clasifique los datos de prueba y calcule la precisión de la clasificación. Especifique el mismo tamaño de minilote que en el entrenamiento.

YPred = classify(net,XValidation,'MiniBatchSize',miniBatchSize);
acc = mean(YPred == TValidation)
acc = 0.9405

En los siguientes pasos, pruebe a mejorar la precisión mediante capas LSTM bidireccionales (BiLSTM) o creando una red más profunda. Para obtener más información, consulte Redes neuronales de memoria de corto-largo plazo.

Para ver un ejemplo de cómo usar redes convolucionales para clasificar datos secuenciales, consulte Train Speech Command Recognition Model Using Deep Learning.

Referencias

[1] Kudo, Mineichi, Jun Toyama y Masaru Shimbo. “Multidimensional Curve Classification Using Passing-through Regions.” Pattern Recognition Letters 20, núm. 11–13 (noviembre de 1999): 1103–11. https://doi.org/10.1016/S0167-8655(99)00077-X.

[2] Kudo, Mineichi, Jun Toyama y Masaru Shimbo. Japanese Vowels Data Set. Distribuido por UCI Machine Learning Repository. https://archive.ics.uci.edu/ml/datasets/Japanese+Vowels

Consulte también

| |

Temas relacionados