如何解决在Keras中嵌入单词也是降维技术吗?
我想了解embedding_dim
的目的,而不是使用整个vocab_size
的一个热向量,它是将一个热向量的尺寸从vocab_size
降为{{ 1}}尺寸还是直观上还有其他实用程序?另外,应该如何确定embedding_dim
的数字?
代码-
embedding_dim
O / P-
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()
解决方法
如果分类功能少且训练数据少,则必须使用单热编码。如果您有大量的训练数据和大量的分类功能,则必须使用嵌入。
为什么开发嵌入?
如果您具有大量分类特征,并且使用了一键编码,则最终将获得一个庞大的稀疏矩阵,其中大多数元素为零。这不适用于训练ML模型。您的数据将遭受维度诅咒。使用嵌入,您基本上可以使用较小的维表示大量分类特征。而且,输出是一个密集向量,而不是稀疏向量。
嵌入的缺点:
- 需要时间训练
- 需要大量的培训数据
优势
- 嵌入可以告诉您有关项目语义的信息。它将相关项目分组在一起。一键式编码不是这种情况。一键编码只是另一个维度上项目的正交表示。
要为嵌入矢量选择的大小。
embedding_dimensions = vocab_size ** 0.25
您可以看到here。
注意:这只是一个经验法则。您可以选择小于或大于此尺寸的嵌入尺寸。词嵌入的质量随着维数的增加而提高。但是到了某个点,边际收益就会减少。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。