2016-08-06 118 views
4

我正在通過tensorflow教程tensorflow。我想找到下面這行的描述:來自張量流的tf.contrib.layers.embedding_column

tf.contrib.layers.embedding_column 

我不知道如果它使用word2vec或其他任何東西,或者也許我完全錯誤的方向在想。我試圖點擊GibHub,但什麼都沒找到。我猜在GitHub上看起來並不容易,因爲python可能會引用一些C++庫。有人能指出我的方向嗎?

回答

5

我也一直在想這個。我不清楚他們在做什麼,但這是我發現的。

paper on wide and deep learning中,他們將嵌入向量描述爲隨機初始化,然後在訓練期間進行調整以最小化錯誤。

通常,當你進行嵌入時,你需要對數據進行一些任意的矢量表示(例如一個熱點矢量),然後將它乘以一個表示嵌入的矩陣。這個矩陣可以由PCA找到,也可以通過t-SNE或word2vec進行訓練。

embedding_column的實際代碼是here,它實現爲_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) 

所以就我所看到的,它似乎像嵌入物是通過將你使用任何學習規則(梯度下降等)嵌入基質形成。

1

我對嵌入有類似的疑問。

這裏是主點:

與傳統寬線性模型沿增加一個埋入層的能力允許通過減少稀疏維數降低到低維數準確的預測。

enter image description here

這裏是一個good post一下吧!

這裏是一個結合了嵌入層的simple example。使用泰坦尼克號Kaggle數據預測乘客是否能夠基於某些屬性(如姓名,性別,他們擁有什麼車票,他們支付的車費以及他們留在的客艙等等)生存。