exponenta event banner

padsequences

Вставка или усечение данных последовательности до одинаковой длины

    Описание

    пример

    XPad = padsequences(X,paddingDim) размещает последовательности в массиве ячеек X вдоль размера, заданного paddingDim. Функция добавляет заполнение в конце каждой последовательности, чтобы соответствовать размеру самой длинной последовательности в X. Дополненные последовательности объединяются, и функция возвращается XPad в виде массива.

    пример

    [XPad,mask] = padsequences(X,paddingDim) дополнительно возвращает логический массив, представляющий позиции исходных данных последовательности в XPad, . Положение значений true или 1 в mask соответствуют позициям исходных данных последовательности в XPad; значения false или 0 соответствуют заполненным значениям.

    пример

    [___] = padsequences(X,paddingDim,Name,Value) указывает параметры, использующие один или несколько аргументов «имя-значение» в дополнение к входным и выходным аргументам в предыдущих синтаксисах. Например, 'PaddingValue','left' добавляет заполнение в начало исходной последовательности.

    Примеры

    свернуть все

    Данные последовательности площадок готовы для обучения.

    Загрузите данные последовательности.

    s = japaneseVowelsTrainData;

    Предварительно обработанные данные содержат 270 наблюдений каждый с 12 признаками последовательности. Продолжительность наблюдений варьируется от 7 до 26 временных шагов.

    Поместите данные с нулями той же длины, что и самая длинная последовательность. Функция применяется в правой части данных. Укажите измерение, содержащее временные шаги, в качестве измерения заполнения. Для этого примера размер равен 2.

    sPad = padsequences(s,2);

    Проверьте размер дополненных последовательностей.

    size(sPad)
    ans = 1×3
    
        12    26   270
    
    

    Использовать padsequences расширить или сократить каждую последовательность до фиксированной длины путем добавления или удаления данных на обоих концах последовательности, в зависимости от длины исходной последовательности.

    Загрузите данные последовательности.

    s = japaneseVowelsTrainData;

    Предварительно обработанные данные содержат 270 наблюдений каждый с 12 признаками последовательности. Продолжительность наблюдений варьируется от 7 до 26 временных шагов.

    Обработайте данные так, чтобы каждая последовательность была ровно 14 временных шагов. Для более коротких последовательностей требуется заполнение, в то время как более длинные последовательности должны быть усечены. Вставка или усечение по обеим сторонам данных. Для дополненных последовательностей примените симметричное заполнение так, чтобы заполненные значения были зеркальными отражениями исходных значений последовательности.

    [sPad,mask] = padsequences(s,2,'Length',14,'Direction','both','PaddingValue','symmetric');

    Сравните некоторые из дополненных последовательностей с исходной последовательностью. Каждое наблюдение содержит 12 элементов, поэтому извлеките один элемент для сравнения.

    Извлеките первую особенность 74-го наблюдения. Эта последовательность короче 14 временных шагов.

    s{74}(1,:)
    ans = 1×9
    
        0.6691    0.5291    0.3820    0.3107    0.2546    0.1942    0.0931   -0.0179   -0.1081
    
    
    sPad(1,:,74)
    ans = 1×14
    
        0.5291    0.6691    0.6691    0.5291    0.3820    0.3107    0.2546    0.1942    0.0931   -0.0179   -0.1081   -0.1081   -0.0179    0.0931
    
    
    mask(1,:,74)
    ans = 1×14 logical array
    
       0   0   1   1   1   1   1   1   1   1   1   0   0   0
    
    

    Функция центрирует последовательность и площадки на обоих концах, отражая значения на концах последовательности. Маска показывает расположение исходных значений последовательности.

    Извлеките первую особенность 28-го наблюдения. Эта последовательность длиннее 14 временных шагов.

    s{28}(1,:)
    ans = 1×16
    
        1.1178    1.0772    1.2365    1.4858    1.6191    1.4893    1.2791    1.4692    1.5592    1.5112    1.5144    1.5871    1.4848    1.2978    1.1336    1.0280
    
    
    sPad(1,:,28)
    ans = 1×14
    
        1.0772    1.2365    1.4858    1.6191    1.4893    1.2791    1.4692    1.5592    1.5112    1.5144    1.5871    1.4848    1.2978    1.1336
    
    
    mask(1,:,28)
    ans = 1×14 logical array
    
       1   1   1   1   1   1   1   1   1   1   1   1   1   1
    
    

    Функция центрирует последовательность и усекает ее на обоих концах. Маска показывает, что все данные в результирующей последовательности являются частью исходной последовательности.

    Используйте padsequences функция в сочетании с minibatchqueue подготовка и предварительная обработка данных последовательности, готовых для обучения с использованием пользовательского цикла обучения.

    В примере используются данные обучения распознаванию деятельности человека. Данные содержат шесть временных рядов данных датчиков, полученных от смартфона, надеваемого на корпус. Каждая последовательность имеет три признака и варьирует по длине. Три характеристики соответствуют показаниям акселерометра в трех различных направлениях.

    Загрузите данные обучения. Объединение данных и меток в единое хранилище данных.

    s = load("HumanActivityTrain.mat");
    
    dsXTrain = arrayDatastore(s.XTrain,'OutputType','same');
    dsYTrain = arrayDatastore(s.YTrain,'OutputType','same');
    
    dsTrain = combine(dsXTrain,dsYTrain);

    Использовать minibatchqueue для обработки мини-пакетов данных последовательности. Определение пользовательской функции предварительной обработки мини-партии preprocessMiniBatch (определено в конце этого примера) для заполнения данных последовательности и меток и одноконтактного кодирования последовательностей меток. Чтобы также вернуть маску дополненных данных, укажите три выходные переменные для minibatchqueue объект.

    miniBatchSize = 2;
    mbq = minibatchqueue(dsTrain,3,...
        'MiniBatchSize',miniBatchSize,...
        'MiniBatchFcn', @preprocessMiniBatch);

    Проверьте размер мини-партий.

    [X,Y,mask] = next(mbq);
    size(X)
    ans = 1×3
    
               3       64480           2
    
    
    size(mask)
    ans = 1×3
    
               3       64480           2
    
    

    Каждая мини-партия имеет два наблюдения. Функция размещает последовательности того же размера, что и самая длинная последовательность в мини-партии. Маска имеет тот же размер, что и дополненные последовательности, и показывает местоположение исходных значений данных в дополненных данных последовательности.

    size(Y)
    ans = 1×3
    
               5       64480           2
    
    

    Заполненные метки одноконтактно кодируются в цифровые данные, готовые для обучения.

    function [xPad,yPad,mask] = preprocessMiniBatch(X,Y)
        [xPad,mask] = padsequences(X,2);
        yPad = padsequences(Y,2);
        yPad = onehotencode(yPad,1);
    end

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

    свернуть все

    Последовательности для вставки, определяемые как вектор ячейки числовых или категориальных массивов.

    Типы данных: cell

    Размер, вдоль которого подаются входные данные последовательности, заданные как положительное целое число.

    Пример: 2

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

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

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

    Пример: padsequences(X,'Length','shortest','Direction','both') усекает последовательности на каждом конце, чтобы соответствовать длине самой короткой входной последовательности.

    Длина заполненных последовательностей, указанная как одна из следующих:

    • 'longest' - Каждая входная последовательность должна иметь ту же длину, что и самая длинная входная последовательность.

    • 'shortest' - Усечение каждой входной последовательности до той же длины, что и самая короткая входная последовательность.

    • Положительное целое число - подушечка или усечение каждой входной последовательности до указанной длины.

    Пример: padsequences(X,'Length','shortest')

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

    Направление заполнения или усечения, указанное как одно из следующих:

    • 'right' - Прокладка или усечение в конце каждой исходной последовательности.

    • 'left' - Подушечка или усечение в начале каждой исходной последовательности.

    • 'both' - Подушечка или усечение в начале и конце каждой исходной последовательности. Половина требуемого заполнения или усечения применяется к каждому концу последовательности.

    Пример: padsequences(X,'Direction','both')

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

    Значение, используемое для ввода на площадку, указывается как одно из следующих значений:

    • 'auto' - Автоматическое определение [добавляемого значения в зависимости от типа данных входных последовательностей. Числовые последовательности дополняются 0. Категориальные последовательности дополняются <undefined>.

    • 'symmetric' - Наклейка каждой последовательности с зеркальным отражением себя.

    • Числовой скаляр - каждая последовательность с указанным числовым значением.

    • Скаляр категорийности - каждая последовательность с указанным значением категориальности.

    Пример: padsequences(X,'PaddingValue','symmetric')

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

    Флаг для возврата дополненных данных в виде однородного массива, заданного как числовой или логический 1 (true) или 0 (false). При установке значения 0, XPad возвращается в виде вектора ячейки с тем же размером и базовым типом данных, что и входной X.

    Пример: padsequences(X,'UniformOutput',0)

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

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

    свернуть все

    Дополненные данные последовательности, возвращаемые в виде числового массива, категориального массива или вектора ячейки числовых или категориальных массивов.

    Если установить UniformOutput параметр «имя-значение» для true или 1функция объединяет дополненные последовательности по последнему измерению. Последнее измерение XPad имеет тот же размер, что и число последовательностей на входе X. XPad является массивом с N + 1 размеры, где N - количество измерений массивов последовательностей в X. XPad имеет тот же тип данных, что и массивы на входе X.

    Если установить UniformOutput параметр «имя-значение» для false или 0функция возвращает дополненные последовательности в виде вектора ячейки с тем же размером и базовым типом данных, что и входной X.

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

    mask имеет тот же размер и тип данных, что и XPad. Значения 1 в mask соответствуют позициям исходных значений последовательности в XPad. Значения 0 соответствуют заполненным значениям.

    Использовать mask для исключения заполненных значений из расчетов потерь с помощью "Mask" параметр «имя-значение» в crossentropy функция.

    Представлен в R2021a