Contenido principal

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

expandir todo

Historial de versiones

Introducido en R2016a

contraer todo