Contenu principal

trainNetwork

(Déconseillé) Entraîner un réseau de neurones

L’utilisation de trainNetwork est déconseillée. Utilisez la fonction trainnet à la place. Pour plus d’informations, veuillez consulter Historique des versions.

Description

net = trainNetwork(images,layers,options) entraîne le réseau de neurones spécifié par layers pour les tâches de classification et de régression d'images en utilisant les images et les réponses spécifiées par images et les options d'apprentissage définies par options.

net = trainNetwork(images,responses,layers,options) effectue l’apprentissage en utilisant les images définies par images et les réponses définies par responses.

net = trainNetwork(sequences,layers,options) entraîne un réseau de neurones pour les tâches de classification et de régression de séquences ou de séries temporelles (par exemple, un réseau de neurones LSTM ou GRU) en utilisant les séquences et les réponses définies par sequences.

net = trainNetwork(sequences,responses,layers,options) effectue l’apprentissage en utilisant les séquences définies par sequences et les réponses définies par responses.

exemple

net = trainNetwork(features,layers,options) entraîne un réseau de neurones pour les tâches de classification et de régression de caractéristiques (par exemple, un réseau de neurones multicouche Perceptron (MLP)) en utilisant les caractéristiques et les réponses définies par features.

net = trainNetwork(features,responses,layers,options) effectue l’apprentissage en utilisant les données de caractéristique spécifiées par features et les réponses spécifiées par responses.

net = trainNetwork(mixed,layers,options) entraîne un réseau de neurones à entrées multiples avec des types de données mixtes dont les données et réponses sont spécifiées par mixed.

[net,info] = trainNetwork(___) renvoie également des informations sur l’apprentissage en utilisant l’une des syntaxes précédentes.

Exemples

réduire tout

Entraînez un réseau LSTM de Deep Learning pour une classification sequence-to-label.

Chargez les données d'exemple depuis WaveformData.mat. Les données sont un cell array de séquences de dimension numObservations x 1, où numObservations est le nombre de séquences. Chaque séquence est un tableau numérique de dimension numChannels x -numTimeSteps, où numChannels est le nombre de canaux de la séquence et numTimeSteps est le nombre de pas de temps de la séquence.

load WaveformData

Visualisez certaines des séquences dans un tracé.

numChannels = size(data{1},1);

idx = [3 4 5 12];
figure
tiledlayout(2,2)
for i = 1:4
    nexttile
    stackedplot(data{idx(i)}', ...
        DisplayLabels="Channel " + string(1:numChannels))
    
    xlabel("Time Step")
    title("Class: " + string(labels(idx(i))))
end

Réservez des données pour les tests. Partitionnez les données entre un jeu d’apprentissage contenant 90 % des données et un jeu de test contenant les 10 % restants. Pour partitionner les données, utilisez la fonction trainingPartitions jointe à cet exemple comme fichier de support. Pour accéder à ce fichier, ouvrez l’exemple en tant que live script.

numObservations = numel(data);
[idxTrain,idxTest] = trainingPartitions(numObservations, [0.9 0.1]);
XTrain = data(idxTrain);
TTrain = labels(idxTrain);

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

Définissez l’architecture du réseau LSTM. Définissez la taille d’entrée comme étant le nombre de canaux des données en entrée. Définissez une couche LSTM avec 120 unités cachées et configurez-la pour qu'elle donne en sortie le dernier élément de la séquence. Enfin, ajoutez une couche entièrement connectée avec une taille de sortie correspondant au nombre de classes, suivi d’une couche softmax et d’une couche de classification.

numHiddenUnits = 120;
numClasses = numel(categories(TTrain));

layers = [ ...
    sequenceInputLayer(numChannels)
    lstmLayer(numHiddenUnits,OutputMode="last")
    fullyConnectedLayer(numClasses)
    softmaxLayer
    classificationLayer]
layers = 
  5×1 Layer array with layers:

     1   ''   Sequence Input          Sequence input with 3 dimensions
     2   ''   LSTM                    LSTM with 120 hidden units
     3   ''   Fully Connected         4 fully connected layer
     4   ''   Softmax                 softmax
     5   ''   Classification Output   crossentropyex

Spécifiez les options d’apprentissage. Effectuez l’apprentissage en utilisant le solveur Adam avec un taux d'apprentissage de 0,01 et un seuil de gradient de 1. Définissez le nombre maximal d’epochs sur 150 et mélangez les données à chaque epoch. Par défaut, le logiciel effectue l’apprentissage sur un GPU si celui-ci est disponible. L’utilisation d’un GPU nécessite Parallel Computing Toolbox™ et un dispositif GPU supporté. Pour plus d'information sur les dispositifs supportés, veuillez consulter Exigences de calcul du GPU (Parallel Computing Toolbox).

options = trainingOptions("adam", ...
    MaxEpochs=150, ...
    InitialLearnRate=0.01,...
    Shuffle="every-epoch", ...
    GradientThreshold=1, ...
    Verbose=false, ...
    Plots="training-progress");

Entraînez le réseau LSTM avec les options d’apprentissage spécifiées.

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

Classez les données de test. Spécifiez la même taille de mini-batch que pour l’apprentissage.

YTest = classify(net,XTest);

Calculez la précision de la classification des prédictions.

acc = mean(YTest == TTest)
acc = 0.8400

Affichez les résultats de la classification dans un diagramme de confusion.

