Встройте дискретные данные
Встроить операция преобразует числовые индексы в числовые векторы, где индексы соответствуют дискретным данным. Используйте вложения, чтобы сопоставить дискретные данные, такие как категориальные значения или слова к числовым векторам.
Примечание
Эта функция применяет встроить операцию к dlarray
данные. Если вы хотите применить встроить операцию в layerGraph
объект или Layer
массив, используйте wordEmbeddingLayer
Объект (Text Analytics Toolbox).
Встройте мини-пакет категориальных функций.
Создайте массив категориальных функций, содержащих 5 наблюдений со значениями "Male"
или "Female"
.
X = categorical(["Male" "Female" "Male" "Female" "Female"])';
Инициализируйте веса встраивания. Задайте размерность встраивания 10, и словарь, соответствующий количеству категорий входных данных плюс один.
embeddingDimension = 10; vocabularySize = numel(categories(X)); weights = rand(embeddingDimension,vocabularySize+1);
Чтобы встроить категориальные данные, сначала преобразуйте его в мини-пакет числовых индексов.
X = double(X)
X = 5×1
2
1
2
1
1
Для отформатированного dlarray
введите, встроить функция расширяет в одиночный элемент 'C'
(канал) размерность с размером 1. Создайте отформатированный dlarray
объект, содержащий данные. Чтобы указать, что строки соответствуют наблюдениям, задайте формат 'BC'
(пакет, канал).
dlX = dlarray(X,'BC')
dlX = 1(C) x 5(B) dlarray 2 1 2 1 1
Встройте числовые индексы с помощью embed
функция. Встроить функция расширяется в 'C'
размерность.
dlY = embed(dlX,weights)
dlY = 10(C) x 5(B) dlarray 0.1576 0.8147 0.1576 0.8147 0.8147 0.9706 0.9058 0.9706 0.9058 0.9058 0.9572 0.1270 0.9572 0.1270 0.1270 0.4854 0.9134 0.4854 0.9134 0.9134 0.8003 0.6324 0.8003 0.6324 0.6324 0.1419 0.0975 0.1419 0.0975 0.0975 0.4218 0.2785 0.4218 0.2785 0.2785 0.9157 0.5469 0.9157 0.5469 0.5469 0.7922 0.9575 0.7922 0.9575 0.9575 0.9595 0.9649 0.9595 0.9649 0.9649
В этом случае выходом является embeddingDimension
- N
матрица с форматом 'CB'
(образуйте канал, пакет), где N
количество наблюдений. Каждый столбец содержит векторы встраивания.
Встройте мини-пакет текстовых данных.
textData = [ "Items are occasionally getting stuck in the scanner spools." "Loud rattling and banging sounds are coming from assembler pistons."];
Создайте массив маркируемых документов.
documents = tokenizedDocument(textData);
Чтобы закодировать текстовые данные как последовательности числовых индексов, создайте wordEncoding
объект.
enc = wordEncoding(documents);
Инициализируйте веса встраивания. Задайте размерность встраивания 100, и размер словаря, чтобы быть сопоставимыми с размером словаря, соответствующим количеству слов в кодировании слова плюс одно.
embeddingDimension = 100; vocabularySize = enc.NumWords; weights = rand(embeddingDimension,vocabularySize+1);
Преобразуйте маркируемые документы последовательностям векторов слова с помощью doc2sequence
функция. doc2sequence
функция, по умолчанию, отбрасывает лексемы из словаря во входных данных. Чтобы сопоставить лексемы из словаря с последним вектором из встраивания весов, установите 'UnknownWord'
опция к 'nan'
. doc2sequence
функция, по умолчанию, лево-заполняет входные последовательности нулями, чтобы иметь ту же длину
sequences = doc2sequence(enc,documents,'UnknownWord','nan')
sequences=2×1 cell array
{[ 0 1 2 3 4 5 6 7 8 9 10]}
{[11 12 13 14 15 2 16 17 18 19 10]}
Выход является массивом ячеек, где каждый элемент соответствует наблюдению. Каждым элементом является вектор-строка с элементами, представляющими отдельные лексемы в соответствующем наблюдении включая дополнительные значения.
Преобразуйте массив ячеек в числовой массив путем вертикальной конкатенации строк.
X = cat(1,sequences{:})
X = 2×11
0 1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 2 16 17 18 19 10
Преобразуйте числовые индексы в dlarray
. Поскольку строки и столбцы X
соответствуйте наблюдениям, и временные шаги, соответственно, задают формат 'BT'
.
dlX = dlarray(X,'BT')
dlX = 2(B) x 11(T) dlarray 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2 16 17 18 19 10
Встройте числовые индексы с помощью embed
функция. embed
функционируйте сопоставляет дополнительные лексемы (лексемы с индексом 0) и любые другие лексемы из словаря к тому же вектору встраивания из словаря.
dlY = embed(dlX,weights);
В этом случае выходом является embeddingDimension
- N
- S
матрица с форматом 'CBT'
, где N
и S
количество наблюдений и количество временных шагов, соответственно. Векторный dlY(:,n,t)
соответствует вектору встраивания такта t
из наблюдения n
.
dlX
— Входные данныеdlarray
возразите | числовой массивВходные данные в виде отформатированного dlarray
, бесформатный dlarray
, или числовой массив. Элементы dlX
должны быть неотрицательные целые числа или NaN
.
Функция возвращает векторы встраивания в weights
соответствие числовым индексам в dlX
. Если любые значения в dlX
нуль, NaN
, или больше, чем размер словаря, затем функция возвращает вектор из словаря для того элемента.
Когда dlX
не отформатированный dlarray
объект, необходимо задать формат этикетки размерности с помощью 'DataFormat'
опция. Кроме того, если dlX
числовой массив, затем weights
должен быть dlarray
объект.
Встроить операция расширяется в одноэлементную размерность канала входных данных, заданных 'C'
метка размерности. Если данные не имеют никакой заданной размерности канала, то функция принимает незаданную одноэлементную размерность канала.
weights
— Встраивание весовdlarray
возразите | числовой массивВстраивание весов в виде отформатированного dlarray
, бесформатный dlarray
, или числовой массив.
Матричный weights
задает размерность встраивания, размера словаря и векторов встраивания.
Размерность встраивания является количеством компонентов K
из встраивания. Таким образом, встраивание сопоставляет числовые индексы с векторами из длины K
. Размер словаря является количеством дискретных элементов V
во встраивании. Таким образом, количество дискретных элементов базовых данных, которые поддерживает встраивание. Встраивание сопоставляет индексы из словаря с тем же вектором встраивания из словаря.
Если weights
отформатированный dlarray
объект, затем это должно иметь формат 'CU'
или 'UC'
. Размерности, соответствующие, маркируют 'C'
и 'U'
должен иметь размер K
и V
+1, соответственно, где K
и V
представляйте размерность встраивания и размер словаря, соответственно. Дополнительный вектор соответствует вектору встраивания из словаря.
Если weights
не отформатированный dlarray
объект, затем weights
должен быть K
- (V
+1) матрица, где K
и V
представляйте размерность встраивания и размер словаря, соответственно.
Функция возвращает векторы встраивания в weights
соответствие числовым индексам в dlX
. Если любые значения в dlX
нуль, NaN
, или больше, чем размер словаря, затем функция возвращает вектор из словаря для того элемента.
FMT
— Порядок размерности неформатированных данныхПорядок размерности бесформатных входных данных в виде разделенной запятой пары, состоящей из 'DataFormat'
и символьный массив или строка FMT
это обеспечивает метку для каждой размерности данных. Каждый символ в FMT
должно быть одно из следующего:
'S'
— Пространственный
'C'
— Канал
'B'
— Пакет (например, выборки и наблюдения)
'T'
— Время (например, последовательности)
'U'
— Незаданный
Можно указать, что несколько размерностей пометили 'S'
или 'U'
. Можно использовать, маркирует 'C'
B
, и 'T'
самое большее однажды.
Необходимо задать 'DataFormat',FMT
когда входными данными не является отформатированный dlarray
.
Пример: 'DataFormat','SSCB'
Типы данных: char |
string
dlY
— Встраивание векторовdlarray
Встраивание векторов, возвращенных как dlarray
объект. Выход dlY
имеет тот же базовый тип данных как вход dlX
.
Функция возвращает векторы встраивания в weights
соответствие числовым индексам в dlX
. Если любые значения в dlX
нуль, NaN
, или больше, чем размер словаря, затем функция возвращает вектор из словаря для того элемента.
Векторы встраивания имеют K
элементы, где K
размерность встраивания. Размер размерностей dlY
зависьте от входных данных:
Если dlX
отформатированный dlarray
с 'C'
метка размерности, затем встроить операция расширяется в ту размерность. Таким образом, выход имеет тот же формат размерности как вход, 'C'
размерность имеет размер K
, другие размерности имеют тот же размер как соответствующие размерности входа.
Если dlX
отформатированный dlarray
без 'C'
размерность. Затем операция принимает одноэлементную размерность канала. Выход имеет 'C'
размерность и все другие размерности имеют те же метки размера и размерности. Таким образом, выход имеет тот же формат как вход и также 'C'
размерность, 'C'
размерность имеет размер K
, другие размерности имеют тот же размер как соответствующие размерности входа.
Если dlX
не отформатированный dlarray
объект и 'DataFormat'
содержит 'C'
размерность, затем встроить операция расширяется в ту размерность. Таким образом, выход имеет количество размерностей как вход, размерность, соответствующая 'C'
размерность имеет размер K
, другие размерности имеют тот же размер как соответствующие размерности входа.
Если dlX
не отформатированный dlarray
объект и 'DataFormat'
не содержит размерность 'C', затем встроить операция вставляет новую размерность вначале. Таким образом, выход имеет еще одну размерность как вход, первая размерность, соответствующая 'C'
размерность имеет размер K
, другие размерности имеют тот же размер как соответствующие размерности входа.
Указания и ограничения по применению:
Когда по крайней мере одним из следующих входных параметров является gpuArray
или dlarray
с базовыми данными типа gpuArray
, эта функция работает на графическом процессоре.
dlX
weights
Для получения дополнительной информации смотрите функции MATLAB Запуска на графическом процессоре (Parallel Computing Toolbox).
dlarray
| dlfeval
| dlgradient
| lstm
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.