<p>我也一直在想这个。我不太清楚他们在做什么,但这是我发现的。在</p>
<p>在<a href="http://arxiv.org/pdf/1606.07792v1.pdf" rel="noreferrer">paper on wide and deep learning</a>中,它们将嵌入向量描述为随机初始化,然后在训练过程中进行调整以最小化误差。在</p>
<p>通常,在进行嵌入时,需要取数据的任意向量表示(例如一个热向量),然后将其乘以表示嵌入的矩阵。这个矩阵可以通过PCA找到,也可以通过t-SNE或word2vec这样的工具进行训练。在</p>
<p>嵌入列的实际代码是<a href="https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/layers/python/layers/feature_column.py" rel="noreferrer">here</a>,它被实现为一个名为_EmbeddingColumn的类,它是_FeatureColumn的子类。它将嵌入矩阵存储在其sparse_id_column属性中。然后,输入层的方法应用这个嵌入矩阵生成下一层的嵌入。在</p>
<pre><code> def to_dnn_input_layer(self,
input_tensor,
weight_collections=None,
trainable=True):
output, embedding_weights = _create_embedding_lookup(
input_tensor=self.sparse_id_column.id_tensor(input_tensor),
weight_tensor=self.sparse_id_column.weight_tensor(input_tensor),
vocab_size=self.length,
dimension=self.dimension,
weight_collections=_add_variable_collection(weight_collections),
initializer=self.initializer,
combiner=self.combiner,
trainable=trainable)
</code></pre>
<p>据我所知,嵌入是通过对嵌入矩阵应用任何学习规则(梯度下降等)形成的。在</p>