figure
confusionchart(TTest,YTest)

Arguments d'entrée

réduire tout

Données d’images, définies par l’un des éléments suivants :

Type de donnéesDescriptionExemple d’utilisation
DatastoreImageDatastoreDatastore des images enregistrées sur un disque.

Entraînez un réseau de neurones de classification d'images avec des images enregistrées sur un disque, où les images présentent la même taille.

Lorsque les images présentent des tailles différentes, utilisez un objet AugmentedImageDatastore.

Les objets ImageDatastore supportent uniquement les tâches de classification d‘images. Pour utiliser des datastores d'images pour les réseaux de neurones de régression, créez un datastore transformé ou combiné contenant les images et les réponses à l'aide respectivement des fonctions transform et combine.

AugmentedImageDatastoreDatastore qui applique des transformations géométriques affines aléatoires, y compris le redimensionnement, la rotation, la réflexion, le cisaillement et la translation.

  • Entraînez un réseau de neurones de classification d'images avec des images enregistrées sur un disque, où les images présentent des tailles différentes.

  • Entraînez un réseau de neurones de classification d’images et générez de nouvelles de données en utilisant des augmentations.

TransformedDatastoreDatastore qui transforme les batchs de données lues à partir d'un datastore sous-jacent à l'aide d'une fonction de transformation personnalisée.

  • Entraînez un réseau de neurones de régression d’images.

  • Entraînez un réseau de neurones à plusieurs entrées.

  • Transformez les datastores comportant des sorties non supportées par trainNetwork.

  • Appliquez des transformations personnalisées au datastore en sortie.

CombinedDatastoreDatastore qui lit à partir d’au moins deux datastores sous-jacents.

  • Entraînez un réseau de neurones de régression d’images.

  • Entraînez un réseau de neurones à plusieurs entrées.

  • Combinez des prédicteurs et réponses provenant de différentes sources de données.

RandomPatchExtractionDatastore (Image Processing Toolbox)Datastore qui extrait des paires de zones aléatoires d'images ou d'images d'étiquettes de pixels (masques de segmentation), et applique éventuellement des transformations géométriques affines aléatoires identiques à ces paires.Entraînez un réseau de neurones pour la détection d’objets.
DenoisingImageDatastore (Image Processing Toolbox)Datastore qui applique du bruit gaussien généré de manière aléatoire.Entraînez un réseau de neurones pour le débruitage d’images.
Personnaliser un datastore de mini-batchsDatastore personnalisé qui renvoie des mini-batchs de données.

Entraînez un réseau de neurones au moyen de données présentant un format qui n’est pas supporté par les autres datastores.

Pour plus de précisions, veuillez consulter Develop Custom Mini-Batch Datastore.

Tableau numériqueImages définies par un tableau numérique. Si vous spécifiez des images sous la forme d’un tableau numérique, vous devez également spécifier l'argument responses.Entraînez un réseau de neurones avec des données qui s’inscrivent dans la mémoire et ne nécessitent pas de traitement supplémentaire comme une augmentation.
TableImages définies sous la forme d'une table. Si vous spécifiez des images sous la forme d’une table, vous devez également spécifier les colonnes contenant les réponses en utilisant l'argument responses.Entraînez un réseau de neurones avec des données stockées dans une table.

Pour les réseaux de neurones à entrées multiples, le datastore doit être un objet TransformedDatastore ou CombinedDatastore.

Conseil

Pour les séquences d'images, par exemple les données vidéo, utilisez l'argument d'entrée sequences.

Datastore

Les datastores lisent des mini-batchs d'images et de réponses. Les datastores sont les mieux adaptés lorsque vous avez des données qui ne peuvent pas être stockées en mémoire ou lorsque vous souhaitez appliquer des augmentations ou des transformations aux données.

La liste ci-dessous répertorie les datastores qui sont directement compatibles avec trainNetwork pour les images.

Par exemple, vous pouvez créer un datastore d'images en utilisant la fonction imageDatastore et utiliser les noms des dossiers contenant les images en tant qu’étiquettes en définissant l'option 'LabelSource' sur 'foldernames'. Vous pouvez également spécifier les étiquettes manuellement en utilisant la propriété Labels du datastore d'images.

Conseil

Utilisez augmentedImageDatastore pour prétraiter efficacement les images pour le Deep Learning, notamment pour les redimensionner. N’utilisez pas l’option ReadFcn des objets ImageDatastore.

ImageDatastore permet de lire les fichiers d’images JPG ou PNG en batch au moyen de la prélecture. Si vous définissez l’option ReadFcn pour une fonction personnalisée, ImageDatastore n’effectue pas de prélecture et est généralement beaucoup plus lent.

Vous pouvez utiliser d'autres datastores prédéfinis pour entraîner des réseaux de neurones de Deep Learning au moyen des fonctions transform et combine. Ces fonctions peuvent convertir les données lues dans les datastores au format requis par trainNetwork.

Pour les réseaux de neurones à entrées multiples, le datastore doit être un objet TransformedDatastore ou CombinedDatastore.

Le format requis pour la sortie du datastore dépend de l'architecture du réseau de neurones.

Architecture du réseau de neuronesSortie du datastoreExemple de sortie
Couche d’entrée unique

Table ou cell array comportant deux colonnes.

Les première et deuxième colonnes spécifient respectivement les prédicteurs et cibles.

