Main Content

SeriesNetwork

(Déconseillé) Réseau série pour le Deep Learning

L’utilisation d’objets SeriesNetwork est déconseillée. Utilisez des objets dlnetwork à la place. Pour plus d’informations, veuillez consulter Historique des versions.

Description

Un réseau série est un réseau de neurones pour le Deep Learning dont les couches sont disposées l’une après l’autre. Il possède une seule couche d’entrée et une seule couche de sortie.

Création

Il existe plusieurs façons de créer un objet SeriesNetwork :

Remarque

Pour découvrir d’autres réseaux préentraînés comme googlenet et resnet50, veuillez consulter Pretrained Deep Neural Networks.

Propriétés

développer tout

Ce propriété est en lecture seule.

Couches du réseau, définies par un tableau Layer.

Ce propriété est en lecture seule.

Noms des couches d’entrée, définis par un cell array de vecteurs de caractères.

Types de données : cell

Ce propriété est en lecture seule.

Noms des couches de sortie, définis par un cell array de vecteurs de caractères.

Types de données : cell

Fonctions d'objet

activations(Not recommended) Compute deep learning network layer activations
classify(Not recommended) Classify data using trained deep learning neural network
predict(Not recommended) Predict responses using trained deep learning neural network
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
plotPlot neural network architecture

Exemples

réduire tout

Entraînez le réseau pour la classification d’images

Chargez les données comme un objet ImageDatastore.

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

Le datastore contient 10 000 images synthétiques de chiffres allant de 0 à 9. La génération des images s’effectue en appliquant des transformations aléatoires aux images de chiffres créées avec différentes polices. Chaque image pour un chiffre est une image de 28 x 28 pixels. Le datastore contient le même nombre d’images par catégorie.

Affichez certaines images dans le datastore.

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.

Divisez le datastore de sorte que chaque catégorie du jeu d’apprentissage contienne 750 images et que le jeu de test contienne les images restantes pour chaque étiquette.

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

splitEachLabel divise les fichiers image de digitData en deux nouveaux datastores, imdsTrain et imdsTest.

Définissez l’architecture du réseau de neurones à convolution.

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

Définissez les options en utilisant les paramètres par défaut pour la descente de gradient stochastique avec momentum. Définissez le nombre maximal d’epochs à 20 et commencez l’apprentissage avec un taux d’apprentissage initial de 0,0001.

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

Entraînez le réseau.

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.

Exécutez le réseau entraîné sur le jeu de test qui n’a pas servi à l’entraîner et réalisez les prédictions sur les étiquettes des images (chiffres).

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

Calculez la précision. La précision est le rapport entre le nombre d’étiquettes vraies dans les données de test qui correspondent aux classifications de classify et le nombre d’images dans ces données de test.

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

Capacités étendues

Historique des versions

Introduit dans R2016a

réduire tout

R2024a: Déconseillé

À partir de R2024a, l’utilisation d’objets SeriesNetwork est déconseillée. Utilisez les objets dlnetwork à la place.

Il n’est pas prévu de supprimer le support des objets SeriesNetwork. Cependant, les objets dlnetwork présentent les avantages suivants et sont recommandés à la place :

  • Un objet dlnetwork est un type de données unifié qui supporte la création de réseau, la prédiction, l’apprentissage prédéfini, la visualisation, la compression, la vérification et les boucles d’apprentissage personnalisées.

  • Les objets dlnetwork supportent un plus large éventail d’architectures de réseau que vous pouvez créer ou importer à partir de plateformes externes.

  • La fonction trainnet supporte les objets dlnetwork, ce qui vous permet de spécifier facilement des fonctions de perte. Vous pouvez sélectionner une fonction de perte prédéfinie ou spécifier une fonction de perte personnalisée.

  • L’apprentissage et la prédiction avec des objets dlnetwork sont généralement plus rapides que les workflows LayerGraph et trainNetwork.

Pour convertir un objet SeriesNetwork entraîné en objet dlnetwork, utilisez la fonction dag2dlnetwork.

Le tableau suivant indique quelques utilisations courantes des objets SeriesNetwork et comment mettre à jour votre code pour qu’il utilise les fonctions de l'objet dlnetwork à la place.

DéconseilléRecommandé
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;