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 подготовить и предварительно обработать данные о последовательности, готовые к обучению с помощью пользовательского учебного цикла.

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

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

    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 ложь). Когда вы устанавливаете значение к 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