Дополните или обрезайте данные последовательности до той же длины
заполняет последовательности в массиве ячеек 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.