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