2016-12-04 102 views
2

假設我的數據有25個特徵。在Keras中,我可以輕鬆地爲每個輸入特徵實現一個Embedding圖層,並將它們合併到一起以供給後面的圖層。使用張量流實現嵌入層

我看到tf.nn.embedding_lookup接受一個id參數,它可能只是一個普通整數或一個整數數組([1,2,3,..])。然而,特徵輸入往往形狀

x = tf.placeholder(tf.float32, [None, in_feature_num]) 

我可能分裂特徵自身的是通過使用

X = tf.split(1,in_feature_num,x) 

和每個功能輸入是形狀的[?,1]。但是embedding_lookup沒有形成[?,1]的形狀,並且由於我們沒有指定的行長度,所以我不能將它的形狀設置爲[?],例如reshapeunpack

所以,我怎麼能變換像

[[1], 
[2], 
[3], 
    ... 
] 

一個輸入到嵌入表示這樣的:

[ 
    [....], #a vector 
    [....], #a vector 
    [....], #a vector 
    ... 
] 

SO崗位相關的:What does tf.nn.embedding_lookup function do?TensorFlow Embedding Lookup 但這些職位不解決我的問題。

+0

我不是100%確定你的意思是「你的數據有特徵」。我的理解是嵌入是你輸入數據的代表。所以他們是功能。您可以選擇在NN之前添加嵌入層,並學習權重以實際學習嵌入層,或者添加一個通用的預先訓練的嵌入層。 你能更具體地瞭解你的數據嗎? – roopalgarg

+0

你是說你有一批25個功能,並且你希望每個功能都有自己的嵌入功能? – mazecreator

回答

-1

我想我知道你的意思。問題是什麼功能?如果它們是數字的,那麼你並不需要一個嵌入層 - 你可以使用一個完全連接的層。但是,如果它們是絕對的,我認爲你有兩種選擇: 1.爲每個特徵分別嵌入(所以你最終將得到25個嵌入層,這將需要連接) 2.將這些特徵合併成一個特徵第一個

+0

是的,「最終有25個嵌入層」這就是我正在實施的。我知道如何在keras中做到這一點,但是,我不知道如何在tensorflow中做到這一點...... –

+0

這不是一個答案......從問題中可以清楚地看到他想要選項1,告訴他如何做到這一點 –