2016-12-29 45 views
0

在張量流體的dynamic_rnn函數中,我對輸出形狀感到驚訝,我希望有人能幫助提高我對RNN單元的理解。張量流動的多維動態流動

例如,如果輸入被定義爲:

x = tf.placeholder(tf.float32, [110, seq_size, input_dim]) 

其中seq_size = 5和input_dim = 2(即,兩個時間序列)和110是批量大小;並且小區被定義爲,

cell = rnn_cell.BasicLSTMCell(hidden_dim) 

其中hidden_​​dim = 6

當我創建dynamic_rnn

outputs, states = rnn.dynamic_rnn(cell, x, dtype=tf.float32) 

並檢查輸出的大小是[110 5 6]。這些維度由seq_size by hidden_​​dim批量處理。

問題:

1:這些尺寸意味着有每該時間序列的時間步6個隱藏節點,總共30個隱藏節點(5×6),而不是6隱藏節點總。這是正確的解釋嗎?

2:由於我的輸入維數是5 x 2(每個序列和2個序列中有5個步驟),因此tensorflow在每個時間步將輸入連接到隱藏節點?在每個隱藏單元格之前,張量流程是否假設一個具有2個輸入,12個權重和6個偏差的完全連接圖?或者是其他東西?

+0

問題1:每個序列有5個隱藏節點,每個隱藏節點對應一個輸入/字。 問題2:每個輸入都是2維空間中的向量(對於您的示例)。 –

+0

不理解數字1的答案。我原本以爲是相同的,即每個單詞/輸入對應一個隱藏節點,但上面輸出的尺寸似乎表明情況並非如此。在上面的例子中,每個批次元素都有[1 5 6],所以有30個輸出。此外,隱藏節點的數量是Cell的一個獨立變量,如https://github.com/aymericdamien/TensorFlow-Examples/blob/master/notebooks/3_NeuralNetworks/recurrent_network.ipynb中的示例所示。 – Kemp

+0

我認爲[1 5 6]意味着有5個輸出,每個輸出是6維向量。你提供了[1 5 2],意思是5個輸入,每個輸入都是2維向量。 –

回答

1

您可以將一個序列看作是一個句子,將一個輸入看作單詞。序列長度是句子中單詞的數量,也是LSTM中隱藏節點的數量;每個輸入/字對應一個隱藏節點,它將輸入映射到一個輸出。這就是爲什麼輸出的數量是seq_size(5)。

一個單詞是一個矢量,它位於多維空間中,其維數爲input_dim。在LSTM中,一個單詞從該輸入空間映射到維數爲hidden_​​dim的較高維空間。這就是每個輸出的大小爲hidden_​​dim(6)的原因。

我相信時代對於這個討論來說是不相關的概念。請參閱The meaning of batch_size in ptb_word_lm (LSTM model of tensorflow)

+0

更新了問題更加清晰。我想我的具體問題在於這個短語「一個詞從這個輸入空間映射到一個更高維的空間」。如何完成映射?如果我的話是在真正的N-D空間中,每個維度如何映射到更高維空間(隱藏空間)。 – Kemp

+0

通過將input_vector與weight_matrix相乘來擴展維度,其中weight_matrix的大小爲input_dim x output_dim。 –

+0

另外,考慮到鏈接,我意識到我正在使用紀元作爲一個超載的術語,當看張量流。在上述問題中的時期被用作多個時間序列中的特定輸入行(時間上的實例,即seq_size中的實例),而不是傳統的張量流使用批次上的輸入。 – Kemp