Main Content

Cette page a été traduite par traduction automatique. Cliquez ici pour voir la dernière version en anglais.

loss

Calculer la perte entre les états prédits et les états réels

Depuis R2023b

    Description

    exemple

    L = loss(mpnet,statePred,stateActual) calcule la perte entre les états prédits et les états réels lors de la formation des réseaux de planification de mouvement (MPNet). La fonction calcule la valeur de perte en calculant la distance quadratique moyenne pondérée entre les états réels et les états prédits. Lors de la formation du réseau, l’objectif est de minimiser la perte entre les sorties prédites et les sorties réelles. Vous pouvez également utiliser la fonction loss pour vérifier l'exactitude d'un MPNet formé pendant les tests.

    Remarque

    Pour exécuter cette fonction, vous aurez besoin du Deep Learning Toolbox™.

    Exemples

    réduire tout

    Chargez un fichier de données contenant un MPNet pré-entraîné et des paramètres d'entraînement tels que les poids de perte, les limites d'état et la taille d'encodage dans l'espace de travail MATLAB® .

    data = load("mazeMapTrainedMPNET")
    data = struct with fields:
          encodingSize: [9 9]
           lossWeights: [100 100 0]
            mazeParams: {[5]  [1]  'MapSize'  [10 10]  'MapResolution'  [2.5000]}
           stateBounds: [3x2 double]
        trainedNetwork: [1x1 dlnetwork]
    
    

    Configurez l'objet mpnetSE2 pour utiliser le MPNet pré-entraîné.

    mpnet = mpnetSE2(Network=data.trainedNetwork,StateBounds=data.stateBounds, ...
                    EncodingSize=data.encodingSize);

    Spécifiez les échantillons d’état réels pour la vérité terrain.

    stateActual = [4 1 pi/4; 6 1 pi/4];

    Spécifiez les exemples de valeurs d’état prédit.

    statePred = [5 2 pi/5; 7 4 pi/5];

    Pour calculer la perte entre les états réels et les états prédits, vous devez normaliser les variables de l'espace d'état x et y dans la plage [0, 1]. Utilisez la fonction locale preprocessVariables pour normaliser les variables d'état.

    stateActual = preprocessVariables(stateActual,mpnet.StateBounds);
    statePred = preprocessVariables(statePred,mpnet.StateBounds);

    Calculez la perte entre les échantillons d’état prédits et les échantillons d’état réels.

    lossvalue = loss(mpnet,statePred,stateActual)
    lossvalue = 
      1x1 dlarray
    
        0.0662
    
    

    Fonction d'assistance

    Utilisez la fonction locale preprocessVariables pour normaliser les variables de l'espace d'état. La fonction normalise les variables de l'espace d'état x et y dans la plage [0, 1].

    La fonction ajuste également les limites de l'angle d'orientation de l'espace d'état d'entrée pour qu'elles se situent dans une plage spécifique, afin d'éviter les valeurs NaN .

    function [output] = preprocessVariables(stateIn,stateBounds)
    output = zeros(4,size(stateIn,1));
    for i = 1:size(stateIn,1)
        state = stateIn(i,:);
        cosTheta = cos(state(:,3));
        sinTheta = sin(state(:,3));
        input = [state(:,1:2) cosTheta sinTheta];
    
        thetaBounds = stateBounds(3,:);
        sinThetaLimits = sort(sin(thetaBounds));
        cosThetaLimits = sort(cos(thetaBounds));
        %% Sin limits
        if thetaBounds(1) < pi/2 && thetaBounds(2) > pi/2
            sinThetaLimits(2) = 1;
        end
        if thetaBounds(1) < -pi/2 && thetaBounds(2) > -pi/2
            sinThetaLimits(1) = -1;
        end
        %% Cos limits
        if thetaBounds(1) < 0 && thetaBounds(2) > 0
            cosThetaLimits(2) = 1;
        end
        positionLimits = stateBounds(1:2,:);
        StateBoundsTransformed = [positionLimits; cosThetaLimits; sinThetaLimits];
        minlimit(1,:) = StateBoundsTransformed(:,1);
        maxlimit(1,:) = StateBoundsTransformed(:,2);
        output(:,i) = (input - minlimit)./(maxlimit - minlimit);
    end
    end

    Arguments d'entrée

    réduire tout

    MPNet formé, spécifié comme objet mpnetSE2 .

    États prédits, spécifiés sous la forme d'une matrice 4-by n . n est le nombre d’états prédits. Chaque ligne est de la forme [x y cos(θ) sin(θ)]. x, y et θ sont les variables de l'espace d'état.

    Les variables de l'espace d'état x et y doivent être normalisées à la plage [0, 1] . L'angle d'orientation θ doit être compris dans la plage [–pi, pi]. Les unités sont en radians.

    Types de données : single | double

    États réels, spécifiés sous la forme d'une matrice 4 par n de vecteurs de lignes. n est le nombre total d’états. Chaque ligne est de la forme [x y cos(θ) sin(θ)]. x, y et θ sont les variables de l'espace d'état.

    Les variables de l'espace d'état x et y doivent être normalisées à la plage [0, 1] . L'angle d'orientation θ doit être compris dans la plage [-pi, pi]. Les unités sont en radians.

    Types de données : single | double

    Arguments de sortie

    réduire tout

    Valeur de perte calculée, renvoyée sous la forme d'un objet dlarray (Deep Learning Toolbox) .

    Références

    [1] Qureshi, Ahmed Hussain, Yinglong Miao, Anthony Simeonov, and Michael C. Yip. “Motion Planning Networks: Bridging the Gap Between Learning-Based and Classical Motion Planners.” IEEE Transactions on Robotics 37, no. 1 (February 2021): 48–66. https://doi.org/10.1109/TRO.2020.3006716.

    Capacités étendues

    Génération de code C/C++
    Générez du code C et C++ avec MATLAB® Coder™.

    Historique des versions

    Introduit dans R2023b

    Voir aussi

    Objets

    Fonctions