Les éléments de la table doivent être des scalaires, des vecteurs lignes ou des cell arrays de 1 x 1 contenant un tableau numérique.

Les datastores de mini-batchs personnalisés doivent générer des tables.

Table pour réseau de neurones comptant une entrée et une sortie :

data = read(ds)
data =

  4×2 table

        Predictors        Response
    __________________    ________

    {224×224×3 double}       2    
    {224×224×3 double}       7    
    {224×224×3 double}       9    
    {224×224×3 double}       9  

Cell array pour réseau de neurones comptant une entrée et une sortie :

data = read(ds)
data =

  4×2 cell array

    {224×224×3 double}    {[2]}
    {224×224×3 double}    {[7]}
    {224×224×3 double}    {[9]}
    {224×224×3 double}    {[9]}

Couches d’entrée multiples

Cell array comportant (numInputs + 1) colonnes, où numInputs est le nombre d’entrées du réseau de neurones.

Les premières colonnes numInputs définissent les prédicteurs pour chaque entrée et la dernière colonne spécifie les cibles.

L'ordre des entrées est donné par la propriété InputNames du graphe de couches layers.

Cell array pour réseau de neurones comptant deux entrées et une sortie.

data = read(ds)
data =

  4×3 cell array

    {224×224×3 double}    {128×128×3 double}    {[2]}
    {224×224×3 double}    {128×128×3 double}    {[2]}
    {224×224×3 double}    {128×128×3 double}    {[9]}
    {224×224×3 double}    {128×128×3 double}    {[9]}

Le format des prédicteurs dépend du type de données.

DonnéesFormat
Images 2D

Tableau numérique h x w x c, où h, w et c sont respectivement la hauteur, la largeur et le nombre de canaux des images.

Images 3DTableau numérique h x w x d x c, où h, w, d et c sont respectivement la hauteur, la largeur, la profondeur et le nombre de canaux des images.

Pour les prédicteurs renvoyés dans des tables, les éléments doivent contenir un scalaire numérique, un vecteur ligne numérique ou un cell array 1 x 1 contenant le tableau numérique.

Le format des réponses dépend du type de tâche.

TâcheFormat de la réponse
Classification d'imagesScalaire catégoriel
Régression d’images
  • Scalaire numérique

  • Vecteur numérique

  • Tableau numérique 3D représentant une image 2D

  • Tableau numérique 4D représentant une image 3D

Pour les réponses renvoyées dans des tables, les éléments doivent se présenter sous la forme d’un scalaire catégoriel, un scalaire numérique, un vecteur ligne numérique ou un cell array 1 x 1 contenant un tableau numérique.

Pour plus d’informations, veuillez consulter Datastores for Deep Learning.

Tableau numérique

Pour les données qui peuvent être stockées en mémoire et ne nécessitent pas de traitement supplémentaire comme une augmentation, vous pouvez spécifier un jeu de données d’images sous la forme d’un tableau numérique. Si vous spécifiez des images sous la forme d’un tableau numérique, vous devez également spécifier l'argument responses.

La taille et la forme du tableau numérique dépendent du type d'image.

DonnéesFormat
Images 2D

Tableau numérique h x w x c x N, où h, w et c sont respectivement la hauteur, la largeur et le nombre de canaux des images, et N est le nombre d’images.

Images 3DTableau numérique h x w x d x c x N, où h, w, d et c sont respectivement la hauteur, la largeur, la profondeur et le nombre de canaux des images, et N est le nombre d’images.

Table

Plutôt que d’utiliser des datastores ou des tableaux numériques, vous pouvez également spécifier des images et des réponses dans une table. Si vous spécifiez des images sous la forme d’une table, vous devez également spécifier les colonnes contenant les réponses en utilisant l'argument responses.

Lorsque des images et des réponses sont spécifiées dans une table, chaque ligne de la table correspond à une observation.

Pour des images en entrée, les prédicteurs doivent se trouver dans la première colonne de la table, définis sous l'une des formes suivantes :

  • Chemin d'accès absolu ou relatif d'une image, défini sous la forme d'un vecteur de caractères

  • Cell array 1 x 1 contenant un tableau numérique h x w x c qui représente une image 2D, où h, w, et c correspondent respectivement à la hauteur, à la largeur et au nombre de canaux de l’image.

Le format des réponses dépend du type de tâche.

TâcheFormat de la réponse
Classification d'imagesScalaire catégoriel
Régression d’images
  • Scalaire numérique

  • Deux colonnes ou plus de valeurs scalaires

  • Cell array 1 x 1 contenant un tableau numérique h x w x c qui représente une image 2D

  • Cell array 1 x 1 contenant un tableau numérique h x w x d x c qui représente une image 3D

Pour les réseaux de neurones avec des images en entrée, si vous ne spécifiez pas responses, la fonction utilise par défaut la première colonne de tbl pour les prédicteurs et les colonnes suivantes en tant que réponses.

Conseil

  • Si les prédicteurs ou les réponses contiennent des NaN, ils sont propagés à travers le réseau de neurones pendant l’apprentissage. Dans ces cas, en règle générale, la convergence de l’apprentissage échoue.

  • Pour les tâches de régression, la normalisation des réponses aide souvent à stabiliser et à accélérer l’apprentissage des réseaux de neurones de régression. Pour plus d’informations, veuillez consulter Entraîner un réseau de neurones à convolution pour la régression.

  • Cet argument supporte les prédicteurs à valeurs complexes. Pour entraîner un réseau avec des prédicteurs à valeurs complexes en utilisant la fonction trainNetwork, l'option SplitComplexInputs de la couche d'entrée doit être 1 (true).

