gru_unit

    Gated Recurrent Unit(GRU)循环神经网络计算单元。该OP用于完成单个时间步内GRU的计算,支持以下两种计算方式:

    如果origin_mode为True,则使用的运算公式来自论文 Learning Phrase Representations using RNN Encoder Decoder for Statistical Machine Translation

    如果origin_mode为False,则使用的运算公式来自论文 。

    公式如下:

    gru_unit - 图2

    其中,

    为当前时间步的输入,这个输入并非 ,该OP不包含

    gru_unit - 图4

    的计算,注意 要在该OP前使用大小为GRU隐单元数目的3倍的全连接层并将其输出作为 input

    为前一时间步的隐状态 ;

    gru_unit - 图6

    gru_unit - 图8

    分别代表了GRU单元中update gate(更新门)、reset gate(重置门)、candidate hidden(候选隐状态)和隐状态输出;

    gru_unit - 图10

    为逐个元素相乘;

    gru_unit - 图12

    gru_unit - 图14

    形状的Tensor存放,三个偏置拼接为一个

    形状的Tensor存放,其中

    gru_unit - 图16

    为隐单元的数目;权重Tensor存放布局为:

    gru_unit - 图18

    拼接为

    形状位于前半部分,

    gru_unit - 图20

    形状位于后半部分。

    参数:

    • input (Variable) – 表示经线性变换后当前时间步的输入,是形状为

      gru_unit - 图22

      的二维Tensor,其中

      为batch_size,

      gru_unit - 图24

      为隐单元的数目。数据类型为float32或float64。

    • hidden (Variable) – 表示上一时间步产生的隐状态,是形状为

      的二维Tensor,其中

      gru_unit - 图26

      为隐单元的数目。数据类型与 input 相同。

    • param_attr (ParamAttr,可选) – 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 ParamAttr

    • bias_attr (ParamAttr,可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 。

    • gate_activation (string) – 公式中

      gru_unit - 图29

      激活函数的类型。支持identity、sigmoid、tanh、relu四种激活函数类型,默认为sigmoid。

    • origin_mode (bool) – 指明要使用的GRU计算方式,两种计算方式具体差异见公式描述,默认值为False。

    返回:Variable的三元组,包含三个与 input 相同数据类型的Tensor,分别表示下一时间步的隐状态(

    )、重置的前一时间步的隐状态(

    gru_unit - 图31

    )和

    的拼接,形状分别为

    gru_unit - 图33

    gru_unit - 图35

    。通常只有下一时间步的隐状态(

    )作为GRU的输出和隐状态使用,其他内容只是中间计算结果。

    返回类型: tuple