embed

Встройте дискретные данные

    Описание

    Встроить операция преобразует числовые индексы в числовые векторы, где индексы соответствуют дискретным данным. Используйте вложения, чтобы сопоставить дискретные данные, такие как категориальные значения или слова к числовым векторам.

    Примечание

    Эта функция применяет встроить операцию к dlarray данные. Если вы хотите применить встроить операцию в layerGraph объект или Layer массив, используйте wordEmbeddingLayer Объект (Text Analytics Toolbox).

    пример

    dlY = embed(dlX,weights) возвращает векторы встраивания в weights соответствие числовым индексам в отформатированном dlarray объект dlX.

    dlY = embed(dlX,weights,'DataFormat',FMT)также задает формат размерности FMT когда dlX не отформатированный dlarray объект. Выход dlY бесформатный dlarray с той же размерностью заказывают как dlX.

    Примеры

    свернуть все

    Встройте мини-пакет категориальных функций.

    Создайте массив категориальных функций, содержащих 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
        {1x11 double}
        {1x11 double}
    
    

    Выход является массивом ячеек, где каждый элемент соответствует наблюдению. Каждым элементом является вектор-строка с элементами, представляющими отдельные лексемы в соответствующем наблюдении включая дополнительные значения.

    Преобразуйте массив ячеек в числовой массив путем вертикальной конкатенации строк.

    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.

    Входные параметры

    свернуть все

    Входные данные в виде dlarray объект с или без меток размерности или числового массива. Элементы dlX должны быть неотрицательные целые числа или NaN.

    Функция возвращает векторы встраивания в weights соответствие числовым индексам в dlX. Если любые значения в dlX нуль, NaN, или больше, чем размер словаря, затем функция возвращает вектор из словаря для того элемента.

    Когда dlX не отформатированный dlarray объект, необходимо задать формат этикетки размерности с помощью 'DataFormat' опция. Кроме того, если dlX числовой массив, затем weights должен быть dlarray объект.

    Встроить операция расширяется в одноэлементную размерность канала входных данных, заданных 'C' метка размерности. Если данные не имеют никакой заданной размерности канала, то функция принимает незаданную одноэлементную размерность канала.

    Встраивание весов в виде 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, или больше, чем размер словаря, затем функция возвращает вектор из словаря для того элемента.

    Порядок размерности бесформатных входных данных в виде разделенной запятой пары, состоящей из 'DataFormat' и символьный массив или строка FMT это обеспечивает метку для каждой размерности данных. Каждый символ в FMT должно быть одно из следующего:

    • 'S' — Пространственный

    • 'C' — Канал

    • 'B' — Пакет (например, выборки и наблюдения)

    • 'T' — Время (например, последовательности)

    • 'U' — Незаданный

    Можно указать, что несколько размерностей пометили 'S' или 'U'. Можно использовать, маркирует 'C'B, и 'T' самое большее однажды.

    Необходимо задать 'DataFormat',FMT когда входные данные dlX не отформатированный dlarray.

    Пример: 'DataFormat','SSCB'

    Типы данных: char | string

    Выходные аргументы

    свернуть все

    Встраивание векторов, возвращенных как 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, другие размерности имеют тот же размер как соответствующие размерности входа.

    Расширенные возможности

    Введенный в R2020b