use*_*890 5 python embedding tensorflow
我正在通过tensorflow教程tensorflow.我想找到以下行的描述:
tf.contrib.layers.embedding_column
Run Code Online (Sandbox Code Playgroud)
我想知道它是否使用word2vec或其他任何东西,或者我正在考虑完全错误的方向.我试图点击GibHub,但一无所获.我猜测看GitHub并不容易,因为python可能会引用一些C++库.有人能指出我正确的方向吗?
小智 6
我一直在想这个.我不清楚他们在做什么,但这就是我发现的.
在关于广泛和深度学习的论文中,他们将嵌入向量描述为随机初始化,然后在训练期间进行调整以最小化误差.
通常,当您进行嵌入时,您需要对数据进行一些任意的矢量表示(例如一个热矢量),然后将其乘以表示嵌入的矩阵.该矩阵可以通过PCA或通过t-SNE或word2vec之类的训练找到.
embedding_column的实际代码在这里,它实现为一个名为_EmbeddingColumn的类,它是_FeatureColumn的子类.它将嵌入矩阵存储在其sparse_id_column属性中.然后,方法to_dnn_input_layer应用该嵌入矩阵以产生下一层的嵌入.
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)
Run Code Online (Sandbox Code Playgroud)
因此,据我所见,似乎嵌入是通过将您正在使用的任何学习规则(梯度下降等)应用于嵌入矩阵而形成的.