簡單 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_units:
int
此層的單位數 - activation:
str
(名稱)或函數
(回傳張量
)。套用至此層的啟用(請參閱 tflearn.activations)。預設:'sigmoid' - dropout:
浮點數
的tuple
:(input_keep_prob, output_keep_prob)。輸入和輸出保持機率 - bias:
bool
。如果為 True,會使用偏倚 - weights_init:
str
(名稱)或張量
。權重初始化。(請參閱 tflearn.initializations) - return_seq:
bool
。如果為 True,會回傳完整的順序,而不只最後一個順序的輸出 - return_state:
bool
。如果為 True,會回傳一個包括輸出和狀態的元組:(output, states) - initial_state:
張量
。RNN 的初始狀態。這必須是類型適當的張量且形狀為 [batch_size x cell.state_size]。 - dynamic:
bool
。如果為 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_units:
int
此層的單位數 - 啟用效果:
str
(名稱)或函數
(傳回Tensor
)。此層次應用的啟用效果(請參閱 tflearn.activations)。預設值:'tanh'。 - 內部啟用效果:
str
(名稱)或函數
(傳回Tensor
)。LSTM 內部啟用效果。預設值:'sigmoid'。 - dropout:
浮點數
的tuple
:(input_keep_prob, output_keep_prob)。輸入和輸出保持機率 - bias:
bool
。如果為 True,會使用偏倚 - 權重初始化:
str
(名稱)或Tensor
。權重初始化。(請參閱 tflearn.initializations)。 - 遺忘偏差:
float
。遺忘閘的偏差。預設值:1.0。 - return_seq:
bool
。如果為 True,會回傳完整的順序,而不只最後一個順序的輸出 - return_state:
bool
。如果為 True,會回傳一個包括輸出和狀態的元組:(output, states) - initial_state:
張量
。RNN 的初始狀態。這必須是類型適當的張量且形狀為 [batch_size x cell.state_size]。 - dynamic:
bool
。如果為 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_units:
int
此層的單位數 - 啟用效果:
str
(名稱)或函數
(傳回Tensor
)。此層次應用的啟用效果(請參閱 tflearn.activations)。預設值:'tanh'。 - 內部啟用效果:
str
(名稱)或函數
(傳回Tensor
)。GRU 內部啟用效果。預設值:'sigmoid'。 - dropout:
浮點數
的tuple
:(input_keep_prob, output_keep_prob)。輸入和輸出保持機率 - bias:
bool
。如果為 True,會使用偏倚 - 權重初始化:
str
(名稱)或Tensor
。權重初始化。(請參閱 tflearn.initializations)。 - return_seq:
bool
。如果為 True,會回傳完整的順序,而不只最後一個順序的輸出 - return_state:
bool
。如果為 True,會回傳一個包括輸出和狀態的元組:(output, states) - initial_state:
張量
。RNN 的初始狀態。這必須是類型適當的張量且形狀為 [batch_size x cell.state_size]。 - dynamic:
bool
。如果為 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_fw:
RNNCell
。用於前向計算的 RNN 單元。 - rnncell_bw:
RNNCell
。用於後向計算的 RNN 單元。 - return_seq:
bool
。如果為 True,會回傳完整的順序,而不只最後一個順序的輸出 - 傳回狀態:
bool
。如果 True,傳回輸出和狀態的元組:(輸出、狀態)。 - initial_state_fw:
Tensor
。正向 RNN 的初始狀態。這必須是適當類型且形狀為 [batch_size x cell.state_size] 的張量。 - initial_state_bw:
Tensor
。反向 RNN 的初始狀態。這必須是適當類型且形狀為 [batch_size x cell.state_size] 的張量。 - dynamic:
bool
。如果為 True,會執行動態運算。它不會運算序列長度以上的 RNN 步驟。請注意,由於 TF 需要提供長度相同的序列,因此 0 會用作遮罩。所以必須提供一個最後補有 0 的序列。當執行運算時,它會在遇到值為 0 的步驟時停止。 - scope:
str
。定義此層次範圍(選用)。範圍可用於層次之間變數的共用。請注意,範圍將會覆寫名稱。 - name:
str
。此層次的名稱(選用)。