tf.keras.layers.Embedding
| Просмотреть исходный код на GitHub |
Преобразует положительные целые числа (индексы) в плотные векторы фиксированной размерности.
tf.keras.layers.Embedding(
input_dim,
output_dim,
embeddings_initializer='uniform',
embeddings_regularizer=None,
activity_regularizer=None,
embeddings_constraint=None,
mask_zero=False,
input_length=None,
**kwargs
)
Например: [[4], [20]] -> [[0.25, 0.1], [0.6, -0.2]]
Этот слой может быть использован только для положительных целочисленных входных данных фиксированного диапазона. Слои предобработки tf.keras.layers.TextVectorization, tf.keras.layers.StringLookup и tf.keras.layers.IntegerLookup могут помочь подготовить входные данные для слоя Embedding.
Этот слой принимает tf.Tensor и tf.RaggedTensor входные данные. Он не может быть вызван с tf.SparseTensor входными данными.
Пример:
model = tf.keras.Sequential()
model.add(tf.keras.layers.Embedding(1000, 64, input_length=10))
# The model will take as input an integer matrix of size (batch,
# input_length), and the largest integer (i.e. word index) in the input
# should be no larger than 999 (vocabulary size).
# Now model.output_shape is (None, 10, 64), where `None` is the batch
# dimension.
input_array = np.random.randint(1000, size=(32, 10))
model.compile('rmsprop', 'mse')
output_array = model.predict(input_array)
print(output_array.shape)
(32, 10, 64)
| Аргументы | |
|---|---|
input_dim | Целое число. Размер словаря, т.е. максимальный целочисленный индекс + 1. |
output_dim | Целое число. Размерность плотного вложения. |
embeddings_initializer | Инициализатор для матрицы embeddings (см. keras.initializers). |
embeddings_regularizer | Функция регуляризации, применяемая к матрице embeddings (см. keras.regularizers). |
embeddings_constraint | Функция ограничения, применяемая к матрице embeddings (см. keras.constraints). |
mask_zero | Булево значение, указывает, является ли входное значение 0 специальным «заполняющим» значением, которое должно быть замаскировано. Это полезно при использовании рекуррентных слоёв, которые могут принимать входные данные переменной длины. Если это True, то все последующие слои в модели должны поддерживать маскирование, иначе будет выброшено исключение. Если mask_zero установлено в True, то индекс 0 не может быть использован в словаре (input_dim должен быть равен размеру словаря + 1). |
input_length | Длина последовательностей входных данных, если она постоянна. Этот аргумент необходим, если вы собираетесь соединять Flatten и Dense слои вверх по потоку (без него нельзя вычислить форму плотных выходных данных). |
Форма входных данных:
2D тензор с формой: (batch_size, input_length).
Форма выходных данных:
3D тензор с формой: (batch_size, input_length, output_dim).
Примечание по размещению переменных: По умолчанию, если доступна видеокарта, матрица вложения будет размещена на видеокарте. Это обеспечивает наилучшую производительность, но может вызвать проблемы:
- Вы, возможно, используете оптимизатор, который не поддерживает разреженные ядра видеокарты. В этом случае при обучении модели будет отображено сообщение об ошибке.
- Матрица вложения может быть слишком большой, чтобы поместиться на вашей видеокарте. В этом случае отобразится ошибка «Недостаточно памяти» (OOM).
В таких случаях следует разместить матрицу вложения в оперативной памяти процессора. Это можно сделать с помощью области устройства, как показано ниже:
with tf.device('cpu:0'):
embedding_layer = Embedding(...)
embedding_layer.build()
Заранее созданный экземпляр embedding_layer может быть добавлен в модель Sequential (например, model.add(embedding_layer)), вызван в модели функционального типа (например, x = embedding_layer(x)) или использован в подклассированной модели.
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/keras/layers/Embedding