簡單 RNN

tflearn.layers.recurrent.simple_rnn (incoming, n_units, activation='sigmoid', dropout=None, bias=True, weights_init=None, return_seq=False, return_state=False, initial_state=None, dynamic=False, trainable=True, restore=True, reuse=False, scope=None, name='SimpleRNN')

簡單遞迴層

輸入

3-D 張量 [範例、時間步長、輸入維度]

輸出

如果 return_seq:3-D 張量 [範例、時間步長、輸出維度]。否則:2-D 張量 [範例、輸出維度]

參數

  • incoming張量。輸入 3-D 張量
  • n_unitsint 此層的單位數
  • activationstr(名稱)或 函數(回傳 張量)。套用至此層的啟用(請參閱 tflearn.activations)。預設:'sigmoid'
  • dropout浮點數tuple:(input_keep_prob, output_keep_prob)。輸入和輸出保持機率
  • biasbool。如果為 True,會使用偏倚
  • weights_initstr(名稱)或張量。權重初始化。(請參閱 tflearn.initializations)
  • return_seqbool。如果為 True,會回傳完整的順序,而不只最後一個順序的輸出
  • return_statebool。如果為 True,會回傳一個包括輸出和狀態的元組:(output, states)
  • initial_state張量。RNN 的初始狀態。這必須是類型適當的張量且形狀為 [batch_size x cell.state_size]。
  • dynamicbool。如果為 True,會執行動態運算。它不會運算序列長度以上的 RNN 步驟。請注意,由於 TF 需要提供長度相同的序列,因此 0 會用作遮罩。所以必須提供一個最後補有 0 的序列。當執行運算時,它會在遇到值為 0 的步驟時停止。
  • trainable: bool。如果 True,權重將是可訓練的。
  • restore: bool。如果 True,載入模型時,此層次權重將復原。
  • reuse: bool。如果 True 並且提供「範圍」,此層次變數將會重複使用(共用)。
  • scope: str。定義此層次範圍(選用)。範圍可用於層次之間變數的共用。請注意,範圍將會覆寫名稱。
  • name: str。此層次的名稱(選用)。

LSTM

tflearn.layers.recurrent.lstm (輸入內容、單元數量、啟用效果 = 'tanh'、內部啟用效果 = 'sigmoid'、中斷 = None、偏差 = True、權重初始化 = None、遺忘偏差 = 1.0、傳回順序 = False、傳回狀態 = False、初始狀態 = None、動態 = False、可訓練 = True、復原 = True、重複使用 = False、範圍 = None、名稱 = 'LSTM')

長短期記憶遞迴層。

輸入

3-D 張量 [範例、時間步長、輸入維度]

輸出

如果 return_seq:3-D 張量 [範例、時間步長、輸出維度]。否則:2-D 張量 [範例、輸出維度]

參數

  • incoming張量。輸入 3-D 張量
  • n_unitsint 此層的單位數
  • 啟用效果: str(名稱)或 函數(傳回 Tensor)。此層次應用的啟用效果(請參閱 tflearn.activations)。預設值:'tanh'。
  • 內部啟用效果: str(名稱)或 函數(傳回 Tensor)。LSTM 內部啟用效果。預設值:'sigmoid'。
  • dropout浮點數tuple:(input_keep_prob, output_keep_prob)。輸入和輸出保持機率
  • biasbool。如果為 True,會使用偏倚
  • 權重初始化: str(名稱)或 Tensor。權重初始化。(請參閱 tflearn.initializations)。
  • 遺忘偏差: float。遺忘閘的偏差。預設值:1.0。
  • return_seqbool。如果為 True,會回傳完整的順序,而不只最後一個順序的輸出
  • return_statebool。如果為 True,會回傳一個包括輸出和狀態的元組:(output, states)
  • initial_state張量。RNN 的初始狀態。這必須是類型適當的張量且形狀為 [batch_size x cell.state_size]。
  • dynamicbool。如果為 True,會執行動態運算。它不會運算序列長度以上的 RNN 步驟。請注意,由於 TF 需要提供長度相同的序列,因此 0 會用作遮罩。所以必須提供一個最後補有 0 的序列。當執行運算時,它會在遇到值為 0 的步驟時停止。
  • trainable: bool。如果 True,權重將是可訓練的。
  • restore: bool。如果 True,載入模型時,此層次權重將復原。
  • reuse: bool。如果 True 並且提供「範圍」,此層次變數將會重複使用(共用)。
  • scope: str。定義此層次範圍(選用)。範圍可用於層次之間變數的共用。請注意,範圍將會覆寫名稱。
  • name: str。此層次的名稱(選用)。

參考

長短期記憶,Sepp Hochreiter 和 Jurgen Schmidhuber,神經運算 9(8):1735-1780,1997。

