Дополните или обрезайте данные последовательности до той же длины
заполняет последовательности в массиве ячеек 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
X - Последовательности для заполненияПоследовательности для дополнения, заданные как вектор камер числовых или категориальных массивов.
Типы данных: cell
paddingDim - Размерность, по которой можно дополнитьРазмерность, по которой можно дополнить входные данные последовательности, заданная как положительное целое число.
Пример: 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') обрезает последовательности на каждом конце, чтобы соответствовать длине самой короткой входной последовательности.'Length' - Длина заполненных последовательностей'longest' (по умолчанию) | 'shortest' | положительное целое числоДлина заполненных последовательностей, заданная как одно из следующего:
'longest' - Дополните каждую входную последовательность такой же длиной, как и самую длинную входную последовательность.
'shortest' - Обрезать каждую входную последовательность до той же длины, что и самую короткую входную последовательность.
Положительное целое число - Дополните или обрезайте каждую входную последовательность до заданной длины.
Пример: padsequences(X,'Length','shortest')
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | string
'Direction' - Направление заполнения или усечения'right' (по умолчанию) | 'left' | 'both'Направление заполнения или усечения, заданное как одно из следующего:
'right' - Дополните или обрезайте в конце каждой исходной последовательности.
'left' - Дополните или обрезайте в начале каждой исходной последовательности.
'both' - Дополните или обрезайте в начале и конце каждой исходной последовательности. Половина необходимого заполнения или усечения применяется к каждому концу последовательности.
Пример: padsequences(X,'Direction','both')
Типы данных: char | string
'PaddingValue' - Значение, используемое для заполнения входа'auto' (по умолчанию) | 'symmetric' | числовой скаляр | категориальный скалярЗначение, используемое для заполнения входа, задается как одно из следующего:
'auto' - Определите значение [добавления автоматически в зависимости от типа данных входных последовательностей. Числовые последовательности заполнены 0. Категориальные последовательности заполнены <undefined>.
'symmetric' - Дополните каждую последовательность зеркальным отражением себя.
Числовой скаляр - Дополните каждую последовательность заданным числовым значением.
Категориальный скаляр - Дополните каждую последовательность заданным категориальным значением.
Пример: padsequences(X,'PaddingValue','symmetric')
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | categorical
'UniformOutput' - Флаг для возврата заполненных данных как равномерного массива true или 1 (по умолчанию) | false или 0Флаг для возврата заполненных данных как равномерного массива, заданный в виде числа или логического 1 (true) или 0 (false). Когда вы устанавливаете значение 0, XPad возвращается как вектор камеры с таким же размером и базовым типом данных, как и вход X.
Пример: padsequences(X,'UniformOutput',0)
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
XPad - Заполненные данные последовательностиЗаполненные данные последовательности, возвращенные как числовой массив, категориальный массив или вектор камеры из числовых или категориальных массивов.
Если вы задаете UniformOutput имя-значение, опция к true или 1функция объединяет заполненные последовательности по последней размерности. Последняя размерность XPad имеет тот же размер, что и количество последовательностей во входных X. XPad - массив с N + 1 размерности, где N количество размерностей массивов последовательностей в X. XPad имеет тот совпадающий тип данных, что и массивы во входных X.
Если вы задаете UniformOutput имя-значение, опция к false или 0функция возвращает заполненные последовательности в виде вектора камеры с таким же размером и базовым типом данных, как и вход X.
mask - Положение исходных данных последовательностиПоложение исходных данных последовательности в заполненных последовательностях, возвращаемое как логический массив или как вектор камеры логических массивов.
mask имеет тот же размер и тип данных, что и XPad. Значения 1 в mask соответствуют положениям исходных значений последовательности в XPad. Значения 0 соответствуют заполненным значениям.
Использование mask исключить заполненные значения из вычислений потерь с помощью "Mask" name-value опции в crossentropy функция.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.