简单循环网络

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')

简单循环层。

输入

三维张量 [样本数,时间步长,输入维度]。

输出

如果 return_seq 为真:三维张量 [样本数,时间步长,输出维度]。否则:二维张量 [样本数,输出维度]。

参数

  • incoming: Tensor。输入的三维张量。
  • n_units: int,该层的单元数。
  • activation: str(名称)或 function(返回 Tensor)。应用于该层的激活函数(参见 tflearn.activations)。默认值:'sigmoid'。
  • dropout: tuple,包含两个 float 值:(input_keep_prob, output_keep_prob)。输入和输出的保留概率。
  • bias: bool。如果为真,则使用偏置。
  • weights_init: str(名称)或 Tensor。权重初始化。(参见 tflearn.initializations)
  • return_seq: bool。如果为真,则返回完整序列,而不是仅返回最后一个序列输出。
  • return_state: bool。如果为真,则返回包含输出和状态的元组:(output, states)。
  • initial_state: Tensor。RNN 的初始状态。这必须是具有适当类型和形状 [批大小 x 单元格状态大小] 的张量。
  • dynamic: bool。如果为真,则执行动态计算。它不会计算超过序列长度的 RNN 步长。请注意,由于 TF 要求输入相同长度的序列,因此使用 0 作为掩码。因此,必须提供在末尾用 0 填充的序列。执行计算时,当遇到值为 0 的步长时,它将停止。
  • trainable: bool。如果为真,则权重将是可训练的。
  • restore: bool。如果为真,则加载模型时将恢复该层的权重。
  • reuse: bool。如果为真且提供了“scope”,则将重用(共享)该层变量。
  • scope: str。定义该层的范围(可选)。范围可用于在层之间共享变量。请注意,范围将覆盖名称。
  • name: str。该层的名称(可选)。

长短期记忆网络

tflearn.layers.recurrent.lstm (incoming, n_units, activation='tanh', inner_activation='sigmoid', dropout=None, bias=True, weights_init=None, forget_bias=1.0, return_seq=False, return_state=False, initial_state=None, dynamic=False, trainable=True, restore=True, reuse=False, scope=None, name='LSTM')

长短期记忆循环层。

输入

三维张量 [样本数,时间步长,输入维度]。

输出

如果 return_seq 为真:三维张量 [样本数,时间步长,输出维度]。否则:二维张量 [样本数,输出维度]。

参数

  • incoming: Tensor。输入的三维张量。
  • n_units: int,该层的单元数。
  • activation: str(名称)或 function(返回 Tensor)。应用于该层的激活函数(参见 tflearn.activations)。默认值:'tanh'。
  • inner_activation: str(名称)或 function(返回 Tensor)。LSTM 内部激活函数。默认值:'sigmoid'。
  • dropout: tuple,包含两个 float 值:(input_keep_prob, output_keep_prob)。输入和输出的保留概率。
  • bias: bool。如果为真,则使用偏置。
  • weights_init: str(名称)或 Tensor。权重初始化。(参见 tflearn.initializations)。
  • forget_bias: float。遗忘门的偏置。默认值:1.0。
  • return_seq: bool。如果为真,则返回完整序列,而不是仅返回最后一个序列输出。
  • return_state: bool。如果为真,则返回包含输出和状态的元组:(output, states)。
  • initial_state: Tensor。RNN 的初始状态。这必须是具有适当类型和形状 [批大小 x 单元格状态大小] 的张量。
  • dynamic: bool。如果为真,则执行动态计算。它不会计算超过序列长度的 RNN 步长。请注意,由于 TF 要求输入相同长度的序列,因此使用 0 作为掩码。因此,必须提供在末尾用 0 填充的序列。执行计算时,当遇到值为 0 的步长时,它将停止。
  • trainable: bool。如果为真,则权重将是可训练的。
  • restore: bool。如果为真,则加载模型时将恢复该层的权重。
  • reuse: bool。如果为真且提供了“scope”,则将重用(共享)该层变量。
  • scope: str。定义该层的范围(可选)。范围可用于在层之间共享变量。请注意,范围将覆盖名称。
  • name: str。该层的名称(可选)。

参考文献