連結

http://deeplearning.cs.cmu.edu/pdfs/Hochreiter97_lstm.pdf


GRU

tflearn.layers.recurrent.gru (輸入內容、單元數量、啟用效果 = 'tanh'、內部啟用效果 = 'sigmoid'、中斷 = None、偏差 = True、權重初始化 = None、傳回順序 = False、傳回狀態 = False、初始狀態 = None、動態 = False、可訓練 = True、復原 = True、重複使用 = False、範圍 = None、名稱 = 'GRU')

閘控遞迴單位層。

輸入

3D 膨脹層 [範例、時間步驟、輸入維度]。

輸出

如果 return_seq:3-D 張量 [範例、時間步長、輸出維度]。否則:2-D 張量 [範例、輸出維度]

參數

  • incoming張量。輸入 3-D 張量
  • n_unitsint 此層的單位數
  • 啟用效果: str(名稱)或 函數(傳回 Tensor)。此層次應用的啟用效果(請參閱 tflearn.activations)。預設值:'tanh'。
  • 內部啟用效果: str(名稱)或 函數(傳回 Tensor)。GRU 內部啟用效果。預設值:'sigmoid'。
  • dropout浮點數tuple:(input_keep_prob, output_keep_prob)。輸入和輸出保持機率
  • biasbool。如果為 True,會使用偏倚
  • 權重初始化: str(名稱)或 Tensor。權重初始化。(請參閱 tflearn.initializations)。
  • return_seqbool。如果為 True,會回傳完整的順序,而不只最後一個順序的輸出
  • return_statebool。如果為 True,會回傳一個包括輸出和狀態的元組:(output, states)
  • initial_state張量。RNN 的初始狀態。這必須是類型適當的張量且形狀為 [batch_size x cell.state_size]。
  • dynamicbool。如果為 True,會執行動態運算。它不會運算序列長度以上的 RNN 步驟。請注意,由於 TF 需要提供長度相同的序列,因此 0 會用作遮罩。所以必須提供一個最後補有 0 的序列。當執行運算時,它會在遇到值為 0 的步驟時停止。
  • trainable: bool。如果 True,權重將是可訓練的。
  • restore: bool。如果 True,載入模型時,此層次權重將復原。
  • reuse: bool。如果 True 並且提供「範圍」,此層次變數將會重複使用(共用)。
  • scope: str。定義此層次範圍(選用)。範圍可用於層次之間變數的共用。請注意,範圍將會覆寫名稱。
  • name: str。此層次的名稱(選用)。

參考

使用 RNN 編碼器譯碼器進行統計機器翻譯的學習詞語表述,K. Cho 等,2014。

連結

http://arxiv.org/abs/1406.1078


雙向 RNN

tflearn.layers.recurrent.bidirectional_rnn (輸入內容、rnncell_fw、rnncell_bw、傳回順序 = False、傳回狀態 = False、初始狀態_fw = None、初始狀態_bw = None、動態 = False、範圍 = None、名稱 = 'BiRNN')

打造雙向遞迴神經網路,它需要 2 個 RNN 單元以順序方式處理前向和後向序列。任何 RNN 單元都可使用,例如SimpleRNN、LSTM、GRU… 和各自的參數。但兩個單元的單位數必須匹配。

輸入

3D 膨脹層 [範例、時間步驟、輸入維度]。

輸出

如果 傳回順序:3D 膨脹層 [範例、時間步驟、輸出維度]。否則:2D 膨脹層 [範例、輸出維度]。

參數

  • 輸入內容Tensor。輸入 Tensor。
  • rnncell_fwRNNCell。用於前向計算的 RNN 單元。
  • rnncell_bwRNNCell。用於後向計算的 RNN 單元。
  • return_seqbool。如果為 True,會回傳完整的順序,而不只最後一個順序的輸出
  • 傳回狀態bool。如果 True,傳回輸出和狀態的元組:(輸出、狀態)。
  • initial_state_fwTensor。正向 RNN 的初始狀態。這必須是適當類型且形狀為 [batch_size x cell.state_size] 的張量。
  • initial_state_bwTensor。反向 RNN 的初始狀態。這必須是適當類型且形狀為 [batch_size x cell.state_size] 的張量。
  • dynamicbool。如果為 True,會執行動態運算。它不會運算序列長度以上的 RNN 步驟。請注意,由於 TF 需要提供長度相同的序列,因此 0 會用作遮罩。所以必須提供一個最後補有 0 的序列。當執行運算時,它會在遇到值為 0 的步驟時停止。
  • scope: str。定義此層次範圍(選用)。範圍可用於層次之間變數的共用。請注意,範圍將會覆寫名稱。
  • name: str。此層次的名稱(選用)。