Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

SeriesNetwork

(No recomendado) Red en serie de deep learning

Los objetos SeriesNetwork no están recomendados. En su lugar, use los objetos dlnetwork. Para obtener más información, consulte Historial de versiones.

Descripción

Una red en serie es una red neuronal de deep learning con capas dispuestas una detrás de otra. Tiene una única capa de entrada y una sola capa de salida.

Creación

Hay varias formas de crear un objeto SeriesNetwork:

Nota

Para obtener información sobre otras redes preentrenadas, como googlenet y resnet50, consulte Redes neuronales profundas preentrenadas.

Propiedades

expandir todo

Esta propiedad o parámetro es de solo lectura.

Capas de la red, especificadas como un arreglo Layer.

Esta propiedad o parámetro es de solo lectura.

Nombres de las capas de entrada, especificados como un arreglo de celdas de vectores de caracteres.

Tipos de datos: cell

Esta propiedad o parámetro es de solo lectura.

Nombres de las capas de salida, especificados como un arreglo de celdas de vectores de caracteres.

Tipos de datos: cell

Funciones del objeto

activations(No recomendado) Calcular las activaciones de las capas de una red de deep learning
classify(No recomendado) Clasificar datos con una red neuronal de deep learning entrenada
predict(No recomendado) Predecir respuestas usando una red neuronal de deep learning entrenada
predictAndUpdateState(Not recommended) Predict responses using a trained recurrent neural network and update the network state
classifyAndUpdateState(Not recommended) Classify data using a trained recurrent neural network and update the network state
resetStateReset state parameters of neural network
plotRepresentar una arquitectura de red neuronal

Ejemplos

contraer todo

Entrene la red para clasificar imágenes

Cargue los datos como un objeto ImageDatastore.

digitDatasetPath = fullfile(matlabroot,'toolbox','nnet', ...
    'nndemos','nndatasets','DigitDataset');
imds = imageDatastore(digitDatasetPath, ...
    'IncludeSubfolders',true, ...
    'LabelSource','foldernames');

El almacén de datos contiene 10.000 imágenes sintéticas con dígitos del 0 al 9. Las imágenes se generan aplicando transformaciones al azar a imágenes de dígitos creadas con diferentes fuentes. Cada imagen de dígito tiene 28 por 28 píxeles. El almacén de datos contiene la misma cantidad de imágenes por categoría.

Muestre algunas de las imágenes del almacén de datos.

figure
numImages = 10000;
perm = randperm(numImages,20);
for i = 1:20
    subplot(4,5,i);
    imshow(imds.Files{perm(i)});
    drawnow;
end

Figure contains 20 axes objects. Axes object 1 contains an object of type image. Axes object 2 contains an object of type image. Axes object 3 contains an object of type image. Axes object 4 contains an object of type image. Axes object 5 contains an object of type image. Axes object 6 contains an object of type image. Axes object 7 contains an object of type image. Axes object 8 contains an object of type image. Axes object 9 contains an object of type image. Axes object 10 contains an object of type image. Axes object 11 contains an object of type image. Axes object 12 contains an object of type image. Axes object 13 contains an object of type image. Axes object 14 contains an object of type image. Axes object 15 contains an object of type image. Axes object 16 contains an object of type image. Axes object 17 contains an object of type image. Axes object 18 contains an object of type image. Axes object 19 contains an object of type image. Axes object 20 contains an object of type image.

Divida el almacén de datos de forma que cada categoría del conjunto de entrenamiento contenga 750 imágenes y el conjunto de prueba contenga el resto de las imágenes de cada etiqueta.

numTrainingFiles = 750;
[imdsTrain,imdsTest] = splitEachLabel(imds,numTrainingFiles, ...
    'randomize');

splitEachLabel divide los archivos de imagen de digitData en dos nuevos almacenes de datos, imdsTrain y imdsTest.

Defina la arquitectura de la red neuronal convolucional.

layers = [ ...
    imageInputLayer([28 28 1])
    convolution2dLayer(5,20)
    reluLayer
    maxPooling2dLayer(2,'Stride',2)
    fullyConnectedLayer(10)
    softmaxLayer
    classificationLayer];

Establezca la configuración predeterminada de las opciones del gradiente descendente estocástico con momento. Establezca el número máximo de épocas en 20 y comience el entrenamiento con una tasa de aprendizaje inicial de 0,0001.

options = trainingOptions('sgdm', ...
    'MaxEpochs',20,...
    'InitialLearnRate',1e-4, ...
    'Verbose',false, ...
    'Plots','training-progress');

Entrene la red.

net = trainNetwork(imdsTrain,layers,options);

Figure Training Progress (15-Aug-2023 20:45:20) contains 2 axes objects and another object of type uigridlayout. Axes object 1 with xlabel Iteration, ylabel Loss contains 6 objects of type patch, text, line. Axes object 2 with xlabel Iteration, ylabel Accuracy (%) contains 6 objects of type patch, text, line.

Ejecute la red entrenada en el conjunto de pruebas, que no se ha utilizado para entrenar la red, y prediga las etiquetas de imagen (dígitos).

YPred = classify(net,imdsTest);
YTest = imdsTest.Labels;

Calcule la precisión. La precisión es la relación entre el número de etiquetas verdaderas de los datos de prueba que coinciden con las clasificaciones de classify y el número de imágenes de los datos de prueba.

accuracy = sum(YPred == YTest)/numel(YTest)
accuracy = 0.9416

Capacidades ampliadas

Historial de versiones

Introducido en R2016a

contraer todo

R2024a: No recomendado

A partir de la versión R2024a, los objetos SeriesNetwork no están recomendados. En su lugar, utilice los objetos dlnetwork.

No está previsto eliminar el soporte para los objetos SeriesNetwork. Sin embargo, en su lugar se recomiendan los objetos dlnetwork, que tienen estas ventajas:

  • Los objetos dlnetwork son 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.

  • Los objetos dlnetwork admiten una gama más amplia de arquitecturas de red que puede crear o importar desde plataformas externas.

  • La función trainnet admite objetos dlnetwork, lo que 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.

  • Entrenar y predecir con los objetos dlnetwork suele ser más rápido que los flujos de trabajo LayerGraph y trainNetwork.

Para convertir un objeto SeriesNetwork entrenado en un objeto dlnetwork, utilice la función dag2dlnetwork.

Esta tabla muestra algunos usos habituales de los objetos SeriesNetwork y cómo actualizar el código para usar funciones de objeto dlnetwork en su lugar.

No recomendadoRecomendado
Y = predict(net,X);
Y = minibatchpredict(net,X);
Y = classify(net,X);
scores = minibatchpredict(net,X);
Y = scores2label(scores,classNames);
plot(net);
plot(net);
Y = activations(net,X,layerName);
Y = predict(net,X,Outputs=layerName);
[net,Y] = predictAndUpdateState(net,X);
[Y,state] = predict(net,X);
net.State = state;
[net,Y] = classifyAndUpdateState(net,X);
[scores,state] = predict(net,X);
Y = scores2label(scores,classNames);
net.State = state;