lstm_unit

    Long-Short Term Memory(LSTM)循环神经网络计算单元。该OP用于完成单个时间步内LSTM的计算,基于论文 中的描述实现,

    并在forget gate(遗忘门)中增加了 forget_bias 来控制遗忘力度,公式如下:

    其中,

    lstm_unit - 图1

    对应 x_t, 表示当前时间步的输入;

    lstm_unit - 图2

    对应 hidden_t_prevcell_t_prev,表示上一时间步的hidden和cell输出;

    分别为input gate(输入门)、forget gate(遗忘门)、cell、output gate(输出门)和hidden的计算。

    参数:

    • x_t (Variable) - 表示当前时间步的输入的Tensor,形状为

      ,其中

      lstm_unit - 图3

      为batch_size, MM 为输入的特征维度大小。数据类型为float32或float64。

    • hidden_t_prev (Variable) - 表示前一时间步hidden输出的Tensor,形状为 [N,D][N,D],其中 NN 为batch_size, DD 为LSTM中隐单元的数目。数据类型与 x_t 相同。

    • cell_t_prev (Variable) - 表示前一时间步cell输出的Tensor,和 hidden_t_prev 具有相同形状和数据类型。

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

    • name (str,可选) – 具体用法请参见 ,一般无需设置,默认值为None。

    返回:Variable的二元组,包含了两个形状和数据类型均与 相同的Tensor,分别表示hiddel和cell输出,即公式中的 htht 和 ctct 。

    返回类型:tuple

    抛出异常:

    • ValueErrorhidden_t_prev 的阶不为2

    • ValueErrorcell_t_prev 的阶不为2

    • x_thidden_t_prevcell_t_prev 的第一维大小必须相同