gru_unit
API属性:声明式编程(静态图)专用API
( input, hidden, size, param_attr=None, bias_attr=None, activation=’tanh’, gate_activation=’sigmoid’, origin_mode=False ) [源代码]
Gated Recurrent Unit(GRU)循环神经网络计算单元。该OP用于完成单个时间步内GRU的计算,支持以下两种计算方式:
如果origin_mode为True,则使用的运算公式来自论文 。
如果origin_mode为False,则使用的运算公式来自论文 Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling 。
公式如下:
其中,
为当前时间步的输入,这个输入并非 input
,该OP不包含
的计算,注意 要在该OP前使用大小为GRU隐单元数目的3倍的全连接层并将其输出作为 ;
为前一时间步的隐状态 hidden
;
、
、
和
分别代表了GRU单元中update gate(更新门)、reset gate(重置门)、candidate hidden(候选隐状态)和隐状态输出;
为逐个元素相乘;
、
和
分别代表更新门、重置门和候选隐状态在计算时使用的权重矩阵和偏置。在实现上,三个权重矩阵合并为一个
形状的Tensor存放,三个偏置拼接为一个
形状的Tensor存放,其中
为隐单元的数目;权重Tensor存放布局为:
和
拼接为
形状位于前半部分,
以
形状位于后半部分。
Variable的三元组,包含三个与 相同数据类型的Tensor,分别表示下一时间步的隐状态(
)、重置的前一时间步的隐状态(
)和
的拼接,形状分别为
、
和
。通常只有下一时间步的隐状态(
)作为GRU的输出和隐状态使用,其他内容只是中间计算结果。
tuple