Заполните или обрежьте данные о последовательности до той же длины
заполняет последовательности в массиве ячеек 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
ложь
). Когда вы устанавливаете значение к 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"
опция значения имени в crossentropy
функция.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.