Main Content

Esta página se ha traducido mediante traducción automática. Haga clic aquí para ver la última versión en inglés.

loss

Calcular la pérdida entre los estados previstos y los estados reales

Desde R2023b

    Descripción

    ejemplo

    L = loss(mpnet,statePred,stateActual) calcula la pérdida entre los estados previstos y los estados reales mientras entrena las redes de planificación de movimiento (MPNet). La función calcula el valor de la pérdida calculando la distancia cuadrática media ponderada entre los estados reales y los estados pronosticados. Al entrenar la red, el objetivo es minimizar la pérdida entre los resultados previstos y los resultados reales. También puede utilizar la función loss para verificar la precisión de un MPNet entrenado durante la prueba.

    Nota

    Para ejecutar esta función, necesitará el Deep Learning Toolbox™.

    Ejemplos

    contraer todo

    Cargue un archivo de datos que contenga un MPNet previamente entrenado y parámetros de entrenamiento como pesos de pérdida, límites de estado y tamaño de codificación en el espacio de trabajo de 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]
    
    

    Configure el objeto mpnetSE2 para utilizar el MPNet previamente entrenado.

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

    Especifique las muestras del estado real para ground-truth.

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

    Especifique los valores de muestra del estado previsto.

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

    Para calcular la pérdida entre los estados reales y los estados pronosticados, debe normalizar las variables del espacio de estados x y y al rango [0, 1]. Utilice la función local preprocessVariables para normalizar las variables de estado.

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

    Calcule la pérdida entre las muestras de estado predichas y las muestras de estado real.

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

    Función de ayuda

    Utilice la función local preprocessVariables para normalizar las variables del espacio de estados. La función normaliza las variables del espacio de estados x y y al rango [0, 1].

    La función también ajusta los límites del ángulo de orientación del espacio de estado de entrada para que se encuentre dentro de un rango específico, para evitar valores 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

    Argumentos de entrada

    contraer todo

    MPNet entrenado, especificado como un objeto mpnetSE2 .

    Estados previstos, especificados como una matriz de 4 por n . n es el número de estados previstos. Cada fila tiene la forma [x y cos(θ) sin(θ)]. x, y y θ son las variables del espacio de estados.

    Las variables del espacio de estados x y y deben normalizarse al rango [0, 1] . El ángulo de orientación θ debe estar dentro del rango [–pi, pi]. Las unidades están en radianes.

    Tipos de datos: single | double

    Estados reales, especificados como una matriz de vectores fila de 4 por n . n es el número total de estados. Cada fila tiene la forma [x y cos(θ) sin(θ)]. x, y y θ son las variables del espacio de estados.

    Las variables del espacio de estados x y y deben normalizarse al rango [0, 1] . El ángulo de orientación θ debe estar dentro del rango [-pi, pi]. Las unidades están en radianes.

    Tipos de datos: single | double

    Argumentos de salida

    contraer todo

    Valor de pérdida calculado, devuelto como un objeto dlarray (Deep Learning Toolbox) .

    Referencias

    [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.

    Capacidades ampliadas

    Generación de código C/C++
    Genere código C y C++ mediante MATLAB® Coder™.

    Historial de versiones

    Introducido en R2023b

    Consulte también

    Objetos

    Funciones