2017-09-15 28 views
1

在tensorflow中,有一個叫做BasicLSTMCell的lstm實現,它位於tf.contrib.rnn.BasicLSTMCell。它有一個參數num_units,這意味着LSTM單元中的單元數量。但我不知道這意味着什麼。tf.contrib.rnn.BasicLSTMCell是單個LSTM單元還是LSTM層?

如果我這樣定義一個LSTM細胞:

lstm_cell = tf.contrib.rnn.BasicLSTMCell(512). 

什麼是lstm_cell樣子?它是一個512節點的lstm節點或lstm層?誰可以告訴我這個?

回答

2

它是一個具有512個單位的LSTM層。

BasicLSTMCell實施抽象類RNNCell。從文檔:

表示RNN單元的抽象對象。

每個RNNCell必須具有以下屬性並實施call,其簽名(output, next_state) = call(input, state)

[...]

細胞的這種定義不同於在文獻中使用的定義。在文獻中,「單元格」是指具有單個標量輸出的對象。 該定義涉及這樣的單位的水平陣列

與展開的反向傳播槽時一起創建LSTM層的一種常見方法是以下之一:

lstm_cell = tf.contrib.rnn.BasicLSTMCell(512) 
outputs, final_state = tf.nn.static_rnn(cell=lstm_cell, 
          dtype=tf.float32, 
          inputs=some_input_sequence) 

其中:

  • some_input_sequencenum_steps張量清單尺寸爲[batch_size, input_size]
  • outputs將包含每層之後的層的輸出some_input_sequence的元素。因此,它又是一個num _steps元素大小爲[batch_size, 512](其中512是您的單元的單元數)的列表
  • final_state將包含處理完整個序列之後的狀態。特別是,對於LSTM,它是一個具有兩個元素的命名元組,ch(LSTM的兩個狀態)。