首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在tensorflow深度宽教程中,嵌入原理是什么?

在tensorflow深度宽教程中,嵌入原理是什么?
EN

Stack Overflow用户
提问于 2018-03-08 07:39:46
回答 2查看 842关注 0票数 3

当我玩tensorflow教程时,宽而深教程中使用了一个嵌入技巧,如下所示。

本教程展示了如何将稀疏特性(通常是一种热编码)转移到嵌入向量。我知道创建这种嵌入的方法有一些,如word嵌入、PCA或there或矩阵分解。但在本教程中,他们没有说明如何为稀疏向量创建嵌入。或者,本教程只是使用神经网络来完成嵌入?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-08 10:08:55

如果您知道单词嵌入,那么这种转换应该是您所熟悉的。来自“深度模型:嵌入神经网络”部分:

嵌入值被随机初始化,并与所有其他模型参数一起训练,以最小化训练损失。

本质上,tf.feature_column.embedding_column(occupation, dimension=8)所做的是创建一个[N, 8]矩阵,其中N是使用哈希分类列的occupation值的数量或桶数。每个输入的occupation值都像一个索引,用于选择一个大小为[8]的嵌入向量。网络的其他部分将使用这个[8]向量,而不知道N是什么。这个向量通常被称为稠密,以强调长度N的一次热编码(其中大多数值为零)和[8]向量之间的差异,后者的值都很重要。

嵌入是可训练的,因此在随机初始化之后,它们将漂移到一些对网络的其他部分有用的值。这非常类似于word2vec或其他单词嵌入,并且通常是非常有效的表示:

通过密集的嵌入,深度模型可以更好地推广,并对以前在训练数据中看不到的特征对进行预测。

票数 1
EN

Stack Overflow用户

发布于 2018-07-12 08:12:00

如果你想使用预先训练过的嵌入。只是你曾经接受过word2vec或其他人的训练。您可以尝试在tf.feature_column.embedding_column 特征列预训练嵌入中设置初始化程序。

代码语言:javascript
复制
itemx_vocab = tf.feature_column.categorical_column_with_vocabulary_file(
key='itemx',
vocabulary_file=FLAGS.vocabx)

embedding_initializer_x = tf.contrib.framework.load_embedding_initializer(
ckpt_path='model.ckpt',
embedding_tensor_name='w_in',
new_vocab_size=itemx_vocab.vocabulary_size,
embedding_dim=emb_size,
old_vocab_file='FLAGS.vocab_emb',
new_vocab_file=FLAGS.vocabx
)
itemx_emb = tf.feature_column.embedding_column(itemx_vocab,
                                           dimension=128,
                                           initializer=embedding_initializer_x,
                                           trainable=False)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49167805

复制
相关文章

相似问题

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