Séquences ou séries temporelles, définies par l’un des éléments suivants :

Type de donnéesDescriptionExemple d’utilisation
DatastoreTransformedDatastoreDatastore qui transforme les batchs de données lues à partir d'un datastore sous-jacent à l'aide d'une fonction de transformation personnalisée.

  • Transformez les datastores comportant des sorties non supportées par trainNetwork.

  • Appliquez des transformations personnalisées au datastore en sortie.

CombinedDatastoreDatastore qui lit à partir d’au moins deux datastores sous-jacents.

Combinez des prédicteurs et réponses provenant de différentes sources de données.

Personnaliser un datastore de mini-batchsDatastore personnalisé qui renvoie des mini-batchs de données.

Entraînez un réseau de neurones au moyen de données présentant un format qui n’est pas supporté par les autres datastores.

Pour plus de précisions, veuillez consulter Develop Custom Mini-Batch Datastore.

Tableau numérique ou cell arrayUne séquence unique spécifiée sous la forme d'un tableau numérique ou un jeu de données de séquences spécifié sous la forme d'un cell array de tableaux numériques. Si vous définissez des séquences sous la forme d’un tableau numérique ou d’un cell array, vous devez également spécifier l'argument responses.Entraînez un réseau de neurones avec des données qui peuvent être stockées en mémoire et ne nécessitent pas de traitement supplémentaire comme des transformations personnalisées.

Datastore

Les datastores lisent des mini-batchs de séquences et de réponses. Les datastores sont les mieux adaptés lorsque vous avez des données qui ne peuvent pas être stockées en mémoire ou sur lesquelles vous souhaitez appliquer des transformations aux données.

La liste ci-dessous répertorie les datastores qui sont directement compatibles avec trainNetwork pour les séquences.

Vous pouvez utiliser d'autres datastores prédéfinis pour entraîner des réseaux de neurones de Deep Learning au moyen des fonctions transform et combine. Ces fonctions peuvent convertir les données lues dans les datastores au format de table ou de cell array requis par trainNetwork. Par exemple, vous pouvez transformer et combiner des données lues à partir de tableaux en mémoire et de fichiers CSV en utilisant respectivement les objets ArrayDatastore et TabularTextDatastore.

Le datastore doit renvoyer les données sous la forme d’une table ou d’un cell array. Les datastores de mini-batchs personnalisés doivent générer des tables.

Sortie du datastoreExemple de sortie
Table
data = read(ds)
data =

  4×2 table

        Predictors        Response
    __________________    ________

    {12×50 double}           2    
    {12×50 double}           7    
    {12×50 double}           9    
    {12×50 double}           9  
Cell array
data = read(ds)
data =

  4×2 cell array

    {12×50 double}        {[2]}
    {12×50 double}        {[7]}
    {12×50 double}        {[9]}
    {12×50 double}        {[9]}

Le format des prédicteurs dépend du type de données.

DonnéesFormat des prédicteurs
Séquence vectorielle

Matrice c x s, où c est le nombre de caractéristiques de la séquence et s, la longueur de la séquence.

Séquence d’images 1D

Tableau h x c x s, où h et c correspondent respectivement à la hauteur et au nombre de canaux de l’image, et s, à la longueur de la séquence.

Chaque séquence du mini-batch doit présenter la même longueur de séquence.

Séquence d’images 2D

Tableau h x w x c x s, où h, w et c correspondent respectivement à la hauteur, à la largeur et au nombre de canaux de l’image, et s, à la longueur de la séquence.

Chaque séquence du mini-batch doit présenter la même longueur de séquence.

Séquence d’images 3D

Tableau h x w x d x c x s, où h, w, d et c correspondent respectivement à la hauteur, à la largeur, à la profondeur et au nombre de canaux de l’image, et s, à la longueur de la séquence.

Chaque séquence du mini-batch doit présenter la même longueur de séquence.

Pour les prédicteurs renvoyés dans des tables, les éléments doivent contenir un scalaire numérique, un vecteur ligne numérique ou un cell array 1 x 1 contenant un tableau numérique.

Le format des réponses dépend du type de tâche.

TâcheFormat des réponses
Classification sequence-to-labelScalaire catégoriel
Régression sequence-to-one

Scalaire

Régression sequence-to-vector

Vecteur ligne numérique

Classification sequence-to-sequence

  • Séquence d'étiquettes catégorielles 1 x s, où s est la longueur de la séquence du prédicteur correspondant.

  • Séquence d'étiquettes catégorielles h x w x s, où h, w et s correspondent respectivement à la hauteur, largeur et longueur de séquence du prédicteur correspondant.

  • Séquence d'étiquettes catégorielles h x w x d x s, où h, w, d et s correspondent respectivement à la hauteur, à la largeur, à la profondeur et à la longueur de séquence du prédicteur correspondant.

Chaque séquence du mini-batch doit présenter la même longueur de séquence.

Régression sequence-to-sequence
  • Matrice R x s, où R est le nombre de réponses et s, la longueur de la séquence du prédicteur correspondant.

  • Séquence de réponses numériques h x w x R x s, où R est le nombre de réponses et h, w et s correspondent respectivement à la hauteur, à la largeur et à la longueur de séquence du prédicteur correspondant.

  • Séquence de réponses numériques h x w x d x R ou s, où R est le nombre de réponses et h, w, d et s correspondent respectivement à la hauteur, largeur, profondeur et longueur de séquence du prédicteur correspondant.

