首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Keras中嵌入单词也是一种降维技术吗?

在Keras中嵌入单词也是一种降维技术吗?
EN

Stack Overflow用户
提问于 2020-09-05 16:13:37
回答 1查看 680关注 0票数 1

我想了解embedding_dim与使用整个vocab_size的一个热向量的目的,它是从vocab_size dim降到embedding_dim维度的一个热向量,还是直觉上还有其他的效用?另外,我们应该如何确定embedding_dim号?

密码-

代码语言:javascript
复制
    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 -

代码语言:javascript
复制
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
_________________________________________________________________
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-05 16:55:09

当你有少量的分类特征和较少的训练数据,你必须使用一个热编码。如果您有大量的培训数据和大量的分类特性,则必须使用嵌入式。

为什么要开发嵌入?

如果您有大量的分类特性,并且您使用了一次热编码,那么最终您将得到一个巨大的稀疏矩阵,其中大多数元素都为零。这不适合于ML模型的训练。你的数据将遭受维度的诅咒。通过嵌入,您基本上可以使用更小的维度来表示大量的分类特性。此外,输出是一个密集向量而不是稀疏向量。

嵌入的缺陷:

  • 训练需要时间
  • 需要大量的培训数据

优势

  • 嵌入可以告诉您项的语义。它将相关项目紧密地组合在一起。一次热编码的情况并非如此。一个热编码只是另一个维度中一个项的正交表示。

为嵌入向量选择了什么大小.

代码语言:javascript
复制
embedding_dimensions =  vocab_size ** 0.25

你可以看到这里

注:,这只是一个经验法则。您可以选择小于或大于此的嵌入维度。随着高维数的增加,词嵌入质量也随之提高。但在达到某个点后,边际收益将减少。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63756001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档