简单循环网络
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
。该层的名称(可选)。