Chaque séquence du mini-batch doit présenter la même longueur de séquence.

Pour les réponses renvoyées dans des tables, les éléments doivent se présenter sous la forme d’un scalaire catégoriel, un scalaire numérique, un vecteur ligne numérique ou un cell array 1 x 1 contenant un tableau numérique.

Pour plus d’informations, veuillez consulter Datastores for Deep Learning.

Tableau numérique ou cell array

Pour les données qui peuvent être stockées en mémoire et ne nécessitent pas de traitement supplémentaire comme des transformations personnalisées, vous pouvez spécifier une séquence unique sous la forme d’un tableau numérique ou un jeu de données d’images sous la forme d’un cell array de tableaux numériques. Si vous spécifiez des séquences sous la forme d’un cell array ou d’un tableau numérique, vous devez également spécifier l'argument responses.

Pour un cell array en entrée, le cell array doit être un cell array N x 1 de tableaux numériques, où N est le nombre d'observations. La taille et la forme du tableau numérique représentant une séquence dépendent du type de données de la séquence.

EntréeDescription
Séquences vectoriellesMatrices c x s, où c est le nombre de caractéristiques des séquences et s, la longueur des séquences.
Séquences d’images 1DTableaux h x c x s, où h et c correspondent respectivement à la hauteur et au nombre de canaux des images, et s, à la longueur de la séquence.
Séquences d’images 2DTableaux h x w x c x s, où h, w et c correspondent respectivement à la hauteur, à la largeur et au nombre de canaux des images, et s, à la longueur de la séquence.
Séquences d’images 3Dh x w x d x c x s, où h, w, d et c correspondent respectivement à la hauteur, largeur, profondeur et au nombre de canaux des images 3D, et s, à la longueur de la séquence.

La fonction trainNetwork supporte les réseaux de neurones comportant au maximum une couche d'entrée séquentielle.

Conseil

  • Si les prédicteurs ou les réponses contiennent des NaN, ils sont propagés à travers le réseau de neurones pendant l’apprentissage. Dans ces cas, en règle générale, la convergence de l’apprentissage échoue.

  • Pour les tâches de régression, la normalisation des réponses aide souvent à stabiliser et à accélérer l’apprentissage. Pour plus d’informations, veuillez consulter Entraîner un réseau de neurones à convolution pour la régression.

  • Cet argument supporte les prédicteurs à valeurs complexes. Pour entraîner un réseau avec des prédicteurs à valeurs complexes en utilisant la fonction trainNetwork, l'option SplitComplexInputs de la couche d'entrée doit être 1 (true).

Données de caractéristique, définies par l’un des éléments suivants :

Type de donnéesDescriptionExemple d’utilisation
DatastoreTransformedDatastoreDatastore qui transforme les batchs de données lues à partir d'un datastore sous-jacent à l'aide d'une fonction de transformation personnalisée.

  • Entraînez un réseau de neurones à plusieurs entrées.

  • Transformez les datastores comportant des sorties non supportées par trainNetwork.

  • Appliquez des transformations personnalisées au datastore en sortie.

CombinedDatastoreDatastore qui lit à partir d’au moins deux datastores sous-jacents.

  • Entraînez un réseau de neurones à plusieurs entrées.

  • Combinez des prédicteurs et réponses provenant de différentes sources de données.

Personnaliser un datastore de mini-batchsDatastore personnalisé qui renvoie des mini-batchs de données.

Entraînez un réseau de neurones au moyen de données présentant un format qui n’est pas supporté par les autres datastores.

Pour plus de précisions, veuillez consulter Develop Custom Mini-Batch Datastore.

TableDonnées de caractéristique définies par une table. Si vous spécifiez des caractéristiques sous la forme d’une table, vous devez également spécifier les colonnes contenant les réponses en utilisant l'argument responses.Entraînez un réseau de neurones avec des données stockées dans une table.
Tableau numériqueDonnées de caractéristique définies par un tableau numérique. Si vous spécifiez des caractéristiques sous la forme d’un tableau numérique, vous devez également spécifier l'argument responses.Entraînez un réseau de neurones avec des données qui peuvent être stockées en mémoire et ne nécessitent pas de traitement supplémentaire comme des transformations personnalisées.

Datastore

Les datastores lisent des mini-batchs de données de caractéristique et de réponses. Les datastores sont les mieux adaptés lorsque vous avez des données qui ne peuvent pas être stockées en mémoire ou sur lesquelles vous souhaitez appliquer des transformations aux données.

La liste ci-dessous répertorie les datastores qui sont directement compatibles avec trainNetwork pour les données de caractéristique.

Vous pouvez utiliser d'autres datastores prédéfinis pour entraîner des réseaux de neurones de Deep Learning au moyen des fonctions transform et combine. Ces fonctions peuvent convertir les données lues dans les datastores au format de table ou de cell array requis par trainNetwork. Pour plus d’informations, veuillez consulter Datastores for Deep Learning.

Pour les réseaux de neurones à entrées multiples, le datastore doit être un objet TransformedDatastore ou CombinedDatastore.

