Слой Embedding
Слой Embedding применяется для преобразования
целочисленных индексов в плотные векторы
фиксированной размерности. Первым параметром
слой принимает размер словаря (максимальный
индекс + 1), вторым - размерность выходного
вектора. Третьим параметром можно передать
форму входных данных. Этот слой часто
используется в задачах обработки естественного
языка для представления слов в виде векторов.
Синтаксис
tf.keras.layers.Embedding(input_dim, output_dim, [input_length])
Пример
Давайте создадим слой Embedding с размером
словаря 10 и размерностью выходного вектора
3, а затем применим его к тензору индексов:
import tensorflow as tf
layer = tf.keras.layers.Embedding(input_dim=10, output_dim=3)
t = tf.constant([1, 2, 3, 4, 5])
res = layer(t)
print(res)
Результат выполнения кода:
tf.Tensor(
[[ 0.02853646 -0.03659466 0.01307705]
[ 0.01991716 -0.04187349 0.00244924]
[ 0.02727077 0.00220152 -0.0078701 ]
[-0.04043824 -0.04838318 -0.00330355]
[-0.00746578 0.00370527 0.01271417]],
shape=(5, 3), dtype=float32)
Пример
Давайте создадим слой Embedding и передадим
ему на вход двумерный тензор индексов:
import tensorflow as tf
layer = tf.keras.layers.Embedding(input_dim=10, output_dim=3)
t = tf.constant([[1, 2, 3], [4, 5, 6]])
res = layer(t)
print(res)
Результат выполнения кода:
tf.Tensor(
[[[ 0.02853646 -0.03659466 0.01307705]
[ 0.01991716 -0.04187349 0.00244924]
[ 0.02727077 0.00220152 -0.0078701 ]]
[[-0.04043824 -0.04838318 -0.00330355]
[-0.00746578 0.00370527 0.01271417]
[-0.00646333 0.04049467 -0.02781747]]],
shape=(2, 3, 3), dtype=float32)
Пример
Давайте получим матрицу весов слоя Embedding
с помощью метода get_weights:
import tensorflow as tf
layer = tf.keras.layers.Embedding(input_dim=10, output_dim=3)
t = tf.constant([1, 2, 3])
res = layer(t)
weights = layer.get_weights()
print(weights[0].shape)
Результат выполнения кода:
(10, 3)