tf.contrib.rnn下的函数介绍

1、tf.contrib.rnn.LSTMCell():LSTM的一个单元细胞定义

2、tf.contrib.rnn.GRUCell():GRU的一个单元细胞定义

3、tf.contrib.rnn.MultiRNNCell():将多个单元细胞串联为一个RNN网络

4、tf.contrib.nn.DropoutWrapper():RNN中的Dropout层,与CNN中Dropout类似


1、tf.contrib.rnn.LSTMCell():LSTM的一个单元细胞定义

    LSTM由三个门组成,分别是:遗忘门,输入门、输出门

    

函数初始化:
__init__(
    num_units,
    use_peepholes=False,
    cell_clip=None,
    initializer=None,
    num_proj=None,
    proj_clip=None,
    num_unit_shards=None,
    num_proj_shards=None,
    forget_bias=1.0,
    state_is_tuple=True,
    activation=None,
    reuse=None,
    name=None,
    dtype=None,
    **kwargs
)
参数介绍:
  num_units: int型, LSTM网络单元的个数,即隐藏层的节点数。
  use_peepholes: bool型, 默认False,True表示启用Peephole连接。
  cell_clip: (可选) 一个浮点值, 是否在输出前对cell状态按照给定值进行截断处理。
  initializer: (可选) 权重和映射矩阵的初始化器。
  num_proj: (可选) int型, 映射矩阵的输出维度,如果为None,则不会进行映射。
  proj_clip: (可选) 一个浮点值. 如果num_proj > 0 而且proj_clip不为空,那么映射后的值被逐元素裁剪到[-proj_clip, proj_clip]的分为内.
  num_unit_shards: Deprecated.
  num_proj_shards: Deprecated.
  forget_bias: 在训练开始时,为了减小遗忘尺度,遗忘门的偏置默认初始化为1.0,当从已经训练好的CudnnLSTM的checkpoints文件恢复时,
这个值必须手动设置为0. 
  state_is_tuple: 如果为True, 接受的和返回的状态是一个(c, h)的二元组,其中c为细胞当前状态,h为当前时间段的输出的同时,
也是下一时间段的输入的一部分。如果为False, 那么它们会concatenated到一起. 为False的情况将来会废弃.
  activation: 内部状态的激活函数,默认为tanh. 
  reuse: (可选)bool型,是否重用已经存在scope中的变量. 如果为False, 而且已经存在的scope中已经有同一个变量,则会出错.
  name: String型, 网络层的名字,拥有相同名字的网络层将共享权重,但是为了避免出错,这种情况需要设置reuse=True.
  dtype: 网络层的默认类型,默认为None,意味着使用第一次输入的类型.
  **kwargs: Dict型, 一般网络层属性的关键字命名属性.

2、tf.contrib.rnn.GRUCell():GRU的一个单元细胞定义

    GRU是LSTM的一个变体,当然LSTM还有很多变体,相对于LSTM而言,GRU只有两个门了,分别为更新门重置门,即图中的ZtRt。更新门用于控制前一时刻的状态信息被带入到当前状态中的程度,更新门的值越大说明前一时刻的状态信息带入越多。重置门用于控制忽略前一时刻的状态信息的程度,重置门的值越小说明忽略得越多。

              

初始化函数:
__init__(
    num_units,
    activation=None,
    reuse=None,
    kernel_initializer=None,
    bias_initializer=None,
    name=None,
    dtype=None,
    **kwargs
)
函数参数:
  num_units: int型, 网络单元的个数,即隐藏层的节点数.
  activation: 激活函数,默认为tanh.
  reuse: (可选)bool型,是否重用已经存在scope中的变量. 如果为False, 而且已经存在的scope中已经有同一个变量,则会出错.
  kernel_initializer: (可选) 权重和映射矩阵的初始化器.
  bias_initializer: (可选) 偏置的初始化器.
  name: String型, 网络层的名字,拥有相同名字的网络层将共享权重,但是为了避免出错,这种情况需要设置reuse=True.
  dtype:网络层的默认类型,默认为None,意味着使用第一次输入的类型.
  **kwargs: Dict型, 一般网络层属性的关键字命名属性.

3、tf.contrib.rnn.MultiRNNCell():将多个单元细胞堆叠后得到一个多层的单元细胞

初始化函数:
__init__(
    cells,
    state_is_tuple=True
)
函数参数:
  cells: RNNCells的列表,RNN网络将会按照这个顺序搭建.
  state_is_tuple: 如果为True, 接受和返回的状态将为一个n元组,其中n = len(cells). 
如果为False,这n个元素将会被concat到一起组成states.为False的情况将会被废弃.

4、tf.contrib.nn.DropoutWrapper():RNN中的Dropout层,与CNN中Dropout类似

初始化函数:
__init__(
    cell,
    input_keep_prob=1.0,
    output_keep_prob=1.0,
    state_keep_prob=1.0,
    variational_recurrent=False,
    input_size=None,
    dtype=None,
    seed=None,
    dropout_state_filter_visitor=None
)
函数参数:
  cell: 一个RNNCell, a projection to output_size is added to it.
  input_keep_prob: tensor单元或者位于0~1之间的浮点数,表示输入的保留概率。如果为常数而且为1,那么输入的Dropout将不会被添加。
  output_keep_prob: tensor单元或者位于0~1之间的浮点数,表示输出的保留概率,如果为常数而且为1,那么输出的Dropout将不会被添加。
  state_keep_prob: tensor单元或者位于0~1之间的浮点数,表示输出的保留概率,如果为常数而且为1,那么输出的Dropout将不会被添加。
State dropout是在细胞单元的外部状态被执行. 注意,对于状态模块而言,当state_keep_prob为(0,1)时,dropout被执行,
但是状态模块依然受到dropout_state_filter_visitor参数的影响.(例如. 默认情况下,dropout模型情况下dropout模块不会应用到LSTMStateTuple的 c 模块.
  variational_recurrent: bool型,如果为True, 那么每运行一次调用,相同的dropout模式将应用到所有的时间步骤。如果设置这个参数,那么必须要提供input_size.
  input_size: (可选) (possibly nested tuple of) TensorShape对象,包含输入tensor的深度.如果variational_recurrent = True为True
而且input_keep_prob < 1时需要设置这个参数.
  dtype: (可选)输入、状态和输出tensor的类型,当variational_recurrent = True时,需要设置这个参数.
  seed: (可选) integer型,随机数种子.
  dropout_state_filter_visitor: (可选),一个函数默认为None. 该函数获取状态的任何层次级别并返回标量或深度= 1的Python布尔结构的函数,
该结构描述应该删除状态中的哪些术语。 此外,如果函数返回True,则会在此子级中应用dropout。 如果函数返回False,则不会在整个子级中应用dropout。 
默认情况为:对除LSTMCellState对象的内存状态(c)之外的所有术语执行dropout,并且不要尝试将dropout应用于TensorArray对象.

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值