2016-07-26 27 views
2

假設我獲得輸入矩陣嵌入查找它看起來像後:級聯特徵詞在輸入層中嵌入

[[[0.5, 0.25, 0.47, 0.86],[0.8. 0.12, 0.63, 0.97],[0.7, 0.47, 0.32, 0.01]],... ,[[...]]] i,e每個嵌入的dim = 4,句子長度爲3,如上述情況中給出的。

如何使用Tensorflow/TFLearn或Theano中的佔位符動態地(即在運行時)對句子中的每個單詞追加一個dim說2的特徵向量?所以final input will be of dim = embedding_dim + feature_dim.

P.S:輸入矩陣是形狀的三維張量[x y z],x =批量句數,y =句子中的詞數(包括填充)。 z =嵌入尺寸。最終的形狀將是[x y z + 2]。

回答

4

在Tensorflow中,您可以創建所需形狀的佔位符[x,y,2],然後使用tf.concat將其連接到輸入張量。假設「輸入」是你的[X,Y,Z]嵌入張量,你可以做這樣的事情:

features = tf.placeholder(tf.float32, [x, y, 2]) 
new_inputs = tf.concat(2, [inputs, features]) # Concatenate along the 3rd dimension 
+0

如果特徵是整個句子中的所有單詞常見的,我怎麼能達到同樣的不重複特徵。所以,我的意思是我有一個暗語2的特徵(這在句子中的所有單詞中都是常見的)。我希望優化空間,以便我不重複句子中所有「y」字的特徵。 – user3480922

+1

如果沒有修改rnn或單元代碼,我不認爲你可以做到這一點...如果有人知道更好,請糾正我。如果有一個較小的佔位符可以幫助你的空間/內存約束,你可以改變你的佔位符爲[x,2],然後在拼接中將其平鋪... tf.concat(2,[inputs,tf.tile(tf。 expand_dims(features,1),[1,y,1]]) –