class BasicLSTMCell(RNNCell):
基本的LSTM循环网络单元
实现基于http://arxiv.org/abs/1409.2329
我们添加 forget_bias (默认值为1)到遗忘门的偏置,为了减少在开始训练时遗忘的规模。
它不允许单元有一个剪裁,映射层,不允许有peep-hole 连接:这是基准。
对于更高级的模型,请使用 full LSTMCell
def __init__(self, num_units, forget_bias=1.0, input_size=None):
初始化基本LSTM 单元
参数:
- num_units: int, 在LSTM cell中unit 的数目
- forget_bias: float, 添加到遗忘门中的偏置
- input_size: int, 输入到LSTM cell 中输入的维度。默认等于 num_units
class DropoutWrapper(RNNCell):
在给定的cell 上的输入和输出添加 dropout 操作。
def __init__(self, cell, input_keep_prob=1.0, output_keep_prob=1.0, seed=None)
创建一个输入或(且)输出上有dropout 操作的cell
state 上不应用dropout
参数:
- cell: 一个RNNCell,添加一个到output_size 的映射
- input_keep_prob: unit Tensor 或0到1之间的一个float 值,保留输入的概率;如果是float 类型的1,表示输入上不添加dropout 操作。
- output_keep_prob: unit Tensor 或0到1之间的一个float值,保留输出的概率;如果是float类型的1,表示输出上不添加dropout 操作。
- seed: 可选 integer,随机种子
def __call__(self, inputs, state, scope=None):
class MultiRNNCell(RNNCell):
RNN cell 有多个简单的cell 循序组成。(按照序列组成)
def __init__(self, cells):
创建一个由大量的RNNCell 循序组成的一个RNN cell
参数:
- cells: RNNCell 的列表,将按照这个顺序组成
cells[i+1].input_size==cells[i].output_size
def __call__(self, inputs, state, scope=None):
def get_variable(self, name, shape=None, dtype=dtypes.float32, initializer=None, regularizer=None, reuse=None, trainable=True, collection=None, caching_device=None):
用这些参数得到一个已存在的变量或创建一个新的变量。
如果给定名字的变量已存在,则返回一个已存在的变量。否则,创建一个新的变量。
设置'reuse' 为 ‘True’,当你仅仅想要重用已经存在的变量。
设置'reuse'为‘False’,当你仅仅想要创建一个新的变量。
如果'reuse' 为 'None'(默认),会返回一个新的变量和一个已经存在的变量。
如果初始化器是'None'(默认),使用构造器中传入的初始化器。如果构造函数中的初始化器也是'None‘,我使用一个新的'UniformUnitScalingInitializer’。如果初始化器是一个Tensor,我们使用它作为一个值,并从初始化器中获得shape.
参数:
- name: 新的或已存在的变量的名字。
- shape: 新的或已存在的变量的shape