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.
Syntaxe
Description
Exemples
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
Données d’images, définies par l’un des éléments suivants :
Type de données | Description | Exemple d’utilisation | |
---|---|---|---|
Datastore | ImageDatastore | Datastore 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 Les objets |
AugmentedImageDatastore | Datastore qui applique des transformations géométriques affines aléatoires, y compris le redimensionnement, la rotation, la réflexion, le cisaillement et la translation. |
| |
TransformedDatastore | Datastore qui transforme les batchs de données lues à partir d'un datastore sous-jacent à l'aide d'une fonction de transformation personnalisée. |
| |
CombinedDatastore | Datastore qui lit à partir d’au moins deux datastores sous-jacents. |
| |
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-batchs | Datastore 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 | Images 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. | |
Table | Images 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.
RandomPatchExtractionDatastore
(Image Processing Toolbox)DenoisingImageDatastore
(Image Processing Toolbox)Custom mini-batch datastore. Pour plus de précisions, veuillez consulter Develop Custom Mini-Batch Datastore.
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 neurones | Sortie du datastore | Exemple 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 ( Les premières colonnes L'ordre des entrées est donné par la propriété | 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ées | Format |
---|---|
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 3D | Tableau 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âche | Format de la réponse |
---|---|
Classification d'images | Scalaire catégoriel |
Régression d’images |
|
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ées | Format |
---|---|
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 3D | 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. |
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âche | Format de la réponse |
---|---|
Classification d'images | Scalaire catégoriel |
Régression d’images |
|
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'optionSplitComplexInputs
de la couche d'entrée doit être1
(true
).
Séquences ou séries temporelles, définies par l’un des éléments suivants :
Type de données | Description | Exemple d’utilisation | |
---|---|---|---|
Datastore | TransformedDatastore | Datastore qui transforme les batchs de données lues à partir d'un datastore sous-jacent à l'aide d'une fonction de transformation personnalisée. |
|
CombinedDatastore | Datastore 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-batchs | Datastore 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 array | Une 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.
Custom mini-batch datastore. 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
. 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 datastore | Exemple 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ées | Format 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âche | Format des réponses |
---|---|
Classification sequence-to-label | Scalaire catégoriel |
Régression sequence-to-one | Scalaire |
Régression sequence-to-vector | Vecteur ligne numérique |
Classification sequence-to-sequence |
Chaque séquence du mini-batch doit présenter la même longueur de séquence. |
Régression sequence-to-sequence |
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ée | Description |
---|---|
Séquences vectorielles | Matrices 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 1D | Tableaux 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 2D | Tableaux 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 3D | h 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'optionSplitComplexInputs
de la couche d'entrée doit être1
(true
).
Données de caractéristique, définies par l’un des éléments suivants :
Type de données | Description | Exemple d’utilisation | |
---|---|---|---|
Datastore | TransformedDatastore | Datastore qui transforme les batchs de données lues à partir d'un datastore sous-jacent à l'aide d'une fonction de transformation personnalisée. |
|
CombinedDatastore | Datastore qui lit à partir d’au moins deux datastores sous-jacents. |
| |
Personnaliser un datastore de mini-batchs | Datastore 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. | |
Table | Donné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érique | Donné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.
Custom mini-batch datastore. 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.
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 neurones | Sortie du datastore | Exemple 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 ( Les premières colonnes L'ordre des entrées est donné par la propriété | 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âche | Format des réponses |
---|---|
Classification | Scalaire catégoriel |
Régression |
|
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âche | Prédicteurs | Ré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 | É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 desNaN
, 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'optionSplitComplexInputs
de la couche d'entrée doit être1
(true
).
Données mixtes et réponses, définies par l’un des éléments suivants :
Type de données | Description | Exemple d’utilisation |
---|---|---|
TransformedDatastore | Datastore qui transforme les batchs de données lues à partir d'un datastore sous-jacent à l'aide d'une fonction de transformation personnalisée. |
|
CombinedDatastore | Datastore qui lit à partir d’au moins deux datastores sous-jacents. |
|
Personnaliser un datastore de mini-batchs | Datastore 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 datastore | Exemple de sortie |
---|---|
Cell array comportant ( Les premières colonnes L'ordre des entrées est donné par la propriété | 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'optionSplitComplexInputs
de la couche d'entrée doit être1
(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âche | Format | |
---|---|---|
Classification | Classification d'images | Vecteur 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, | |
Régression | Régression d’images 2D |
|
Régression d’images 3D |
| |
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-one | Matrice 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 :
Pour les tâches de régression sequence-to-sequence comportant une observation, |
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é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'apprentissageTrainingAccuracy
— Valeurs de précision pour l’apprentissageValidationLoss
— Valeurs de la fonction de perte pour la validationValidationAccuracy
— Valeurs de précision pour la validationBaseLearnRate
— Taux d’apprentissageFinalValidationLoss
— 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'apprentissageTrainingRMSE
— Valeurs RMSE de l’apprentissageValidationLoss
— Valeurs de la fonctions de perte pour la validationValidationRMSE
— Valeurs RMSE de la validationBaseLearnRate
— Taux d’apprentissageFinalValidationLoss
— 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
Deep Learning Toolbox™ vous permet d’enregistrer des réseaux de neurones dans des fichiers au format .mat pendant l’apprentissage. Cet enregistrement à intervalles réguliers est particulièrement utile lorsque vous disposez d'un grand réseau de neurones ou d'un jeu de données volumineux et que l'apprentissage prend beaucoup de temps. Si, pour une raison ou une autre, l’apprentissage est interrompu, vous pouvez le reprendre à partir du dernier réseau de neurones de point de contrôle enregistré. Si vous souhaitez que la fonction trainNetwork
enregistre les réseaux de neurones aux points de contrôle, vous devez spécifier le nom du chemin en utilisant l'option CheckpointPath
de trainingOptions
. Si le chemin que vous spécifiez n’existe pas, trainingOptions
renvoie une erreur.
Le logiciel attribue automatiquement des noms uniques aux fichiers du réseau de neurones aux points de contrôle. Dans l'exemple de nom, net_checkpoint__351__2018_04_12__18_09_52.mat
, 351 est le numéro d'itération, 2018_04_12
est la date et 18_09_52
est l'heure à laquelle le logiciel enregistre le réseau de neurones. Vous pouvez charger un fichier de réseau de neurones pour un point de contrôle en double-cliquant dessus ou en utilisant la commande load en ligne de commande. Par exemple :
load net_checkpoint__351__2018_04_12__18_09_52.mat
trainNetwork
. Par exemple :trainNetwork(XTrain,TTrain,net.Layers,options)
Lorsque vous entraînez un réseau de neurones en utilisant les fonctions trainnet
ou trainNetwork
, ou lorsque vous utilisez les fonctions de prédiction ou de validation avec les objets DAGNetwork
et SeriesNetwork
, le logiciel effectue ces calculs avec l'arithmétique en virgule flottante simple précision. Parmi les fonctions de prédiction et de validation, citons predict
, classify
et activations
. Le logiciel utilise l'arithmétique simple précision lorsque vous entraînez des réseaux de neurones avec à la fois des CPU et des GPU.
Pour obtenir les meilleures performances, le Deep Learning avec un GPU dans MATLAB® n'est pas nécessairement déterministe. Selon l'architecture de votre réseau, sous certaines conditions, vous pouvez obtenir des résultats différents lorsque vous utilisez un GPU pour entraîner deux réseaux identiques ou faire deux prédictions en utilisant le même réseau et les mêmes données.
Capacités étendues
Pour lancer un calcul en parallèle, définissez l’option d’apprentissage ExecutionEnvironment
sur "multi-gpu"
ou "parallel"
.
Utilisez trainingOptions
pour définir l’option d’apprentissage ExecutionEnvironment
et fournir les options à trainNetwork
. Si vous ne définissez pas ExecutionEnvironment
, trainNetwork
s’exécute sur un GPU s’il est disponible.
Pour plus de précisions, veuillez consulter Scale Up Deep Learning in Parallel, on GPUs, and in the Cloud.
Pour éviter les erreurs de mémoire, il est recommandé de ne pas déplacer de jeux de données d'apprentissage volumineux sur le GPU. Entraînez plutôt votre réseau de neurones sur un GPU en utilisant
trainingOptions
pour définirExecutionEnvironment
sur"auto"
ou"gpu"
et pour fournir les options àtrainNetwork
.L’option
ExecutionEnvironment
doit être"auto"
ou"gpu"
lorsque les données en entrée sont :Un
gpuArray
Un cell array contenant des objets
gpuArray
Une table contenant des objets
gpuArray
Un datastore qui génère des cell arrays contenant des objets
gpuArray
Un datastore qui génère des tables contenant des objets
gpuArray
Pour plus d’informations, veuillez consulter Exécuter les fonctions MATLAB sur un GPU (Parallel Computing Toolbox).
Historique des versions
Introduit dans R2016aÀ partir de R2024a, il est déconseillé d’utiliser la fonction trainNetwork
: utilisez la fonction trainnet
à la place.
Il n’est pas prévu de supprimer le support de la fonction trainNetwork
. Cependant, la fonction trainnet
présente les avantages suivants et son utilisation est recommandée à la place de ces objets :
trainnet
supporte les objetsdlnetwork
qui supportent un plus large éventail d’architectures de réseau que vous pouvez créer ou importer à partir de plateformes externes.trainnet
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.trainnet
génère en sortie un objetdlnetwork
qui est un type de données unifié supportant 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.trainnet
est généralement plus rapide quetrainNetwork
.
Le tableau suivant indique quelques utilisations courantes de la fonction trainNetwork
et comment mettre à jour votre code pour qu’il utilise la fonction trainnet
à la place.
Déconseillé | Recommandé |
---|---|
net = trainNetwork(data,layers,options); | net = trainnet(data,layers,lossFcn,options); |
net = trainNetwork(X,T,layers,options); | net = trainnet(X,T,layers,lossFcn,options); |
Au lieu d'utiliser une couche de sortie, spécifiez une fonction de perte avec lossFcn
.
À partir de R2022b, lorsque vous entraînez un réseau de neurones avec des données de séquence avec la fonction trainNetwork
et que l’option SequenceLength
est un entier, le software remplit les séquences à la longueur de la séquence la plus longue dans chaque mini-batch puis divise les séquences en mini-batchs avec la longueur de séquence spécifiée. Si SequenceLength
ne divise pas uniformément la longueur des séquences des mini-batchs, le dernier mini-batch divisé a une longueur plus courte que SequenceLength
. Ce comportement évite l’apprentissage du réseau de neurones sur des pas de temps contenant uniquement des valeurs de remplissage.
Pour les versions antérieures, le software remplit les mini-batchs de séquences afin qu’ils aient une longueur correspondant au multiple le plus proche de SequenceLength
supérieur ou égal à la longueur des mini-batchs, puis divise les données. Pour reproduire ce comportement, utilisez une boucle d’apprentissage personnalisée et implémentez ce comportement lorsque vous prétraitez les mini-batchs de données.
Lorsque vous entraînez un réseau de neurones avec la fonction trainNetwork
, l'apprentissage s'arrête automatiquement lorsque la perte est NaN
. En règle générale, une valeur de perte de NaN
introduit des valeurs NaN
dans les paramètres entraînables du réseau de neurones, ce qui peut empêcher l’apprentissage du réseau de neurones ou l’obtention de prédictions valides. Ce changement permet d'identifier les problèmes liés au réseau de neurones avant la fin de l’apprentissage.
Dans les versions précédentes, le réseau de neurones poursuivait l’apprentissage lorsque la perte était NaN
.
Lorsque vous spécifiez des données de séquence pour la fonction trainNetwork
, le support concernant la spécification de tables de chemins de fichiers MAT va disparaître des futures versions.
Pour entraîner des réseaux de neurones avec des séquences qui ne s’inscrivent pas en mémoire, utilisez un datastore. Vous pouvez utiliser n'importe quel datastore pour lire vos données, puis utiliser la fonction transform
pour transformer la sortie du datastore au format requis par la fonction trainNetwork
. Par exemple, vous pouvez lire des données avec un objet FileDatastore
ou TabularTextDatastore
, puis transformer la sortie à l'aide de la fonction transform
.
Voir aussi
trainnet
| trainingOptions
| dlnetwork
| minibatchpredict
| scores2label
| predict
| analyzeNetwork
| Deep Network Designer
Rubriques
- Créer un réseau de neurones simple de Deep Learning pour la classification
- Retrain Neural Network to Classify New Images
- Entraîner un réseau de neurones à convolution pour la régression
- Classification de séquences avec le Deep Learning
- Train Network on Image and Feature Data
- Deep Learning in MATLAB
- Define Custom Deep Learning Layers
- List of Deep Learning Layers
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Sélectionner un site web
Choisissez un site web pour accéder au contenu traduit dans votre langue (lorsqu'il est disponible) et voir les événements et les offres locales. D’après votre position, nous vous recommandons de sélectionner la région suivante : .
Vous pouvez également sélectionner un site web dans la liste suivante :
Comment optimiser les performances du site
Pour optimiser les performances du site, sélectionnez la région Chine (en chinois ou en anglais). Les sites de MathWorks pour les autres pays ne sont pas optimisés pour les visites provenant de votre région.
Amériques
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)