ctc

Коннекционистская временная классификация (CTC) потеря для несогласованной классификации последовательностей

    Описание

    Операция CTC вычисляет потери коннекционистской временной классификации (CTC) между выровненными последовательностями.

    ctc функция вычисляет потери CTC между предсказаниями и целями, представленными как dlarray данные. Использование dlarray облегчает работу с данными высоких размерностей, позволяя пометить размеры. Для примера можно пометить, какие размерности соответствуют пространственным, временным, канальным и пакетным размерностям, используя 'S', 'T', 'C', и 'B' метки, соответственно. Для неопределенных и других размерностей используйте 'U' метка. Для dlarray функции объекта, которые работают над конкретными размерностями, можно задать метки размера путем форматирования dlarray объект непосредственно, или при помощи 'DataFormat' опция.

    пример

    loss = ctc(dlY,targets,YMask,targetsMask) возвращает потери CTC между форматированными dlarray dlY объекта содержащие предсказания и целевые значения targets использование предсказания и целевых масок YMask и targetsMask, соответственно.

    Для неформатированных входных данных используйте 'DataFormat' опция.

    loss = ctc(dlY,targets,YMask,targetsMask,'DataFormat',FMT) также задает формат размерности FMT когда dlY не является форматированным dlarray.

    loss = ctc(___,Name,Value) задает опции, использующие один или несколько аргументы пары "имя-значение" в дополнение к входным параметрам в предыдущих синтаксисах. Для примера, 'BlankIndex','last' задает пустой индекс, соответствующий последнему элементу словаря.

    Примеры

    свернуть все

    Создайте массив из 2 целевых последовательностей различной длины в 10 классах. Целевые последовательности не должны содержать пустой индекс, который по умолчанию равен 1.

    numObservations = 2;
    numClasses = 10;
    
    targets = cell(numObservations,1);
    targets{1} = [2 3 5 7 9 2 3 5 3 2 3];
    targets{2} = [2 3 3 3 4 4 4 6 8 8 8 10 3];

    Создайте случайные массивы последовательностей предсказания. Длина последовательностей предсказания должна быть больше или равной длине плюс количество повторных индексов соответствующей целевой последовательности. В этом случае первая последовательность имеет длину 11 без повторяющихся индексов, вторая последовательность имеет длину 13 с 6 повторяющимися индексами.

    Y = cell(numObservations,1);
    
    Y{1} = rand(numClasses,11);
    Y{2} = rand(numClasses,13 + 6);

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

    Y
    Y=2×1 cell array
        {10×11 double}
        {10×19 double}
    
    
    targets
    targets=2×1 cell array
        {[     2 3 5 7 9 2 3 5 3 2 3]}
        {[2 3 3 3 4 4 4 6 8 8 8 10 3]}
    
    

    Дополните предсказание и целевые последовательности во втором измерении с помощью padsequences а также вернуть соответствующую маску.

    [Y,YMask] = padsequences(Y,2);

    Дополните цели с помощью padsequences функция. Целевые значения должны быть положительными целыми числами от 1 до количества классов и не должны содержать пустой индекс, поэтому задайте значение заполнения 2.

    [targets,targetsMask] = padsequences(targets,2,'PaddingValue',2);

    The ctc функция требует целевые и целевые маски, заданные как 2-D массивы, удалите размерность синглтонного канала с помощью squeeze функция.

    targets = squeeze(targets);
    targetsMask = squeeze(targetsMask);

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

    dlY = dlarray(Y,'CTB');
    YMask = dlarray(YMask,'CTB');

    Точно так же преобразуйте заполненные целевые последовательности и маску в dlarray с форматом 'TB' (время, пакет).

    targets = dlarray(targets,'TB');
    targetsMask = dlarray(targetsMask,'TB');

    Вычислите потери CTC между предсказаниями и целями с помощью ctc функция.

    loss = ctc(dlY,targets,YMask,targetsMask)
    loss = 
      1×1 dlarray
    
       12.1568
    
    

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

    свернуть все

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

    Область предсказаний dlY должен иметь 'B' (пакет), 'C' (канал), и 'T' (время) размерность и может иметь различные длины последовательности к соответствующим целям в targets.

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

    Целевые последовательности, заданные как форматированный или неформатированный dlarray или числовой массив.

    Задайте цели как массив с размерностями, соответствующими наблюдениям и временным шагам целевых последовательностей. Например, задайте цели как форматированное dlarray объект с форматом 'BT' (пакет, время).

    Цели должны иметь то же количество наблюдений, что и предсказания. Целевые значения, соответствующие значениям маски, равным 1, должны быть положительными целыми числами между 1 и количеством каналов dlY и не должен включать пустой индекс.

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

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

    Совет

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

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

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

    Для каждого временного шага и наблюдения в маске соответствующими элементами в размерности канала должны быть все таковые или все нули.

    Совет

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

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

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

    Совет

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

    Аргументы в виде пар имя-значение

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

    Пример: 'BlankIndex','last' задает пустой индекс, соответствующий последнему элементу словаря

    Индекс пустого символа, заданный как разделенная разделенными запятой парами, состоящая из 'BlankIndex' и одно из следующих:

    • Положительное целое число - используйте элемент в словаре с заданным индексом в качестве пустого символа. Если 'BlankIndex' является целым числом, тогда это должно быть между 1 и количеством каналов dlY включительно.

    • 'last' - Используйте последний элемент словаря в качестве пустого символа.

    Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | string

    Размерность неформатированных входных данных, заданный как разделенная разделенными запятой парами, состоящая из 'DataFormat' и вектор символов или строковый скаляр FMT который обеспечивает метку для каждой размерности данных.

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

    • 'S' - Пространственный

    • 'C' - Канал

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

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

    • 'U' - Не определено

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

    Вы должны задать 'DataFormat' когда входные данные не являются форматированным dlarray.

    Пример: 'DataFormat','SSCB'

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

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

    свернуть все

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

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

    Введенный в R2021a