將正整數(索引)轉換為固定大小的密集向量。
用法
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
)
參數
-
input_dim
整數。詞匯表的大小,即最大整數索引 + 1。 -
output_dim
整數。密集嵌入的維度。 -
embeddings_initializer
embeddings
矩陣的初始化程序(參見keras.initializers
)。 -
embeddings_regularizer
應用於embeddings
矩陣的正則化函數(參見keras.regularizers
)。 -
embeddings_constraint
應用於embeddings
矩陣的約束函數(參見keras.constraints
)。 -
mask_zero
布爾值,輸入值 0 是否是應屏蔽的特殊 "padding" 值。這在使用可能采用可變長度輸入的循環層時很有用。如果這是True
,則模型中的所有後續層都需要支持屏蔽,否則將引發異常。如果 mask_zero 設置為 True,則索引 0 不能在詞匯表中使用(input_dim 應該等於詞匯表的大小 + 1)。 -
input_length
輸入序列的長度,當它是常數時。如果您要連接Flatten
然後Dense
上遊層(沒有它,密集輸出的形狀無法計算),則需要此參數。
例如[[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)
輸入形狀:
具有形狀的二維張量:(batch_size, input_length)
。
輸出形狀:
具有形狀的 3D 張量:(batch_size, input_length, output_dim)
。
變量放置注意事項:默認情況下,如果 GPU 可用,則嵌入矩陣將放置在 GPU 上。這可以獲得最佳性能,但可能會導致問題:
- 您可能正在使用不支持稀疏 GPU 內核的優化器。在這種情況下,您將在訓練模型時看到錯誤。
- 您的嵌入矩陣可能太大而無法放入您的 GPU。在這種情況下,您將看到內存不足 (OOM) 錯誤。
在這種情況下,您應該將嵌入矩陣放在 CPU 內存中。您可以使用設備範圍執行此操作,例如:
with tf.device('cpu:0'):
embedding_layer = Embedding(...)
embedding_layer.build()
然後可以將預構建的 embedding_layer
實例添加到 Sequential
模型(例如 model.add(embedding_layer)
),在函數模型中調用(例如 x = embedding_layer(x)
),或在子類模型中使用。
相關用法
- Python tf.keras.layers.ELU用法及代碼示例
- Python tf.keras.layers.InputLayer用法及代碼示例
- Python tf.keras.layers.serialize用法及代碼示例
- Python tf.keras.layers.Dropout用法及代碼示例
- Python tf.keras.layers.maximum用法及代碼示例
- Python tf.keras.layers.LayerNormalization用法及代碼示例
- Python tf.keras.layers.Conv2D用法及代碼示例
- Python tf.keras.layers.RepeatVector用法及代碼示例
- Python tf.keras.layers.Multiply用法及代碼示例
- Python tf.keras.layers.Activation用法及代碼示例
- Python tf.keras.layers.Conv1D用法及代碼示例
- Python tf.keras.layers.experimental.preprocessing.PreprocessingLayer.adapt用法及代碼示例
- Python tf.keras.layers.CategoryEncoding用法及代碼示例
- Python tf.keras.layers.subtract用法及代碼示例
- Python tf.keras.layers.experimental.preprocessing.HashedCrossing用法及代碼示例
- Python tf.keras.layers.Subtract用法及代碼示例
- Python tf.keras.layers.ZeroPadding3D用法及代碼示例
- Python tf.keras.layers.MaxPool3D用法及代碼示例
- Python tf.keras.layers.Dot用法及代碼示例
- Python tf.keras.layers.UpSampling1D用法及代碼示例
注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.keras.layers.Embedding。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。