Le datastore doit renvoyer les données sous la forme d’une table ou d’un cell array. Les datastores de mini-batchs personnalisés doivent générer des tables. Le format de la sortie du datastore dépend de l'architecture du réseau de neurones.

Architecture du réseau de neuronesSortie du datastoreExemple de sortie
Couche d’entrée unique

Table ou cell array comportant deux colonnes.

Les première et deuxième colonnes spécifient respectivement les prédicteurs et réponses.

Les éléments de la table doivent être des scalaires, des vecteurs lignes ou des cell arrays de 1 x 1 contenant un tableau numérique.

Les datastores de mini-batchs personnalisés doivent générer des tables.

Table pour réseau de neurones comptant une entrée et une sortie :

data = read(ds)
data =

  4×2 table

        Predictors        Response
    __________________    ________

    {24×1 double}            2    
    {24×1 double}            7    
    {24×1 double}            9    
    {24×1 double}            9  

Cell array pour réseau de neurones comptant une entrée et une sortie :

data = read(ds)
data =

  4×2 cell array

    {24×1 double}    {[2]}
    {24×1 double}    {[7]}
    {24×1 double}    {[9]}
    {24×1 double}    {[9]}

Couches d’entrée multiples

Cell array comportant (numInputs + 1) colonnes, où numInputs est le nombre d’entrées du réseau de neurones.

Les premières colonnes numInputs spécifient les prédicteurs de chaque entrée et la dernière colonne spécifie les réponses.

L'ordre des entrées est donné par la propriété InputNames du graphe de couches layers.

Cell array pour réseau de neurones comptant deux entrées et une sortie :

data = read(ds)
data =

  4×3 cell array

    {24×1 double}    {28×1 double}    {[2]}
    {24×1 double}    {28×1 double}    {[2]}
    {24×1 double}    {28×1 double}    {[9]}
    {24×1 double}    {28×1 double}    {[9]}

Les prédicteurs doivent être des vecteurs c x 1 colonnes, où c est le nombre de caractéristiques.

Le format des réponses dépend du type de tâche.

TâcheFormat des réponses
ClassificationScalaire catégoriel
Régression

  • Scalaire

  • Vecteur numérique

Pour plus d’informations, veuillez consulter Datastores for Deep Learning.

Table

Pour les données de caractéristique qui peuvent être stockées en mémoire et ne nécessitent pas de traitement supplémentaire comme des transformations personnalisées, vous pouvez spécifier des données de caractéristique et des réponses sous la forme d’une table.

Chaque ligne de la table correspond à une observation. L’agencement des prédicteurs et des réponses dans les colonnes de la table dépend du type de tâche.

TâchePrédicteursRéponses
Classification des caractéristiques

Caractéristiques spécifiées dans une ou plusieurs colonnes en tant que scalaires.

Si vous ne spécifiez pas l’argument responses, alors les prédicteurs doivent se trouver dans les premières colonnes numFeatures de la table, où numFeatures est le nombre de caractéristiques des données d’entrée.

Étiquette catégorielle

Régression des caractéristiques

Une colonne ou plus de valeurs scalaires

Pour les réseaux de neurones de classification avec des caractéristiques en entrée, si vous ne spécifiez pas l'argument responses, la fonction utilise par défaut les premières (numColumns - 1) colonnes de tbl pour les prédicteurs et la dernière colonne pour les étiquettes, où numFeatures est le nombre de caractéristiques des données en entrée.

Pour les réseaux de neurones de régression avec des caractéristiques en entrée, si vous ne spécifiez pas l'argument responseNames, la fonction utilise par défaut les premières numFeatures colonnes pour les prédicteurs et les colonnes suivantes pour les réponses, où numFeatures est le nombre de caractéristiques des données en entrée.

Tableau numérique

Pour les données de caractéristique qui peuvent être stockées en mémoire et ne nécessitent pas de traitement supplémentaire comme des transformations personnalisées, vous pouvez spécifier des données de caractéristique sous la forme d’un tableau numérique. Si vous spécifiez des données de caractéristique sous la forme d’un tableau numérique, vous devez également spécifier l'argument responses.

Le tableau numérique doit être au format N x numFeatures, où N est le nombre d’observations et numFeatures est le nombre de caractéristiques des données d’entrée.

Conseil

  • La normalisation des réponses aide souvent à stabiliser et à accélérer l’apprentissage des réseaux de neurones de régression. Pour plus d’informations, veuillez consulter Entraîner un réseau de neurones à convolution pour la régression.

  • Les réponses ne doivent contenir aucune valeur NaN. Si les données du prédicteur contiennent des NaN, ils sont propagés tout au long de l’apprentissage. Cependant, dans la plupart des cas, la convergence de l’apprentissage échoue.

  • Cet argument supporte les prédicteurs à valeurs complexes. Pour entraîner un réseau avec des prédicteurs à valeurs complexes en utilisant la fonction trainNetwork, l'option SplitComplexInputs de la couche d'entrée doit être 1 (true).

Données mixtes et réponses, définies par l’un des éléments suivants :

Type de donnéesDescriptionExemple d’utilisation
TransformedDatastoreDatastore qui transforme les batchs de données lues à partir d'un datastore sous-jacent à l'aide d'une fonction de transformation personnalisée.

  • Entraînez un réseau de neurones à plusieurs entrées.

  • Transformez les sorties des datastores non supportés par trainNetwork afin qu'elles obtiennent le format requis.

  • Appliquez des transformations personnalisées au datastore en sortie.

