我想了解embedding_dim与使用整个vocab_size的一个热向量的目的,它是从vocab_size dim降到embedding_dim维度的一个热向量,还是直觉上还有其他的效用?另外,我们应该如何确定embedding_dim号?
密码-
vocab_size = 10000
embedding_dim = 16
max_length = 120
model = tf.keras.Sequential([
tf.keras.layers.Embedding(vocab_size, embedding_dim, input_length=max_length),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(6, activation='relu'),
tf.keras.layers.Dense(1, activation='sigmoid')
])
model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])
model.summary()O/P -
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
embedding (Embedding) (None, 120, 16) 160000
_________________________________________________________________
flatten (Flatten) (None, 1920) 0
_________________________________________________________________
dense (Dense) (None, 6) 11526
_________________________________________________________________
dense_1 (Dense) (None, 1) 7
=================================================================
Total params: 171,533
Trainable params: 171,533
Non-trainable params: 0
_________________________________________________________________发布于 2020-09-05 16:55:09
当你有少量的分类特征和较少的训练数据,你必须使用一个热编码。如果您有大量的培训数据和大量的分类特性,则必须使用嵌入式。
为什么要开发嵌入?
如果您有大量的分类特性,并且您使用了一次热编码,那么最终您将得到一个巨大的稀疏矩阵,其中大多数元素都为零。这不适合于ML模型的训练。你的数据将遭受维度的诅咒。通过嵌入,您基本上可以使用更小的维度来表示大量的分类特性。此外,输出是一个密集向量而不是稀疏向量。
嵌入的缺陷:
优势
为嵌入向量选择了什么大小.
embedding_dimensions = vocab_size ** 0.25你可以看到这里。
注:,这只是一个经验法则。您可以选择小于或大于此的嵌入维度。随着高维数的增加,词嵌入质量也随之提高。但在达到某个点后,边际收益将减少。
https://stackoverflow.com/questions/63756001
复制相似问题