l1loss

Потеря L1 для задач регрессии

    Описание

    Операция потерь L1 вычисляет потерю L1, данную сетевые предсказания и целевые значения. Когда Reduction опцией является "sum" и NormalizationFactor опцией является "batch-size", вычисленное значение известно как среднюю абсолютную погрешность (MAE).

    l1loss функция вычисляет потерю L1 с помощью dlarray данные. Используя dlarray объекты делают работу с высокими размерными данными легче, позволяя вам пометить размерности. Например, можно пометить, которому размерности соответствуют пространственный, время, канал, и обрабатывают размерности в пакетном режиме с помощью "S"TC, и "B" метки, соответственно. Для незаданных и других размерностей используйте "U" метка. Для dlarray возразите функциям, которые действуют по конкретным размерностям, можно задать метки размерности путем форматирования dlarray возразите непосредственно, или при помощи DataFormat опция.

    пример

    loss = l1loss(dlY,targets) вычисляет потерю MAE для предсказаний dlY и целевые значения targets. Вход dlY должен быть отформатированный dlarray. Выход loss бесформатный dlarray скаляр.

    loss = l1loss(dlY,targets,weights) вычисляет взвешенную потерю L1 с помощью значений веса weights. Выход loss бесформатный dlarray скаляр.

    loss = l1loss(___,DataFormat=FMT) вычисляет потерю для бесформатного dlarray объект dlY и целевые значения с форматом, заданным FMT. Используйте этот синтаксис с любым из входных параметров в предыдущих синтаксисах.

    пример

    loss = l1loss(___,Name=Value) задает дополнительные опции с помощью одних или нескольких аргументов name-value. Например, l1loss(dlY,targets,Reduction="none") вычисляет потерю L1, не сокращая выход к скаляру.

    Примеры

    свернуть все

    Создайте массив предсказаний для 12 наблюдений более чем 10 ответов.

    numResponses = 10;
    numObservations = 12;
    
    Y = rand(numResponses,numObservations);
    dlY = dlarray(Y,'CB');

    Просмотрите размер и формат предсказаний.

    size(dlY)
    ans = 1×2
    
        10    12
    
    
    dims(dlY)
    ans = 
    'CB'
    

    Создайте массив случайных целей.

    targets = rand(numResponses,numObservations);

    Просмотрите размер целей.

    size(targets)
    ans = 1×2
    
        10    12
    
    

    Вычислите потерю средней абсолютной погрешности (MAE) между предсказаниями и целями с помощью l1loss функция.

    loss = l1loss(dlY,targets)
    loss = 
      1x1 dlarray
    
        3.1679
    
    

    Создайте массивы предсказаний и целей для 12 последовательностей различных длин более чем 10 ответов.

    numResponses = 10;
    numObservations = 12;
    maxSequenceLength = 15;
    
    sequenceLengths = randi(maxSequenceLength,[1 numObservations]);
    
    Y = cell(numObservations,1);
    targets = cell(numObservations,1);
    
    for i = 1:numObservations
        Y{i} = rand(numResponses,sequenceLengths(i));
        targets{i} = rand(numResponses,sequenceLengths(i));
    end

    Просмотрите массивы ячеек предсказаний и целей.

    Y
    Y=12×1 cell array
        {10x13 double}
        {10x14 double}
        {10x2  double}
        {10x14 double}
        {10x10 double}
        {10x2  double}
        {10x5  double}
        {10x9  double}
        {10x15 double}
        {10x15 double}
        {10x3  double}
        {10x15 double}
    
    
    targets
    targets=12×1 cell array
        {10x13 double}
        {10x14 double}
        {10x2  double}
        {10x14 double}
        {10x10 double}
        {10x2  double}
        {10x5  double}
        {10x9  double}
        {10x15 double}
        {10x15 double}
        {10x3  double}
        {10x15 double}
    
    

    Заполните предсказание и предназначайтесь для последовательностей во втором измерении с помощью padsequences функционируйте и также возвратите соответствующую маску.

    [Y,mask] = padsequences(Y,2);
    targets = padsequences(targets,2);

    Преобразуйте заполненные последовательности в dlarray с форматом "CTB" (канал, время, пакет). Поскольку отформатированный dlarray объекты автоматически переставляют размерности базовых данных, сохраняют порядок сопоставимым, также преобразовывая цели и маску к отформатированному dlarray объекты с форматом "CTB" (образуйте канал, обработайте в пакетном режиме, время).

    dlY = dlarray(Y,"CTB");
    targets = dlarray(targets,"CTB");
    mask = dlarray(mask,"CTB");

    Просмотрите размеры баллов предсказания, целей и маски.

    size(dlY)
    ans = 1×3
    
        10    12    15
    
    
    size(targets)
    ans = 1×3
    
        10    12    15
    
    
    size(mask)
    ans = 1×3
    
        10    12    15
    
    

    Вычислите среднюю абсолютную погрешность (MAE) между предсказаниями и целями. Чтобы предотвратить значения потерь, вычисленные от дополнения от содействия до потери, установите Mask опция к маске, возвращенной padsequences функция.

    loss = l1loss(dlY,targets,Mask=mask)
    loss = 
      1x1 dlarray
    
       32.6172
    
    

    Входные параметры

    свернуть все

    Предсказания в виде отформатированного dlarray, бесформатный dlarray, или числовой массив. Когда dlY не отформатированный dlarray, необходимо задать формат размерности с помощью DataFormat опция.

    Если dlY числовой массив, targets должен быть dlarray.

    Целевые ответы в виде отформатированного или бесформатного dlarray или числовой массив.

    Размер каждой размерности targets должен совпадать с размером соответствующей размерности dlY.

    Если targets отформатированный dlarray, затем его формат должен совпасть с форматом dlY, или то же самое как DataFormat если dlY восстанавливается после форматирования.

    Если targets бесформатный dlarray или числовой массив, затем функция применяет формат dlY или значение DataFormat к targets.

    Совет

    Отформатированный dlarray объекты автоматически переставляют размерности базовых данных, чтобы иметь, заказывают "S" (пространственный), "C" (канал), "B" (пакет), "T" (время), затем "U" (незаданный). Гарантировать что размерности dlY и targets сопоставимы, когда dlY отформатированный dlarray, также задайте targets как отформатированный dlarray.

    Веса в виде отформатированного или бесформатного dlarray или числовой массив.

    Если weights вектор и dlY имеет две или больше неодноэлементных размерности, затем weights должен быть отформатированный dlarray, где меткой размерности неодноэлементной размерности является любой "C" (канал) или "B" (пакет) и имеет размер, который совпадает с размером соответствующей размерности в dlY.

    Если weights отформатированный dlarray с двумя или больше неодноэлементными размерностями затем его формат должен совпадать с форматом dlY.

    Если weights не отформатированный dlarray и имеет две или больше неодноэлементных размерности, затем его размер должен совпадать с размером dlY и функция использует тот же формат в качестве dlY. В качестве альтернативы, чтобы задать формат весов, используйте WeightsFormat опция.

    Аргументы name-value

    Задайте дополнительные пары аргументов как Name1=Value1,...,NameN=ValueN, где Name имя аргумента и Value соответствующее значение. Аргументы name-value должны появиться после других аргументов, но порядок пар не имеет значения.

    Пример: loss = l1loss(dlY,targets,Reduction="none") задает, чтобы вычислить потерю L1, не сокращая выход к скаляру

    Маска, указывающая, который элементы включать для расчета потерь в виде dlarray объект, логический массив или числовой массив с тем же размером как dlY.

    Функция включает и исключает элементы входных данных для расчета потерь, когда соответствующее значение в маске равняется 1 и 0, соответственно.

    Значением по умолчанию является логический массив из единиц с тем же размером как dlY.

    Совет

    Отформатированный dlarray объекты автоматически переставляют размерности базовых данных, чтобы иметь этот порядок: "S" (пространственный), "C" (канал), "B" (пакет), "T" (время) и "U" (незаданный). Например, dlarray объекты автоматически переставляют размерности данных с форматом "TSCSBS" иметь формат "SSSCBT".

    Гарантировать что размерности dlY и маска сопоставима, когда dlY отформатированный dlarray, также задайте маску как отформатированный dlarray.

    Режим для того, чтобы редуцировать массив значений потерь в виде одного из следующего:

    • "sum" — Суммируйте все элементы в массиве значений потерь. В этом случае, выход loss isscalar.

    • "none" — Не редуцируйте массив значений потерь. В этом случае, выход loss бесформатный dlarray объект с тем же размером как dlY.

    Делитель для нормализации уменьшаемой потери, когда Reduction "sum"В виде одного из следующего:

    • "batch-size" — Нормируйте потерю путем деления его на количество наблюдений в dlX.

    • "all-elements" — Нормируйте потерю путем деления его на число элементов dlX.

    • "mask-included" — Нормируйте потерю путем деления значений потерь на количество включенных элементов, указанных маской для каждого наблюдения независимо. Чтобы использовать эту опцию, необходимо задать маску с помощью Mask опция.

    • "none" — Не нормируйте потерю.

    Порядок размерности бесформатных входных данных в виде вектора символов или строкового скаляра FMT это обеспечивает метку для каждой размерности данных.

    Когда вы задаете формат dlarray объект, каждый символ обеспечивает метку для каждой размерности данных и должен быть одним из следующего:

    • "S" — Пространственный

    • "C" — Канал

    • "B" — Пакет (например, выборки и наблюдения)

    • "T" — Время (например, временные шаги последовательностей)

    • "U" — Незаданный

    Можно указать, что несколько размерностей пометили "S" или "U". Можно использовать, маркирует "C"B, и "T" самое большее однажды.

    Необходимо задать DataFormat когда входными данными не является отформатированный dlarray.

    Типы данных: char | string

    Порядок размерности весов в виде вектора символов или строкового скаляра, который обеспечивает метку для каждой размерности весов.

    Когда вы задаете формат dlarray объект, каждый символ обеспечивает метку для каждой размерности данных и должен быть одним из следующего:

    • "S" — Пространственный

    • "C" — Канал

    • "B" — Пакет (например, выборки и наблюдения)

    • "T" — Время (например, временные шаги последовательностей)

    • "U" — Незаданный

    Можно указать, что несколько размерностей пометили "S" или "U". Можно использовать, маркирует "C"B, и "T" самое большее однажды.

    Необходимо задать WeightsFormat когда weights числовой вектор и dlY имеет две или больше неодноэлементных размерности.

    Если weights не вектор или оба weights и dlY векторы, затем значение по умолчанию WeightsFormat совпадает с форматом dlY.

    Типы данных: char | string

    Выходные аргументы

    свернуть все

    Потеря L1, возвращенная как бесформатный dlarray. Выход loss бесформатный dlarray с тем же базовым типом данных как вход dlY.

    Размер loss зависит от Reduction опция.

    Алгоритмы

    свернуть все

    Потеря L1

    Операция потерь L1 вычисляет потерю L1, данную сетевые предсказания и целевые значения. Когда Reduction опцией является "sum" и NormalizationFactor опцией является "batch-size", вычисленное значение известно как среднюю абсолютную погрешность (MAE).

    Для каждого элемента Yj входа, l1loss функция вычисляет соответствующее поэлементное использование значений потерь

    lossj=|YjTj|,

    где Yj является ожидаемым значением, и Tj является соответствующим целевым значением.

    Чтобы уменьшать значения потерь до скаляра, функция затем уменьшает поэлементную потерю с помощью формулы

    loss=1Njmjwjlossj,

    где N является коэффициентом нормализации, mj является значением маски для элемента j, и wj является значением веса для элемента j.

    Если вы не решили уменьшать потерю, то функция применяет маску и веса к значениям потерь непосредственно:

    lossj*=mjwjlossj

    Расширенные возможности

    Введенный в R2021b