CombinedDatastoreDatastore qui lit à partir d’au moins deux datastores sous-jacents.

  • Entraînez un réseau de neurones à plusieurs entrées.

  • Combinez des prédicteurs et réponses provenant de différentes sources de données.

Personnaliser un datastore de mini-batchsDatastore personnalisé qui renvoie des mini-batchs de données.

Entraînez un réseau de neurones au moyen de données présentant un format qui n’est pas supporté par les autres datastores.

Pour plus de précisions, veuillez consulter Develop Custom Mini-Batch Datastore.

Vous pouvez utiliser d'autres datastores prédéfinis pour entraîner des réseaux de neurones de Deep Learning au moyen des fonctions transform et combine. Ces fonctions peuvent convertir les données lues dans les datastores au format de table ou de cell array requis par trainNetwork. Pour plus d’informations, veuillez consulter Datastores for Deep Learning.

Le datastore doit renvoyer les données sous la forme d’une table ou d’un cell array. Les datastores de mini-batchs personnalisés doivent générer des tables. Le format de la sortie du datastore dépend de l'architecture du réseau de neurones.

Sortie du datastoreExemple de sortie

Cell array comportant (numInputs + 1) colonnes, où numInputs est le nombre d’entrées du réseau de neurones.

Les premières colonnes numInputs spécifient les prédicteurs de chaque entrée et la dernière colonne spécifie les réponses.

L'ordre des entrées est donné par la propriété InputNames du graphe de couches layers.

data = read(ds)
data =

  4×3 cell array

    {24×1 double}    {28×1 double}    {[2]}
    {24×1 double}    {28×1 double}    {[2]}
    {24×1 double}    {28×1 double}    {[9]}
    {24×1 double}    {28×1 double}    {[9]}

Pour les prédicteurs d'images, de séquences et de caractéristiques en entrée, le format des prédicteurs doit correspondre aux formats décrits dans les descriptions des arguments, respectivement, images, sequences ou features. De même, le format des réponses doit correspondre aux formats décrits dans les descriptions d’arguments images, sequences ou features qui correspondent au type de tâche.

La fonction trainNetwork supporte les réseaux de neurones comportant au maximum une couche d'entrée séquentielle.

Vous trouverez un exemple illustrant comment entraîner un réseau de neurones avec plusieurs entrées dans Train Network on Image and Feature Data.

Conseil

  • Pour convertir un tableau numérique en datastore, utilisez ArrayDatastore.

  • Lorsque vous combinez des couches dans un réseau de neurones comportant des types de données mixtes, vous pouvez être amené à reformater les données avant de les transmettre à une couche de combinaison (telle qu'une couche de concaténation ou d'addition). Pour reformater les données, vous pouvez utiliser une couche d'aplatissement pour aplatir les dimensions spatiales dans la dimension du canal ou créer un objet FunctionLayer ou une couche personnalisée qui reformate et remodèle.

  • Cet argument supporte les prédicteurs à valeurs complexes. Pour entraîner un réseau avec des prédicteurs à valeurs complexes en utilisant la fonction trainNetwork, l'option SplitComplexInputs de la couche d'entrée doit être 1 (true).

Réponses.

Lorsque les données en entrée prennent la forme d’un tableau numérique ou d’un cell array, spécifiez les réponses de l’une des manières suivantes.

  • vecteur catégoriel d’étiquettes

  • tableau numérique de réponses numériques

  • cell array de séquences catégorielles ou numériques

Lorsque les données en entrée prennent la forme d’une table, vous pouvez, de façon optionnelle, spécifier les colonnes de la table qui vont contenir les réponses de l’une des manières suivantes :

  • vecteur de caractères

  • cell array de vecteurs de caractères

  • tableau de chaînes de caractères

Lorsque les donnée en entrée prennent la forme d’un tableau numérique ou d’un cell array, le format des réponses dépend du type de tâche.

TâcheFormat
ClassificationClassification d'imagesVecteur catégoriel d’étiquettes de N x 1, où N est le nombre d’observations.
Classification des caractéristiques
Classification sequence-to-label
Classification sequence-to-sequence

Cell array de séquences catégorielles d’étiquettes N x 1, où N est le nombre d’observations. Chaque séquence doit avoir le même nombre de pas de temps que la séquence de prédicteurs correspondante.

Pour les tâches de classification sequence-to-sequence comportant une observation, sequences peut également être un vecteur. Dans ce cas, responses doit être un vecteur ligne catégoriel d’étiquettes.

RégressionRégression d’images 2D
  • Matrice N x R, où N est le nombre d’images et R est le nombre de réponses.

  • Tableau numérique h x w x c x N, où h, w et c sont respectivement la hauteur, la largeur et le nombre de canaux des images, et N est le nombre d’images.

Régression d’images 3D
  • Matrice N x R, où N est le nombre d’images et R est le nombre de réponses.

  • Tableau numérique h x w x d x c x N, où h, w, d et c sont respectivement la hauteur, la largeur, la profondeur et le nombre de canaux des images, et N est le nombre d’images.

Régression des caractéristiques

Matrice N x R, où N est le nombre d’observations et R est le nombre de réponses.

Régression sequence-to-oneMatrice N x R, où N est le nombre de séquences et R est le nombre de réponses.
Régression sequence-to-sequence

