Фактично, вихідні вектори не обчислюються з вхідних даних, використовуючи будь-яку математичну операцію. Натомість кожне вхідне ціле число використовується як індекс для доступу до таблиці, що містить усі можливі вектори. Саме тому вам потрібно вказати розмір лексики в якості першого аргументу (щоб таблицю можна було ініціалізувати).
Найбільш поширене застосування цього шару для обробки тексту. Подивимося простий приклад. Наш навчальний набір складається лише з двох фраз:
Сподіваємося побачити Вас найближчим часом
Приємно бачити вас знову
Таким чином, ми можемо кодувати ці фрази, присвоївши кожному слову унікальне ціле число (за порядком появи у нашому навчальному наборі даних, наприклад). Тоді наші фрази можна переписати як:
[0, 1, 2, 3, 4]
[5, 1, 2, 3, 6]
А тепер уявімо, що ми хочемо навчити мережу, перший шар якої - вбудовуючий шар. У цьому випадку ми повинні ініціалізувати його наступним чином:
Embedding(7, 2, input_length=5)
Перший аргумент (7) - це кількість різних слів у навчальному наборі. Другий аргумент (2) вказує на розмір вбудованих векторів. Input_length argumet, звичайно, визначає розмір кожної вхідної послідовності.
Після того, як мережа буде навчена, ми можемо отримати ваги вкладеного шару, який у цьому випадку буде розміром (7, 2) і може розглядатися як таблиця, яка використовується для відображення цілих чисел на вбудовування векторів:
+------------+------------+
| index | Embedding |
+------------+------------+
| 0 | [1.2, 3.1] |
| 1 | [0.1, 4.2] |
| 2 | [1.0, 3.1] |
| 3 | [0.3, 2.1] |
| 4 | [2.2, 1.4] |
| 5 | [0.7, 1.7] |
| 6 | [4.1, 2.0] |
+------------+------------+
Отже, згідно з цими вкладеннями, друга наша навчальна фраза буде представлена як:
[[0.7, 1.7], [0.1, 4.2], [1.0, 3.1], [0.3, 2.1], [4.1, 2.0]]
Спочатку це може здатися протилежним інтуїтивно зрозумілим, але основні механізми автоматичної диференціації (наприклад, Tensorflow або Theano) вдається оптимізувати ці вектори, пов'язані з кожним цілим вхідним числом, як і будь-який інший параметр вашої моделі. Також цікаво використовувати вбудовування, вивчені іншими методами / людьми в різних областях (див. Https://blog.keras.io/using-pre-trained-word-embeddings-in-a-keras-model.html ) як зроблено в [1].
[1] Лопес-Санчес, Д., Герреро, Ж.Р., Аррієта, А.Г., і Корчадо, Дж. М. Гібридизація метричного навчання та обгрунтування на основі випадків адаптивного виявлення кліків. Прикладна розвідка, 1-16.