Вектор слова в TensorFlow
Слова в модели задают целыми номерами в словаре. Сам номер мало что говорит о смысле, поэтому его переводят в вектор слова - набор чисел фиксированной длины, который подбирают при обучении.
Класс Embedding хранит таблицу
таких векторов. При создании указывают
размер словаря и длину вектора.
На вход подают целые номера слов,
на выходе получают готовые строки
из таблицы.
Создадим слой с пятью словами и вектором длины три. Подадим одну фразу из трёх номеров и выведем форму ответа:
import tensorflow as tf
ids = tf.constant([[2, 0, 1]])
layer = tf.keras.layers.Embedding(5, 3)
vectors = layer(ids)
print(vectors.shape)
# выведет (1, 3, 3)
Первая ось - размер партии, вторая - число слов во фразе, третья - длина вектора. Для двух фраз в одной партии форма меняется только по оси партии:
import tensorflow as tf
ids = tf.constant([[1, 2], [0, 3]])
layer = tf.keras.layers.Embedding(4, 2)
vectors = layer(ids)
print(vectors.shape)
Задайте таблицу на десять слов
с длиной вектора четыре. Подайте
на неё одну строку номеров
[0, 5, 2] и выведите
форму результата.
Соберите партию из двух строк
[1, 3] и [2, 0].
Пропустите их через таблицу
на шесть слов с вектором длины
5 и выведите форму
ответа.
Создайте целые номера одной
фразы длины пять в одной строке
партии. Узнайте форму тензора
после перевода в векторы при
длине вектора 8 и словаре
из двадцати слов.