dynamic_gru

    • dynamic_gru(input, size, param_attr=None, bias_attr=None, is_reverse=False, gate_activation='sigmoid', candidate_activation='tanh', h_0=None, origin_mode=False)[源代码]

    注意:该OP的输入只能是LoDTensor,如果您需要处理的输入是Tensor类型,请使用StaticRNN(fluid.layers. )。

    该OP用于在完整序列上逐个时间步的进行单层Gated Recurrent Unit(GRU)的计算,单个时间步内GRU的计算支持以下两种计算方式:

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

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

    公式如下:

    dynamic_gru - 图3 为当前时间步的输入,这个输入并非 ,该OP不包含 的计算, 注意 要在该OP前使用大小为 size 的3倍的全连接层并将其输出作为 ; dynamic_gru - 图5 为前一时间步的隐状态 hidden; 、 dynamic_gru - 图7 、 和 dynamic_gru - 图9 分别代表了GRU单元中update gate(更新门)、reset gate(重置门)、candidate hidden(候选隐状态)和隐状态输出; 为逐个元素相乘; dynamic_gru - 图11 、 和 dynamic_gru - 图13 分别代表更新门、重置门和候选隐状态在计算时使用的权重矩阵和偏置。在实现上,三个权重矩阵合并为一个 形状的Tensor存放,三个偏置拼接为一个 dynamic_gru - 图15 形状的Tensor存放,其中 为隐单元的数目;权重Tensor存放布局为: dynamic_gru - 图17 和 拼接为 dynamic_gru - 图19 形状位于前半部分, 以 dynamic_gru - 图21 形状位于后半部分。

    • 参数:

    返回: 形状为

    、LoD level为1的LoDTensor,其中 dynamic_gru - 图31 表示mini-batch中所有序列长度之和, 为隐状态特征维度的大小。表示经过GRU变换的输出特征序列,和 input 具有相同的LoD(序列长度)和数据类型。

    代码示例