Main Content

regressionLayer

(Déconseillé) Couche de sortie de régression

L’utilisation de regressionLayer est déconseillée. Utilisez la fonction trainnet et définissez la fonction de perte à "mse" à la place. Pour plus d’informations, veuillez consulter Historique des versions.

Description

Une couche de régression calcule la perte de demi-erreur quadratique moyenne des tâches de régression.

layer = regressionLayer renvoie une couche de sortie de régression d’un réseau de neurones comme un objet RegressionOutputLayer.

exemple

layer = regressionLayer(Name,Value) définit les propriétés optionnelles Name et ResponseNames avec des paires nom-valeur. Par exemple, regressionLayer('Name','output') crée une couche de régression avec le nom 'output'. Mettez chaque nom de propriété entre guillemets simples.

Exemples

réduire tout

Créez une couche de sortie de régression.

Créez une couche de sortie de régression avec le nom 'routput'.

layer = regressionLayer('Name','routput')
layer = 
  RegressionOutputLayer with properties:

             Name: 'routput'
    ResponseNames: {}

   Hyperparameters
     LossFunction: 'mean-squared-error'

La fonction de perte par défaut pour la régression est l’erreur quadratique moyenne.

Ajoutez une couche de sortie de régression dans le tableau de couches.

layers = [ ...
    imageInputLayer([28 28 1])
    convolution2dLayer(12,25)
    reluLayer
    fullyConnectedLayer(1)
    regressionLayer]
layers = 
  5x1 Layer array with layers:

     1   ''   Image Input         28x28x1 images with 'zerocenter' normalization
     2   ''   2-D Convolution     25 12x12 convolutions with stride [1  1] and padding [0  0  0  0]
     3   ''   ReLU                ReLU
     4   ''   Fully Connected     1 fully connected layer
     5   ''   Regression Output   mean-squared-error

Arguments d'entrée

réduire tout

Arguments nom-valeur

Spécifiez des paires d’arguments en option selon le modèle Name1=Value1,...,NameN=ValueN, où Name est le nom de l’argument et Value est la valeur correspondante. Les arguments nom-valeur doivent apparaître après les autres arguments, mais l’ordre des paires n’a aucune importance.

Avant R2021a, utilisez des virgules pour séparer les noms et les valeurs, et mettez Name entre guillemets.

Exemple : regressionLayer('Name','output') crée une couche de régression avec le nom 'output'

Nom de la couche, défini par un vecteur de caractères ou un string scalar. Pour le tableau de Layer en entrée, la fonction trainNetwork attribue automatiquement des noms aux couches avec le nom "".

L’objet RegressionOutputLayer stocke cette propriété comme un vecteur de caractères.

Types de données : char | string

Noms des réponses, définis par un cell array de vecteurs de caractères ou un tableau de chaînes de caractères. Au moment de l’apprentissage, le software définit automatiquement les noms des réponses selon les données d’apprentissage. La valeur par défaut est {}.

Types de données : cell

Arguments de sortie

réduire tout

Couche de sortie de régression, retournée en tant qu'objet RegressionOutputLayer.

En savoir plus

réduire tout

Couche de sortie de régression

Une couche de régression calcule la perte de demi-erreur quadratique moyenne des tâches de régression. Pour des problèmes de régression typiques, une couche de régression doit suivre la couche entièrement connectée finale.

Pour une observation unique, l’erreur quadratique moyenne est donnée par :

MSE=i=1R(tiyi)2R,

R est le nombre de réponses, ti est la sortie cible et yi est la prédiction du réseau pour la réponse i.

Pour des réseaux de régression d’images et de sequence-to-one, la fonction de perte de la couche de régression est la demi-erreur quadratique moyenne des réponses prédites, non normalisée par R :

loss=12i=1R(tiyi)2.

Pour des réseaux de régression image-à-image, la fonction de perte de la couche de régression est la demi-erreur quadratique moyenne des réponses prédites pour chaque pixel, non normalisée par R :

loss=12p=1HWC(tpyp)2,

H, W et C désignent respectivement la hauteur, la largeur et le nombre de canaux de la sortie, et p indexe chaque élément (pixel) de t et y linéairement.

Pour des réseaux de régression sequence-to-sequence, la fonction de perte de la couche de régression est la demi-erreur quadratique moyenne des réponses prédites pour chaque pas de temps, non normalisée par R :

loss=12Si=1Sj=1R(tijyij)2,

S est la longueur de la séquence.

Lors de l’apprentissage, le software calcule la perte moyenne sur les observations dans le mini-batch.

Capacités étendues

Historique des versions

Introduit dans R2017a

réduire tout

R2024a: Déconseillé

À partir de R2024a, l’utilisation des objets RegressionOutputLayer est déconseillée. Utilisez trainnet et définissez la fonction de perte à "mse" à la place.

Il n’est pas prévu de supprimer le support des objets RegressionOutputLayer. Cependant, la fonction trainnet présente les avantages suivants et son utilisation est recommandée à la place de ces objets :

  • trainnet supporte les objets dlnetwork 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 objet dlnetwork 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 que trainNetwork.

Le tableau suivant indique quelques utilisations courantes de la fonction trainNetwork avec des objets RegressionOutputLayer et comment mettre à jour votre code pour qu’il utilise la fonction trainnet à la place.

DéconseilléRecommandé
net = trainNetwork(X,T,layers,options), où layers contient un objet RegressionOutputLayer.

net = trainnet(X,T,layers,"mse",options);
Dans cet exemple, layers spécifie le même réseau sans objet RegressionOutputLayer.

net = trainNetwork(data,layers,options), où layers contient un objet RegressionOutputLayer.

net = trainnet(data,layers,"mse",options);
Dans cet exemple, layers spécifie le même réseau sans objet RegressionOutputLayer.