长短期记忆,Sepp Hochreiter 和 Jurgen Schmidhuber,神经计算 9(8): 1735-1780, 1997。

链接

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


门控循环单元

tflearn.layers.recurrent.gru (incoming, n_units, activation='tanh', inner_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='GRU')

门控循环单元层。

输入

三维张量层 [样本数,时间步长,输入维度]。

输出

如果 return_seq 为真:三维张量 [样本数,时间步长,输出维度]。否则:二维张量 [样本数,输出维度]。

参数

  • incoming: Tensor。输入的三维张量。
  • n_units: int,该层的单元数。
  • activation: str(名称)或 function(返回 Tensor)。应用于该层的激活函数(参见 tflearn.activations)。默认值:'tanh'。
  • inner_activation: str(名称)或 function(返回 Tensor)。GRU 内部激活函数。默认值:'sigmoid'。
  • dropout: tuple,包含两个 float 值:(input_keep_prob, output_keep_prob)。输入和输出的保留概率。
  • bias: bool。如果为真,则使用偏置。
  • weights_init: str(名称)或 Tensor。权重初始化。(参见 tflearn.initializations)。
  • return_seq: bool。如果为真,则返回完整序列,而不是仅返回最后一个序列输出。
  • return_state: bool。如果为真,则返回包含输出和状态的元组:(output, states)。
  • initial_state: Tensor。RNN 的初始状态。这必须是具有适当类型和形状 [批大小 x 单元格状态大小] 的张量。
  • dynamic: bool。如果为真,则执行动态计算。它不会计算超过序列长度的 RNN 步长。请注意,由于 TF 要求输入相同长度的序列,因此使用 0 作为掩码。因此,必须提供在末尾用 0 填充的序列。执行计算时,当遇到值为 0 的步长时,它将停止。
  • trainable: bool。如果为真,则权重将是可训练的。
  • restore: bool。如果为真,则加载模型时将恢复该层的权重。
  • reuse: bool。如果为真且提供了“scope”,则将重用(共享)该层变量。
  • scope: str。定义该层的范围(可选)。范围可用于在层之间共享变量。请注意,范围将覆盖名称。
  • name: str。该层的名称(可选)。

参考文献

使用 RNN 编码器-解码器学习统计机器翻译的短语表示,K. Cho 等人,2014 年。

链接

http://arxiv.org/abs/1406.1078


双向循环网络

tflearn.layers.recurrent.bidirectional_rnn (incoming, rnncell_fw, rnncell_bw, return_seq=False, return_states=False, initial_state_fw=None, initial_state_bw=None, dynamic=False, scope=None, name='BiRNN')

构建双向循环神经网络,它需要 2 个 RNN 单元以正向和反向顺序处理序列。可以使用任何 RNN 单元,例如 SimpleRNN、LSTM、GRU...,并具有其自己的参数。但是,两个单元的单元数必须匹配。

输入

三维张量层 [样本数,时间步长,输入维度]。

输出

如果 return_seq 为真:三维张量 [样本数,时间步长,输出维度]。否则:二维张量层 [样本数,输出维度]。

参数

  • incoming: Tensor。输入张量。
  • rnncell_fw: RNNCell。用于正向计算的 RNN 单元。
  • rnncell_bw: RNNCell。用于反向计算的 RNN 单元。
  • return_seq: bool。如果为真,则返回完整序列,而不是仅返回最后一个序列输出。
  • return_states: bool。如果为真,则返回包含输出和状态的元组:(output, states)。
  • initial_state_fw: Tensor。正向 RNN 的初始状态。这必须是具有适当类型和形状 [批大小 x 单元格状态大小] 的张量。
  • initial_state_bw: Tensor。反向 RNN 的初始状态。这必须是具有适当类型和形状 [批大小 x 单元格状态大小] 的张量。
  • dynamic: bool。如果为真,则执行动态计算。它不会计算超过序列长度的 RNN 步长。请注意,由于 TF 要求输入相同长度的序列,因此使用 0 作为掩码。因此,必须提供在末尾用 0 填充的序列。执行计算时,当遇到值为 0 的步长时,它将停止。
  • scope: str。定义该层的范围(可选)。范围可用于在层之间共享变量。请注意,范围将覆盖名称。
  • name: str。该层的名称(可选)。