Main Content

Introducción a Deep Network Designer

Este ejemplo muestra cómo crear una red neuronal recurrente sencilla para la clasificación de secuencias de deep learning utilizando 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 permite introducir datos secuenciales en una red y hacer predicciones basadas en las unidades de tiempo individuales de los datos secuenciales.

Cargar datos secuenciales

Cargue los datos de ejemplo de WaveformData. Para acceder a los datos, abra el ejemplo como un script en vivo. Estos datos contienen formas de onda de cuatro clases: sinusoidal, cuadrada, triangular y onda de sierra. En este ejemplo se entrena una red neuronal de LSTM para reconocer el tipo de forma de onda dados los datos de series de tiempo. Cada secuencia cuenta con tres canales y diferentes longitudes.

load WaveformData 

Visualice algunas de las secuencias en una gráfica.

numChannels = size(data{1},2);
classNames = categories(labels);

figure
tiledlayout(2,2)
for i = 1:4
    nexttile
    stackedplot(data{i},DisplayLabels="Channel "+string(1:numChannels))
    
    xlabel("Time Step")
    title("Class: " + string(labels(i)))
end

Divida los datos en un conjunto de entrenamiento que contenga el 80% de los datos y en conjuntos de validación y prueba que contengan cada uno el 10% de los datos. Para dividir los datos, utilice la función trainingPartitions. Para acceder a esta función, abra el ejemplo como un script en vivo.

numObservations = numel(data);
[idxTrain,idxValidation,idxTest] = trainingPartitions(numObservations,[0.8 0.1 0.1]);

XTrain = data(idxTrain);
TTrain = labels(idxTrain);

XValidation = data(idxValidation);
TValidation = labels(idxValidation);

XTest = data(idxTest);
TTest = labels(idxTest);

Definir la arquitectura de red

Para crear la red, use la app Deep Network Designer.

deepNetworkDesigner

Para crear una red de secuencia, en la sección Sequence Networks, deténgase en Sequence to Label y haga clic en Open. Se abrirá una red preconstruida adecuada para problemas de clasificación de secuencia a etiqueta.

Deep Network Designer muestra la red preconstruida.

Puede adaptar fácilmente esta red de secuencia al conjunto de datos de forma de onda.

Seleccione la capa de entrada de secuencias input y establezca InputSize en 3 para que coincida con el número de canales.

Seleccione la capa totalmente conectada fc y establezca OutputSize en 4 para que coincida con el número de clases.

Para comprobar que la red está preparada para el entrenamiento, haga clic en Analyze. Dado que el analizador Deep Learning Network Analyzer no detecta ningún error o advertencia, la red está preparada para el entrenamiento. Para exportar la red, haga clic en Export. La app guarda la red en la variable net_1.

Especificar las opciones de entrenamiento

Especifique las opciones de entrenamiento. Para escoger entre las opciones se requiere un análisis empírico.

options = trainingOptions("adam", ...
    MaxEpochs=500, ...
    InitialLearnRate=0.0005, ...
    GradientThreshold=1, ...
    ValidationData={XValidation,TValidation}, ...
    Shuffle = "every-epoch", ...
    Plots="training-progress", ...
    Metrics="accuracy", ...
    Verbose=false);

Entrenar una red neuronal

Entrene la red neuronal con la función trainnet. Como el objetivo es la clasificación, especifique la pérdida de entropía cruzada.

net = trainnet(XTrain,TTrain,net_1,"crossentropy",options);

Probar una red neuronal

Para probar la red neuronal, clasifique los datos de prueba y calcule la precisión de la clasificación.

Realice predicciones con la función minibatchpredict y convierta las puntuaciones en etiquetas con la función scores2label.

scores = minibatchpredict(net,XTest);
YTest = scores2label(scores,classNames);

Calcule la precisión de clasificación. La precisión es el porcentaje de etiquetas predichas correctamente.

acc = mean(YTest == TTest)
acc = 0.8300

Visualice las predicciones en una gráfica de confusión.

figure
confusionchart(TTest,YTest)

Consulte también

Temas relacionados