Cell array de séquences numériques N x 1, où N est le nombre de séquences, celles-ci étant fournies par l’un des éléments suivants :

  • Matrice R x s, où R est le nombre de réponses et s, la longueur de la séquence du prédicteur correspondant.

  • Tableau h x w x R x s, où h et w sont respectivement la hauteur et la largeur de la sortie, R est le nombre de réponses et s, la longueur de la séquence du prédicteur correspondant.

  • Tableau h x w x d x R x s, où h, w et d sont respectivement la hauteur, la largeur et la profondeur de la sortie, R est le nombre de réponses et s, la longueur de la séquence du prédicteur correspondant.

Pour les tâches de régression sequence-to-sequence comportant une observation, sequences peut être un tableau numérique. Dans ce cas, responses doit être un tableau numérique de réponses.

Conseil

La normalisation des réponses aide souvent à stabiliser et à accélérer l’apprentissage des réseaux de neurones de régression. Pour plus d’informations, veuillez consulter Entraîner un réseau de neurones à convolution pour la régression.

Conseil

Les réponses ne doivent contenir aucune valeur NaN. Si les données du prédicteur contiennent des NaN, ils sont propagés tout au long de l’apprentissage. Cependant, dans la plupart des cas, la convergence de l’apprentissage échoue.

Couches du réseau de neurones, définies par un tableau Layer ou un objet LayerGraph.

Pour créer un réseau de neurones dont toutes les couches sont connectées de manière séquentielle, vous pouvez utiliser un tableau Layer comme argument d'entrée. Dans ce cas, le réseau de neurones renvoyé est un objet SeriesNetwork.

Un réseau de neurones DAG (Directed Acyclic Graph) présente une structure complexe dans laquelle les couches peuvent avoir plusieurs entrées et sorties. Pour créer un réseau de neurones DAG, spécifiez l'architecture du réseau sous la forme d'un objet LayerGraph, puis utilisez ce graphe de couches en tant qu’argument de trainNetwork.

La fonction trainNetwork supporte les réseaux de neurones comportant au maximum une couche d'entrée séquentielle.

Pour obtenir la liste des couches prédéfinies, veuillez consulter List of Deep Learning Layers.

Options d’apprentissage, spécifiées sous la forme d’un objet TrainingOptionsSGDM, TrainingOptionsRMSProp ou TrainingOptionsADAM renvoyé par la fonction trainingOptions.

Arguments de sortie

réduire tout

Réseau de neurones entraîné, renvoyé comme un objet SeriesNetwork ou DAGNetwork.

Si vous entraînez le réseau de neurones avec un tableau Layer, alors net est un objet SeriesNetwork. Si vous entraînez le réseau de neurones avec un objet LayerGraph, alors net est un objet DAGNetwork.

Informations sur l’apprentissage, renvoyées sous la forme d’une structure, où chaque champ est un scalaire ou un vecteur numérique avec un élément par itération d’apprentissage.

Pour les tâches de classification, info contient les champs suivants :

  • TrainingLoss — Valeurs de la fonction de perte pour l'apprentissage

  • TrainingAccuracy — Valeurs de précision pour l’apprentissage

  • ValidationLoss — Valeurs de la fonction de perte pour la validation

  • ValidationAccuracy — Valeurs de précision pour la validation

  • BaseLearnRate — Taux d’apprentissage

  • FinalValidationLoss — Perte de validation du réseau de neurones renvoyé

  • FinalValidationAccuracy — Précision de validation du réseau de neurones renvoyé

  • OutputNetworkIteration — Nombre d’itérations du réseau de neurones renvoyé

Pour les tâches de régression, info contient les champs suivants :

  • TrainingLoss — Valeurs de la fonction de perte pour l'apprentissage

  • TrainingRMSE — Valeurs RMSE de l’apprentissage

  • ValidationLoss — Valeurs de la fonctions de perte pour la validation

  • ValidationRMSE — Valeurs RMSE de la validation

  • BaseLearnRate — Taux d’apprentissage

  • FinalValidationLoss — Perte de validation du réseau de neurones renvoyé

  • FinalValidationRMSE — RMSE de validation du réseau de neurones renvoyé

  • OutputNetworkIteration — Nombre d’itérations du réseau de neurones renvoyé

La structure contient uniquement les champs ValidationLoss, ValidationAccuracy, ValidationRMSE , FinalValidationLoss , FinalValidationAccuracy et FinalValidationRMSE lorsque options spécifie les données de validation. L’option d’apprentissage ValidationFrequency détermine les itérations pour lesquelles le logiciel calcule les métriques de validation. Les métriques de validation finales sont des scalaires. Les autres champs de la structure sont des vecteurs lignes, où chaque élément correspond à une itération d’apprentissage. Dans le cas des itérations pour lesquelles le logiciel ne calcule pas les métriques de validation, les valeurs correspondantes dans la structure sont NaN.

Pour les réseaux de neurones contenant des couches de normalisation par batch, si l’option d’apprentissage BatchNormalizationStatistics est 'population', les métriques de validation finales sont souvent différentes des métriques de validation évaluées pendant l’apprentissage. En effet, les couches de normalisation par batch du réseau de neurones final effectuent des opérations différentes de celles réalisées pendant l’apprentissage. Pour plus d’informations, veuillez consulter batchNormalizationLayer.

En savoir plus

réduire tout

Capacités étendues

développer tout

Historique des versions

Introduit dans R2016a

développer tout